How to find IdMappedPortTCP Delphi 7 in Delphi 2010 - delphi

I need help. I want to ask about the location of IdMappedPortTCP Delphi 7 in Delphi 2010, because I cannot find it. In delphi 7, I can find it in indy server > tcp port, but how to find it in Delphi 2010?. Thanks for your suggestions.

Are all packages registered and enabled? Even if a component package is not installed, you still can create instances if you add its source path(s) to the project search path. For Indy, you need <Indy>Lib\Core, Lib\Protocols and Lib\System. (This also makes it easier to switch Indy versions)

Delphi 7 shipped with Indy 8 (or maybe an early Indy 9, I forget which). Delphi 2010 ships with Indy 10. A lot of architectural and hierarchical changes between those versions. On the Component/Tool Pallette, TIdMappedPortTCP is located under "Indy Servers". If you do not have that available then you likely do not have the Indy design-time package loaded in the IDE.

Related

Is delphi XE7 compatible with windows 10?

Anybody know if delphi xe7 compatible with windows 10?
Embarcadero says that XE8 is compatible. But tells nothing about XE7.
Yes, you can install XE7 on Windows 10, and the executables that it produces are compatible with Windows 10.
Embarcadero have been producing a lot of marketing recently that implies that you need XE8 to do Windows 10 development. Truth be told, you can use any version of Delphi beyond Delphi 1. Of course the newer versions make life easier, and clearly you need XE2 or later to target 64 bit executables.
So far as I can see, the only Windows 10 specific feature that is offered with XE8 is a Windows 10 style. That was what I took from a conversation with Marco CantĂș on the subject. I guess that would be useful for FMX targets. If you are targeting classic VCL apps, and use the standard system theme, then this is of no interest. There's no point at all in faking the system style when you can let the system give you the true style. My old Delphi 6 applications, built with Mike Lischke's theme manager code, look and feel on Windows 10 identical to an application built with XE8.
Although Embarcadero says that XE8 is compatible with Windows 10, I'm unable to install or load our existing bpl projects using XE8 with Windows 10.
I moved to XE8 because our projects wouldn't build with Windows 10 using XE4.
You can install and run Delphi XE7 on a Windows 10 machine. And of course you can compile your projects on Windows 10.
But there were no enhancements made in the VCL or FireMonkey towards the new operating system. There is no official support for Windows 10. Your applications may not look and feel 100% like other applications do on Windows 10. But they can still be run as long as long as they don't use any old API that is no longer supported on Windows 10.
You can install and run Delphi XE7 on a Windows 10 machine.

How to obtain Indy version of RadStudio XE5 without installing XE5

I would like to know the version of Indy10 (e.g. Indy 10.5.8.3) of the RadStudio XE5.
The help is included in the H2 compiled help, but not on the docwiki. I tried to find on the internet, but I am not successful.
I am currently using XE4. I would like to know the change in the function signatures of the Indy functions between XE4 and XE5, if any.
Are there any way to know the version without installing XE5.
I would like to know the version of Indy10 (e.g. Indy 10.5.8.3) of the RadStudio XE5.
XE5 shipped with Indy 10.6.0.5040.
The help is included in the H2 compiled help, but not on the docwiki. I tried to find on the internet, but I am not successful.
Indy is not an Embarcadero product, so it is not included in Embarcadero's DocWiki. Indy documentation is available for download from Indy's website (although, it is a bit outdated, but there is effort under way to slowly bring it up-to-date in the future).
I am currently using XE4. I would like to know the change in the function signatures of the Indy functions between XE4 and XE5, if any.
I would suggest you download the XE5 release of Indy and do a diff against your XE4 version. You can download specific releases of Indy from Indy's SVN server directly, or the latest SVN revision from nightly SVN snapshots on Indy's Fulgan mirror. Instructions for accessing both are on Indy's website.
I can tell you that Indy 10.6.0 had some big interface changes over 10.5.x (I blogged about some of them), but XE4 also shipped with Indy 10.6 (10.6.0.4975, to be exact). I could not tell you offhand what the changes between the XE4 and XE5 releases were, so you will just have to run your own diffs.
Are there any way to know the version without installing XE5.
Embarcadero releases of Indy from RAD Studio 2010 onwards (minus XE3, however) have been tagged in Indy's SVN. You can browse the SVN repository directly if you want to know which source code is in each release.

How do I determine the Delphi version which created a Delphi project

I am trying to automatically figure out which Delphi version (of Delphi 5 to XE2 installed on my computer) to use to open a given project without upgrading that project by mistake.
Up to Delphi 7 there is a .dof file in .ini format for each project.
Delphi 5 does not have any entry which might help, but starting from Delphi 6 there is a [FileVersion] section which contains the following values:
Delphi 5: N/A
Delphi 6: 6.0
Delphi 7: 7.0
So I guess that settles that, since older Delphi versions do not concern me.
For Delphi 2005 and 2006 there is a .bdsproj file in XML format containing a version entry:
\BorlandProject\PersonalityInfo\Option\Option
In Delphi 2005 it looks like this:
<Option Name="Version" Type="String">1.0</Option>
In Delphi 2006 like this:
<Option Name="Version">1.0</Option>
So I could look whether the attribute "Type" exists and depending on that decide on Delphi 2005 or 2006.
Could somebody please have a look at his Delphi 2005 and 2006 projects and verify this difference? (Or do you maybe have got a better idea?)
edit: I just tried to verify this and found, that Delphi 2005 does not always add the Type-Attribute. So now I am stuck.
edit: Maybe the GUID stored there is unique to the Delphi version?
Delphi 2005: {87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
Delphi 2006: {CFE1BEE6-6FDE-4241-8CA5-D38D14EAA768}
Somehow I doubt it, I am afraid that the GUID may represent different SKUs (Professional / Architect etc.). But maybe you could verify this?
Starting with Delphi 2007 there is a .dproj file in a different XML format. The Delphi 2007 format does not contain any version entry I could find, but from Delphi 2009 on there seems to be the following entry:
\project\PropertyGroup\ProjectVersion
These are the values I found in my .dproj files:
Delphi 2007: N/A
Delphi 2009: 12.0
Delphi 2010: 12.0
Delphi XE: 12.3
Delphi XE2: 13.4
If these are correct, I could reliably determine Delphi 2007, XE and XE2. But how do I distinguish between Delphi 2009 and 2010?
Also, these numbers look odd to me. Does anybody know whether there are any differences between the various updates of Delphi, e.g. did the original Delphi XE2 release maybe start with 13.0 and with each update increment the number after the dot? But if that's the case, how did Delphi XE get 12.3?
(There is a similar question How can I tell what version of Delphi was used to create a project but the single answer there is quite limited.)
Just in case anybody else needs this: I have just added a page to the Delphi Wiki which summarizes all answers and adds information for newer Delphi versions (currently up to Delphi 10.4.1).
I have now compared the .bdsproj files of Delphi 2005 and 2006 and there is no difference. Also, there is no difference between the .dproj files created by Delphi 2009 and 2010.
So the answer is:
if a .dproj file exists -> read \project\PropertyGroup\ProjectVersion
empty -> Delphi 2007
12.0 -> Delphi 2009 or 2010
12.2 or 12.3 -> Delphi XE1 (according to Uwe Schuster)
13.4 -> Delphi XE2
if a .bdsproj file exists -> Delphi 2005 or 2006
if a .dof file exists -> read [FileVersion]\version
empty -> Delphi 5 (or possibly older)
6.0 -> Delphi 6
7.0 -> Delphi 7
Unfortunately this does not allow me to write a program that automatically starts the correct Delphi version for a given project.
Maybe I will let the program ask the user if there are two possibilities and store his answer in a .ini file so the next time the program knows which Delphi version to start.
btw: The reason I was looking into this is that I have several times accidentally opened Delphi 2007 projects with a later Delphi version which upgraded it and I had to reverse these changes by hand. This has become so annoying that I wanted to prevent it by registering my own program as handler for .dpr files.
The version numbers in the *PROJ files are not bound to releases or updates and not all versions hit the streets.
Delphi XE RTM used version 12.2
Delphi XE Update #1 uses version 12.3
Delphi XE2 (RTM till Update #4) uses 13.4
Just installed XE3 (RTM).
14.3 XE3 (C++ & Delphi)
Today I find this topic googlin about Delphi edition (Standard, Professional, Enterprise).
Anyway I checked some .dof files spread in mine machine and there is facts related to ancient delphi versions:
if a .dof file exists -> read [Directories]/Packages
Delphi 3
[Directories]
OutputDir=
UnitOutputDir=
SearchPath=
Packages=VCLX30;VCL30;INETDB30;INET30;
Delphi 5
[Directories]
OutputDir=.
UnitOutputDir=.
PackageDLLOutputDir=.
PackageDCPOutputDir=.
SearchPath=
Packages=Vcl50;Inet50;Inetdb50;Vclx50;Indy50;
Additional info can be finded near end of dof file:
D3:
[Excluded Packages]
C:\Program Files\Borland\Delphi 3\Bin\DCLDSS30.dpl=Delphi Decision Cube Components
C:\PROGRAM FILES\BORLAND\DELPHI 3\BIN\DCLTEE30.DPL=Delphi TeeChart Components
D5:
[Excluded Packages]
$(DELPHI)\Bin\CorIde50.bpl=Borland Core IDE Package
$(DELPHI)\Bin\direct50.bpl=Borland Direct IDE Package

Migrating old Delphi 7 code to Delphi XE - QForms.dcu not found

I just bought and installed Delphi XE and was hoping to compile my old D7 project there.
However, I hava a source file that "uses QForms" and that generates a "file not found: qforms.dcu" and I can find no relevant reference to what to do about that file googling around...
Any idea how to solve it?
Rgds
PM
QForms is from CLX, the Qt based cross-platform library that was introduced with Delphi 6/Kylix. So far as I know, CLX is no longer shipped with Delphi.
You need to do one of the following:
Stick with Delphi 7.
Port the code to VCL. This will tie you to the Windows platform.
Get Delphi XE2 and use FireMonkey since clearly at some point in time this code was intended to be cross-platform.

Does Delphi XE2 FireMonkey support Indy for cross-platform apps?

Looking at the new Delphi XE2 with Firemonkey. Considering that it compiles for Windows, Mac OSX and iOS, VCL components are useless in a FireMonkey application.
My question is: Is there/will there be an Indy Firemonkey Edition? Cause I seriously need the IdHTTP.Post();. If not, is there a way to do this in FireMonkey?
I have been googling for quite awhile now, not finding anything. :S
VCL means Visual Component Library. There's nothing about Indy that is "visual" (meaning "seen at runtime"), meaning that "VCL components are useless in a FireMonkey application" has no relevance to Indy.
You can create a new FireMonkey HD application in Delphi XE2, target OS X, and the Indy component pages are still available in the IDE, meaning that they are compatible with supported FireMonkey cross-platform targets. They're also available for FireMonkey HD Windows targets (32 and 64 bit).
Indy ships with the IDE (and has since D6) so there is nothing extra to buy if you already have XE2 installed. Also, Indy is open-source, so you can upgrade an Indy installation using source code from Indy's public access SVN server or mirror.
Regarding FireMonkey, Indy does work in FireMonkey. Indy uses whatever the native socket API is on a given platform (WinSock on Windows, Posix on Mac, libc on Kylix, etc).
The only known gotcha with Indy under FireMonkey at the moment is the TIdAntiFreeze component is not available at design-time. The IDE cannot resolve it correctly due to the non-standard way it is packaged (to be adressed in Indy 11). You can instantiate it programmably in code at run-time, though.
I made a client server example using tcp indy http://www.freelancecode.net/community/viewtopic.php?f=35&t=246
The Components Not Used in iOS Apps DocWiki page for Delphi XE2 lists most of the Indy classes:
The following list is the set of components (along with the used
units) that might be available in the Tool Palette for iOS
applications, but are not supported for iOS applications.

Resources