I'm quite new to Delphi and I'm helping a team setting up a build server which are using Rad Studio 2005.
They have just bought DevExpress VCL and wants to use these. I would rather not have the component installed on the build server, but instead having them as a part of the source code and making sure that the project is using that version.
How is that done in Delphi?
We compiled all of our 3rd-party stuff into a BPL, then put that .bpl and corresponding .dcp and .dpr/.bdsproje into source control, so it gets delivered to the build server. Works well. In retrospect, it should have been a series of BPLs, divided by vendor, so that we could upgrade individual components/libraries without having to run regression tests on everything else.
Related
I have to update a Delphi XE installation for a project to a newer version of Delphi but I don't have much experience with Delphi, the problem is there are plenty of old packages and components in there.
When I install a new version did I have to install all components again (if it possible to install it in this new version) or is it something like an update to my old installation and all installed stuff is now in the new version also?
Updating a Delphi XE application to a newer Delphi is usually quite easy. The only serious issue could be third party components which you must install in the newer Delphi version. Check with each component vendor that a version exists for your target Delphi version.
I always strongly recommand to NOT use any third party component that has no source available. Also don't buy any third party component using a DLL, OCX or other external binary object.
When you buy a third party component, always buy the source code with it. Then throw away any pre-build package or dcu and recompile everything before any serious use. That way you'll be sure to have all required source code and work with that source code.
Once you have the source code, it becomes much easier to port to the next Delphi version. Usually there is just nothing to change (There was only one notable exception in the past between Delphi 2007 and Delphi 2010 when Unicode string were introduced).
When there is something to change, it is usually only the name of a "used" unit. Somtimes Embarcadero move one class from a unit to another one. Sometimes, you have to change a $IFDEF which specify a Delphi version. Look at {$IFDEF VER180} and similar to adapt to you current version (See the online help for such symbol).
And if you still have issues, then ask here...
Upgrading to newer version of Delphi might not be a trivial task.
First problem you will run into are Thid Party Components.
If you don't own the souce code for them it means that they come with precompiled packages and these packages unfortunately arent compatible between different Delphi versions.
If you do have source code for them you might be able to recompile them on newer Delphi versions but this might require you to do some code changes.
So I strongly recomend you first check to see if there are updated versions of these components available that support the Delphi version to which you are planning to upgrade.
For instance if your application relies on BDE (Borland Database Engine) that shipped with older versions of Delphi you Will be forced to do Quite some changes to properly set up the FireDac database framework that ships with newer delphi versions.
We are putting our existing Embarcadero Borland C++ Builder 6 projects into the new free Microsoft source control called "Visual Studio Team Services" (aka online version of TFS or Team Foundation Server formerly called Team Foundation Service).
http://www.visualstudio.com/products/what-is-visual-studio-online-vs
How can I put my code from my BCB 6 project to use it with this system.
Of course I'd prefer to have IDE integration, but as long as I have some kind of GUI I'm fine with doing source code tasks outside of the BCB IDE.
Are there any BCB files that are binary and therefore might be an issue with comparing changes?
Any ideas are greatly appreciated.
C++Builder does not have any native TFS support (not even in the latest version), let alone any VSOnline support. At least with TFS, there are third-party plugins to let C++Builder access TFS:
SourceConneXion
TFS.us
For TFS, you can also use the standard TFS client GUI. For Visual Studio Team Services, who knows.
Several files are binary, including RES and TDS, but you usually don't need to do diffs on those. You should, however, make sure to set your DFM files to Text mode, as they are set to Binary by default. DFMs are always binary in the final executable's resources, but the DFM source files can be either text or binary, and you will likely do diffs on DFMs from time to time.
you could use the visual studio shell (aka 'team explorer everywhere') to do checkins etc
and you could also use the power tools (tfpt) to give you explorer integration.
We have a huge app that uses ChartFX 4.0 a lot and we're migrating from Delphi6 to XE4. The programmer mainly responsible so far has basically created a new package for the ChartFX components and has successfully installed it on his machine, and has tested a lot of the code that uses these components. Every thing looked great at this point. Then he tried rebuilding/installing/testing on a couple of other machines - XE4 throws a designtime license not found error when he opens a new project and tries to place a chart object on the form. All machines have a licensed copy of chartFX 4.0 installed.
Any ideas?
You need to locate and transfer the CFX*.lic file (it's the development license for the .OCX file). In Delphi 7, it's CFX32.lic, and it's located in the %WINDIR%\System32 folder.
Is it possible to use custom component derived from default one to be visible only as part of the project? The advantage of this solution is that I need not to distribute source code of component separately from that of application. Also there is no need for other developers to always check if they have installed the latest version. I need not to manage various versions and copy them somewhere to share my changes with other developers in team (whether it be network disk or SVN server). They get new version with every SVN update from server.
If i used delphi there would be solution - interposer class but this is not applicable to me. MS Visual Studio has possibility to use component only as part of Solution (analogy to MS VS Solution is ProjectGroup in C++ Builder).
What you are asking for is only possible if the component is created dynamically at run-time only. If the component needs to be accessible at design-time, then it must be installed into the IDE before the project can then use it.
I'm starting a new project, and this must be done in Delphi, so we get Rad Studio XE (not XE2). I have never wrote code in Delphi, I'm a C#.NET-MSSQL experienced programmer, that's why this project is exciting.
For DB, we cannot afford MSSQL, but the Express Edition is not leaved. So, we choose PostgreSQL, we have very excellent references about it. And I found it quite interesting.
But here comes the problem, the provider for the connection. I began research for this problem, and I found many options, there are some products with commercial license (AnyDac, and others). But we can't afford them. Then I found Zeoslib. Maybe it is what we're looking for, however, I can't find it and install it for XE. In the sourceforge portal, the latest version (it's an alpha), only works until Delphi14 (XE is Delphi15).
I've read too, that it requires to be compiled for the install (I need a step by step for dummies manual :D). But, this makes me doubt. How it will be deployed on the client. Is it a dll?
The project is a desktop application which connects to a server (DBMS), using CRUD statements, maybe some sprocs, ans that's all. Of course there will be more than 1 client. Just reading, updating deleting, etc..., but not at the same time, so traffic, concurrency is not a big problem.
In NET, I use the sqlclient namespace create connections, commands and that's all. I've found in Delphi the TSQL, TADO, and other objects like that. So it will be not hard at all.
So we're planning to use MSSQL Express instead.
But before that:
Is there another option to connect my RAD XE app with Postgres?
If someone knows how to enable zeoslib, can u tell me?
How is zeoslib distributed with my app in many PC's?
or
Is MSSQL Express a good choice for this project? (It's not big after all)
After reading, MySQL uses zeoslib too, and of course, the commercial providers. That's why we discarded it, among other reasons.
A component library, like ZeosLib or AnyDAC, requires to compile it into binary packages (BPL) to install into RAD Studio IDE. A libray itself may be either statically linked into EXE (nothing from library to deploy), or EXE may be built with run-time packages (you need to deploy library run-time packages). Additionally you will need to deploy libpq.dll - PostgreSQL client software.
If you know SQL Server, then use SQL Server Express edition. And probably stay with dbGo (ADO) components. PostgreSQL is quite different from SQL Server in many aspects, so you will need to spend the time to learn PostgreSQL. Which will be far more expensive than commercial libraries.
Zeos trunk works fine with Delphi XE. Don't let the "trunk" bit scare you. The mutation count is not that high.