How to create components in Delphi XE4 usable also in BCB XE4

I just got my upgrade from BDS2006 to RAD Studio XE4 and now I have to
embark on making adjustments to the component set we have used in our
applications. We have both Delphi and BCB applications and they use
common components (some of them) developed all in Delphi.
The most difficult one may be the Safenet Sentinel SuperPro dongle
handler which I packaged into a Delphi component long ago and which we
have used both from Delphi and C++ Builder (BDS2006).

What needs to be done in order to use these components seamlessly in
XE4 for both C++ and Delphi?
I also want to be able to compile for 64 bit, which was not possible
before.

--

Bo Berglund
Developer in Sweden
0
Bo
7/28/2013 12:20:15 PM
embarcadero.delphi.ide 3925 articles. 0 followers. Follow

15 Replies
1574 Views

Similar Articles

[PageSpeed] 2
Get it on Google Play
Get it on Apple App Store

"Bo Berglund" <bo.berglund@nospam.com> wrote in message 
news:600117@forums.embarcadero.com...
>I just got my upgrade from BDS2006 to RAD Studio XE4 and now I have to
> embark on making adjustments to the component set we have used in our
> applications. We have both Delphi and BCB applications and they use
> common components (some of them) developed all in Delphi.
> The most difficult one may be the Safenet Sentinel SuperPro dongle
> handler which I packaged into a Delphi component long ago and which we
> have used both from Delphi and C++ Builder (BDS2006).
>
> What needs to be done in order to use these components seamlessly in
> XE4 for both C++ and Delphi?
> I also want to be able to compile for 64 bit, which was not possible
> before.


If you have any components that do string manipulation where characters are 
assumed to be bytes, you may have some wotk there. Likewise with any code 
dealing with external processes, drivers, devices. Do not be tempted to 
"ansify" all your code. For existing classes or methods that make the 1 byte 
assumption, those can be fixed (and still be backwards compatible), and for 
external needs, handle the conversion at that boundary only.

You can find many threads in these groups and various articles on the net 
dealing with these issues.

For 64 bit, any DLLs you need to load will also need to be 64 bit.

Otherwise, all changes should be strictly optional as you learn about new 
features that are available such as generics.

-- 
Wayne Niddery (TeamB)
"You know what they call alternative medicine that has been proven to work? 
Medicine." - Tim Minchin
0
Wayne
7/28/2013 3:36:29 PM
Bo wrote:

> What needs to be done in order to use these components seamlessly
> in XE4 for both C++ and Delphi?

The same rules apply as in earlier versions.  Create a new runtime package 
in Delphi (and an accompanying designtime package if needed), go into its 
Project Options and set it to generate all C++ output files, and then compile 
and install normally.  You generally need to make sure both C++ and Delphi 
personalities are loaded in the IDE when you do the install.

> I also want to be able to compile for 64 bit, which was not possible
> before.

That is simply a matter of adding the Win64 Platform to the Project and then 
recompile.

--
Remy Lebeau (TeamB)
0
Remy
7/29/2013 1:08:26 AM
On Sun, 28 Jul 2013 18:08:26 -0700, Remy Lebeau (TeamB)
<no.spam@no.spam.com> wrote:

>Bo wrote:
>
>> What needs to be done in order to use these components seamlessly
>> in XE4 for both C++ and Delphi?
>
>The same rules apply as in earlier versions.  Create a new runtime package 
>in Delphi (and an accompanying designtime package if needed), go into its 
>Project Options and set it to generate all C++ output files, and then compile 
>and install normally.

To simplify things in Delphi I have collected most of the custom
components into a master package, which I can use whenever I reinstall
Delphi to get all 15 components installed in one go.
There are some components that are GUI style but most are not of the
GUI type, for example we have three components that handle quick
switching of the application language by loading GUI controls with the
proper text strings from a language file.
These use Windows ini files as storage of the texts and a TIniFile
derivative to read the texts.
They have worked fine so far even with Asian languages so I guess that
the unicode string thing does already work for these (we use UTF8
formatted text files).

Then I have Indy10, AsyncPro, VTK and a few other separate packages
that we have not created ourselves...

By the way:
I have been using Indy 10.5.7 for quite some time now, where do I need
to get in order to have support for XE4?

>You generally need to make sure both C++ and Delphi 
>personalities are loaded in the IDE when you do the install.

In the Start menu XE4 folder I have three shortcuts for starting XE4
named C++Builder XE4, Delphi XE4 and RAD Studio XE4 respectively.
Does this mean I have to always use the RAD studio XE4 when I work
with the projects or just when I install the components?
Or are the personalities loaded in some other way?

This may explain my big problems in getting the components to work in
BDS2006 C++Builder when I tried to set up the environment for a C++
project left by another developer (I am just a Delphi person
myself...). I think I have so far always loaded just the personality I
was about to use....

>> I also want to be able to compile for 64 bit, which was not possible
>> before.
>
>That is simply a matter of adding the Win64 Platform to the Project and then 
>recompile.

I'll try that when I have come as far.

Thanks for your input!
--

Bo Berglund
Developer in Sweden
0
Bo
7/29/2013 6:15:52 AM
Bo wrote:

> By the way:
> I have been using Indy 10.5.7 for quite some time now, where do I
> need to get in order to have support for XE4?

XE4 ships with Indy 10.6.0 pre-installed.  But there have already been changes/fixes 
checked in to Indy's SVN:

http://www.indyproject.org/Sockets/Docs/Indy10Installation.EN.aspx

> In the Start menu XE4 folder I have three shortcuts for starting XE4
> named C++Builder XE4, Delphi XE4 and RAD Studio XE4 respectively.
> Does this mean I have to always use the RAD studio XE4 when I work
> with the projects or just when I install the components?

Just when you install them.

> Or are the personalities loaded in some other way?

No.

--
Remy Lebeau (TeamB)
0
Remy
7/29/2013 7:27:48 AM
On Sun, 28 Jul 2013 08:36:29 -0700, Wayne Niddery
<wniddery@chaffrogers.com> wrote:

>"Bo Berglund" <bo.berglund@nospam.com> wrote in message 
>news:600117@forums.embarcadero.com...
>> What needs to be done in order to use these components seamlessly in
>> XE4 for both C++ and Delphi?
>> I also want to be able to compile for 64 bit, which was not possible
>> before.
>
>
>If you have any components that do string manipulation where characters are 
>assumed to be bytes, you may have some wotk there. Likewise with any code 
>dealing with external processes, drivers, devices. Do not be tempted to 
>"ansify" all your code. For existing classes or methods that make the 1 byte 
>assumption, those can be fixed (and still be backwards compatible), and for 
>external needs, handle the conversion at that boundary only.

Yes, I am aware of this unicode problem and it has been one of the
obstacles for me going forward with new Delphi versions...
So I am dealing not only with the dual use of components in Delphi and
C++ Builder (subject of this thread) but also with the Unicode switch.

Dual use
---------
Seems like I have gotten a pretty good insight into how this is done
and I also now understand why I failed before by using Delphi or C++
personalities when installing components rather than the RAD Studio
personality loading both at the same time.

Unicode conversion
------------------
License code handling
My Sentinel dongle component has a number of methods that work on
strings, which assumes 1-byte characters. Specifically the handling
works with license strings which are 25 byte hex codes and these are
very important to keep as is.
I have looked at the hpp files auto-generated by BDS2006 and these
headers list all of the methods in the class but wherever I used
"string" in Delphi they list "AnsiString" instead. So this was done
before the unicode swhitch. Maybe I can convert the source in Delphi
likewise?

Since the components are the very first items I need to deal with in
XE4 and get right I was wondering if it would not be OK to just
replace "string" in the original code with AnsiString?

But your comment above "Do not be tempted to 'ansify' all your code"
seems to advice otherwise. What is your suggestion on this conversion
then?
Note that my strings are the concatenation of a number of encrypted
and hex converted bytes, words and cardinals which I need to create in
one method and decode in another and they should handle already
existing license codes out with the customers.

StringLists
I have come to use TStringList a lot in order to manipulate strings,
extracting data from field separated formats etc. For instance if a
data item contains some 30 or so values with comma or tab separation I
usually do this to read single values:
{code}
function ExtractValue(data: string, sep: char; item: integer): string;
var
  slData: TStringList;
begin
  slData := TStringList.Create;
  try
    slData.Text := StringReplace(data, sep, #13#10, [rfReplaceAll]);
    if slData.Count <= item then Result := ''
    else Result := slData[item];
  finally
    slData.Free;
  end;
end;
{code}
Presumably this will fail if I use AnsiString rather than string for
the data argument?
Is there a TAnsiStringList class available that works like before and
is StringReplace overloaded so it can deal with AnsiString arguments?

Serial comm
Another big use of strings is as containers of byte sequences in RS232
communications objects, where the packet format of the comm cannot
accept extra #0 bytes inserted into the streams. It is imperative that
these are run as bytes, but the serial components available to me all
treat the data as strings or chars (like AsyncPro for example) and
presumably will go astray with this change.
So again I need to use something else, but in this case there is no
way I can modify the component since it is not written by me and
AsyncPro contains a huge amount of code, so the task would be
overwhelming.

Global "solution"?
Is there no way I can redefine "string" back to "AnsiString" for my
whole applications? Like in C you could do:
#define string AnsiString
in a global header file and it would work through the code?

Notice that there is a difference here of handling older applications
and new ones where the unicode stuff can be handled from scratch.

>You can find many threads in these groups and various articles on the net 
>dealing with these issues.

I have tried googling a bit but not found how to handle the current
issues. Except by changing string to AnsiSting everywhere...
Any suggested resources?

--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 7:58:56 AM
Bo wrote:

> My Sentinel dongle component has a number of methods that work on
> strings, which assumes 1-byte characters. Specifically the handling
> works with license strings which are 25 byte hex codes and these are
> very important to keep as is.

But are they actually textual strings, or binary data?

> I have looked at the hpp files auto-generated by BDS2006 and these
> headers list all of the methods in the class but wherever I used
> "string" in Delphi they list "AnsiString" instead.

In versions earlier than 2009, yes.  But in 2009, "string" was changed to 
UnicodeString instead.

> Since the components are the very first items I need to deal with in
> XE4 and get right I was wondering if it would not be OK to just
> replace "string" in the original code with AnsiString?

If you need a "quick and dirty" hack, then yes.  But in general, it is bad 
to "ansify" your code.  Instead, you should do a code review and update the 
components to use strings the "right" way, or use a different container for 
8bit data (TBytes, TStream, etc).

> Note that my strings are the concatenation of a number of encrypted
> and hex converted bytes, words and cardinals which I need to create
> in one method and decode in another and they should handle already
> existing license codes out with the customers.

AnsiString should not be used for that purpose.  Especially considering that 
in 2009 onwards, AnsiString is codepage-aware, and can actually alter the 
character data if you are not careful with it.

> I have come to use TStringList a lot in order to manipulate strings,
> extracting data from field separated formats etc. For instance if a
> data item contains some 30 or so values with comma or tab separation
> I usually do this to read single values:

Use the DelimitedText property instead:

{code:delphi}
function ExtractValue(data: string, sep: char; item: integer): string;
var
  slData: TStringList;
begin
  Result := '';
  slData := TStringList.Create;
  try
    slData.StrictDelimiter := True; // or False, as needed
    slData.Delimiter := sep;
    slData.DelimitedText := data;
    ...
    if slData.Count > item then
        Result := slData[item];
  finally
    slData.Free;
  end;
end;
{code}

> Presumably this will fail if I use AnsiString rather than string for
> the data argument?

It can, if the AnsiString contains non-ASCII characters in it.  TStringList 
only operates on "string", so in 2009+ that will be UnicodeString, and passing 
an AnsiString to a UnicodeString performs a data conversion.  Non-ASCII characters 
will be altered or lost if the AnsiString's codepage cannot represent its 
characters in Unicode.

> Is there a TAnsiStringList class available that works like before

No.  You would have to create your own, or find a third-party implementation.

> is StringReplace overloaded so it can deal with AnsiString arguments?

There is an AnsiString version of StringReplace() in the System.AnsiStrings 
unit.

> Another big use of strings is as containers of byte sequences in RS232
> communications objects

That is a very common mistake that got a lot of people in trouble when migrating 
to Unicode.  AnsiString was never intended as a container for binary data, 
now more than ever in 2009 onwards.

> Is there no way I can redefine "string" back to "AnsiString" for my
> whole applications?

No, there is not.

> Like in C you could do:
>
> #define string AnsiString
>
> in a global header file and it would work through the code?

No, it wouldn't.  And also, C++ has its own string class anyway, so you have 
to watch out when using hacks like this.

--
Remy Lebeau (TeamB)
0
Remy
7/30/2013 5:08:23 PM
On Tue, 30 Jul 2013 10:08:23 -0700, Remy Lebeau (TeamB)
<no.spam@no.spam.com> wrote:

>Bo wrote:
>
>> My Sentinel dongle component has a number of methods that work on
>> strings, which assumes 1-byte characters. Specifically the handling
>> works with license strings which are 25 byte hex codes and these are
>> very important to keep as is.
>
>But are they actually textual strings, or binary data?

Well externally when transferring to customers via email and such it
is a 25 byte string with HEX data, so the chars are 0..9, A..F and no
other.
The component can create a license string for sending to the customer
and it can receive the same string for decoding into the internal
representation. This is basically a set of integer numbers which match
what is programmed into the dongle.

>> Since the components are the very first items I need to deal with in
>> XE4 and get right I was wondering if it would not be OK to just
>> replace "string" in the original code with AnsiString?
>
>If you need a "quick and dirty" hack, then yes.  But in general, it is bad 
>to "ansify" your code.  Instead, you should do a code review and update the 
>components to use strings the "right" way, or use a different container for 
>8bit data (TBytes, TStream, etc).

I went ahead and replaced string with AnsiString in teh component
using Delphi7 just to check that that would not change the behaviour
and it did not in my test application in any case.
So I think it is ready to do the leap to XE4.

>AnsiString should not be used for that purpose.  Especially considering that 
>in 2009 onwards, AnsiString is codepage-aware, and can actually alter the 
>character data if you are not careful with it.
Since the strings only contain 0..9, A..F I guess it will not matter
here at least.

>
>> I have come to use TStringList a lot in order to manipulate strings,
>> extracting data from field separated formats etc. For instance if a
>> data item contains some 30 or so values with comma or tab separation
>> I usually do this to read single values:
>
>Use the DelimitedText property instead

Will do.

>There is an AnsiString version of StringReplace() in the System.AnsiStrings 
>unit.

Found AnsiReplaceStr which seems to do what I need.

>> Another big use of strings is as containers of byte sequences in RS232
>> communications objects
>
>That is a very common mistake that got a lot of people in trouble when migrating 
>to Unicode.  AnsiString was never intended as a container for binary data, 
>now more than ever in 2009 onwards.
>

So I should change my own code to use dynamic arrays of byte instead.

But what can I do about the AsyncPro comport? Its methods work on
strings both for receive and transmit.

--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 5:51:03 PM
Bo wrote:

> Well externally when transferring to customers via email and such it
> is a 25 byte string with HEX data, so the chars are 0..9, A..F and no
> other.

Just to be clear, it is binary data that is being FORMATTED into a String 
using text characters in the Hexidecimal range, right?  If so, then you don't 
need to force your code to use AnsiString for that, since Hex characters 
are ASCII compatible so there will be no data loss when using Unicode strings 
or decoding them back to the original binary data.

> I went ahead and replaced string with AnsiString in teh component
> using Delphi7 just to check that that would not change the behaviour

In 2007 and earlier, it will not change anything at all, since the generic 
String type maps to AnsiString in those versions.  Bu you do have to take 
into account that AnsiString changed in 2009 and is not the same AnsiString 
used by 2007 and earlier.  Dealing with Unicode and Ansi codepages makes 
a difference when migrating.

> Found AnsiReplaceStr which seems to do what I need.

Except that it is a legacy function, and only provided in the System.AnsiStrings 
unit in 2009 and later for backwards compatibility with AnsiString-based 
code.

> So I should change my own code to use dynamic arrays of byte instead.

Yes, or TMemoryStream, or GetMem().

> But what can I do about the AsyncPro comport?

Check the vendor if there is an updated version available for Unicode versions 
of Delphi.  The RTL/VCL has been using Unicode for several years now, most 
vendors have released updated products by now.  If there is no such update 
available, then consider switching to another product that is updated.  AsyncPro 
is not the only RS232 component available.  Or just write your own RS232 
code, it is not difficult to do.

--
Remy Lebeau (TeamB)
0
Remy
7/30/2013 6:50:02 PM
On Tue, 30 Jul 2013 11:50:02 -0700, Remy Lebeau (TeamB)
<no.spam@no.spam.com> wrote:

>Bo wrote:
>
>> Well externally when transferring to customers via email and such it
>> is a 25 byte string with HEX data, so the chars are 0..9, A..F and no
>> other.
>
>Just to be clear, it is binary data that is being FORMATTED into a String 
>using text characters in the Hexidecimal range, right?  If so, then you don't 
>need to force your code to use AnsiString for that, since Hex characters 
>are ASCII compatible so there will be no data loss when using Unicode strings 
>or decoding them back to the original binary data.

Exactly, the string is a formatted output from the component in the
application that generates licenses and an input to the component in
the application where the licens is used.
>
>
>> But what can I do about the AsyncPro comport?
>
>Check the vendor if there is an updated version available for Unicode versions 
>of Delphi.  The RTL/VCL has been using Unicode for several years now, most 
>vendors have released updated products by now.  If there is no such update 
>available, then consider switching to another product that is updated.  AsyncPro 
>is not the only RS232 component available.  Or just write your own RS232 
>code, it is not difficult to do.

The AsyncPro communications component set was sold by Turbo Power
Systems who worked closely with Borland but later they abandoned the
product when they changed their business to other things. At that time
they donated the sources to the OpenSource community and it is now
located on SourceForge.
So there is no vendor to contact...
Burt there is a huge user base since they sold a lot of copies when it
was commercial and then a lot of developers picked it up when it went
OpenSource as well.

It is a pity that Borland/Embarcadero never bothered to add a simple
serial port component to Delphi / C++Builder to help us who do not
need anything else but simple RS232 data in/out....
AsyncPro has tons of stuff that we do not need, we only ever use the
com port component.
--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 7:10:51 PM
Bo wrote:

> Exactly, the string is a formatted output from the component in the
> application that generates licenses and an input to the component in
> the application where the licens is used.

Then don't ansify that code.  Use the generic String type, it will work fine.

> The AsyncPro communications component set was sold by Turbo Power
> Systems who worked closely with Borland but later they abandoned the
> product when they changed their business to other things. At that time
> they donated the sources to the OpenSource community and it is now
> located on SourceForge.
> So there is no vendor to contact...

Then check the source code at http://sourceforge.net/projects/tpapro/ to 
see if it has been updated for Unicode yet.  I do see efforts to bring AsyncPro 
into D2010, which is a Unicode version.

> It is a pity that Borland/Embarcadero never bothered to add a simple
> serial port component to Delphi / C++Builder to help us who do not
> need anything else but simple RS232 data in/out....

Why would they bother with that?  It brings no benefit to the VCL itself 
to do so.  You could just as easily use the Win32 API directly, it is only 
a few API calls to access an RS323 port manually.

--
Remy Lebeau (TeamB)
0
Remy
7/30/2013 7:26:56 PM
On Sun, 28 Jul 2013 18:08:26 -0700, Remy Lebeau (TeamB)
<no.spam@no.spam.com> wrote:

>Bo wrote:
>
>> What needs to be done in order to use these components seamlessly
>> in XE4 for both C++ and Delphi?
>
>The same rules apply as in earlier versions.  Create a new runtime package 
>in Delphi (and an accompanying designtime package if needed), go into its 
>Project Options and set it to generate all C++ output files, and then compile 
>and install normally.  You generally need to make sure both C++ and Delphi 
>personalities are loaded in the IDE when you do the install.

I tried to install the Sentinel component as a start into a XE4
component package.
I expected *.hpp files to be created in the process to generate C++
output files but in fact I cannot find any.
Where are they hidden? They do not seem to be present in the source
dir of the component's pas files...
The component *is* shown in the list when I select a form in a Delphi
app as well as if I do the same in a new C++ app.
But I want to know where the generated files are located...
--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 8:13:45 PM
Bo wrote:

> I expected *.hpp files to be created in the process to generate
> C++ output files

Yes, they will be created.

> but in fact I cannot find any.

Do you have an HPP output folder configured in the project?  If not, then 
the IDE's default HPP output folder will be used instead, such as "$(BDSCOMMONDIR)\Hpp".

> They do not seem to be present in the source
> dir of the component's pas files...

Only if there is no HPP output folder configured at all.

--
Remy Lebeau (TeamB)
0
Remy
7/30/2013 8:34:32 PM
On Tue, 30 Jul 2013 13:34:32 -0700, Remy Lebeau (TeamB)
<no.spam@no.spam.com> wrote:

>Bo wrote:
>
>> I expected *.hpp files to be created in the process to generate
>> C++ output files
>
>Yes, they will be created.
>
>> but in fact I cannot find any.
>
>Do you have an HPP output folder configured in the project? If not, then 
>the IDE's default HPP output folder will be used instead, such as "$(BDSCOMMONDIR)\Hpp".

Sorry if I don't get this, but I just went into the package project
options and there surely is no BDSCOMMONDIR location I can find...

A fair amount of searching revealed that files went into the C:\Users
tree, which I never ever use...

So after changing project conf stuff around I got the files to where
they should be inside the development folder tree. And the hpp files
were there.

But I have another issue, if I use the drop-down in the project group
pane to set the active configuration it does not show what is
currently selected /debug vs release).
I clicked on release and built again and the Win32/Release folder was
created and populated.
But there is no checkmark or anything indicating what is actually
selected...

Question:
Where can I see which configuration is selected?
Other IDE:s I have used for embedded work for instance clearly show
this...

And where can I get rid of the start page that insist on getting me to
start developing for Apple products? I don't want to do that, we use
Android exclusively here...

--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 9:44:09 PM
On Tue, 30 Jul 2013 14:44:09 -0700, Bo Berglund
<bo.berglund@nospam.com> wrote:

>On Tue, 30 Jul 2013 13:34:32 -0700, Remy Lebeau (TeamB)
><no.spam@no.spam.com> wrote:
>
>>Bo wrote:
>But I have another issue, if I use the drop-down in the project group
>pane to set the active configuration it does not show what is
>currently selected /debug vs release).
>I clicked on release and built again and the Win32/Release folder was
>created and populated.
>But there is no checkmark or anything indicating what is actually
>selected...
>
>Question:
>Where can I see which configuration is selected?
>Other IDE:s I have used for embedded work for instance clearly show
>this...
>

Found it in the treeview list below...

--

Bo Berglund
Developer in Sweden
0
Bo
7/30/2013 10:32:17 PM
Bo wrote:

> Sorry if I don't get this, but I just went into the package project
> options and there surely is no BDSCOMMONDIR location I can find...

$(BDSCOMMONDIR) is a global Environment Variable defined in the IDE, not 
the Project.  $(BDSCOMMONDIR) is established when the IDE is first installed, 
but can be changed in the IDE's settings (Tools | Options | Environment Options 
| Environment Variables).  By default, it maps to "C:\Users\Public\Documents\RAD 
Studio\<Version>\" or "C:\Users\<Username>\Documents\RAD Studio\<Version>\".

> But I have another issue, if I use the drop-down in the project
> group pane to set the active configuration it does not show what
> is currently selected /debug vs release).

What "Project Group Pane" are you referring to?

Active Configurations and Platforms can be selected in the Project Manager, 
and it shows which are actually active.

> And where can I get rid of the start page that insist on getting me
> to start developing for Apple products?

I do not know.

--
Remy Lebeau (TeamB)
0
Remy
7/31/2013 5:26:45 AM
Reply:

Similar Artilces:

Delphi 5 to Delphi XE4
Thinking about making the conversion. Of course we have numerous components such as: TurboPower AsyncPro, TurboPower Orpheus ICS2 Synactis All-In-The-Box. You guys have any advice as to the effort and time it may possibly take. It is a large application, several hundred thousand lines. And that's what happens when using third party components, a lot of extra work. I have been burned a few times. I now minimize the use to a few well known suppliers, like TMS. I have "banned" a lot of other components. Regards, Ole > > Thinking about making the conver...

Component toolbar in Delphi XE4 missing tabs and components
I installed my custom components package in the RAD Studio XE4 "personality" (both Delphi and C++Builder). It seemed to work fine and I could create a VCL test app for both Delphi and C++Builder with one of the components dropped on a form. But now I am investigating this further and I find that a lot of components are missing.. :-( I managed to get the components displayed as a tabbed ribbon across the top similar to in Delphi7 by going to View/Toolbars/Components. Then I could also drag it to a place on the screen where it could use the full width of the IDE. I then...

Delphi Dbase components for XE4
Are there any Delphi components available that can be used to replace the Delphi BDE Dbase functionality? I am looking for something like the DBISAM VCL components that have corresponding replacements for the BDE TTable and TQuery components but for use with Dbase. I am currently using the TDbf freeware component but the source code has not been updated for Delphi XE4. I would like to be able to compile the Dbase access functionality directly into any Delphi XE4 application. Pier The best BDE replacement I found is FireDAC. (Now part of the Delphi suite) It depends on your D...

League System compatible with Delphi 2010 or Delphi XE4
I am currently trying to write a league system using delphi to be used for an upcoming football tournamant I am running. However, I have encountered some difficulty in doing so. Does anyone have a league system they would give me the code for that is compatible with Delphi 2010 or Delphi XE4? ...

PostgresDAC supports Delphi XE4 and C++ Builder XE4 [Edit]
This new important release introduces support for the RAD Studio XE4 (Delphi and C++ Builder personalities). *Download* You're welcome to download the PostgresDAC v2.9.6 right now at: [http://microolap.com/products/connectivity/postgresdac/download/|http://microolap.com/products/connectivity/postgresdac/download/] or login to your private area on our site at [http://microolap.com/my/downloads/|http://microolap.com/my/downloads/] *Feedback* Please don't hesitate to ask any questions or report bugs with our Support Ticketing system available at [http://www.microola...

Stack overflow when opening a Delphi 7 frame in Delphi XE4
I am trying to port a Delphi 7 application to Delphi XE4. I have installed all the required component libraries in Delphi XE4 and I managed to open the Delphi 7 project in Delphi XE4. However, when I try to open one of the units containing a VCL frame I get the error "stack overflow - Save your work and restart RAD studio XE4". If I don't open any frames and try to build the project, the compiler can't find the components in the above mentioned frame unit and stops with an error. What should I do? Pier I figured out what the problem was. I has a TsiLang compo...

Building 64bit Delphi Component in XE4
Does anyone know how to build a 64bit Delphi component in XE4 using just the C++ Builder personality? I opened a delphi component library in XE4 and it shows the 32bit target, and I can build it. However, there is no 64bit target, just 32bit and OS X. The 64bit add option is totally missing. I realize that the IDE just uses 32 bit for its processing, but I need to be able to build the corresponding run-time BPL in 64bit code. It is possible that the target will come from the vendor, but this does not solve the issue of open software (such as Abbrevia). Hello Michael, > Does anyon...

ActiveX differences between Delphi 7 and Delphi XE4 in an MFC application
When I create an ActiveX control based on a TPanel (with no added code) in Delphi 7, I am able to add this to a MFC C++ application and have it run fine. When I take the exact same code and compile it in Delphi XE4 (and XE2), MFC throws an assertion. I confirmed that the only changes are in the dcu, ocx and res files. The assertion is happening on ASSERT(wFlags == DISPATCH_METHOD); in occsite.cpp (I included the source to this). {code} STDMETHODIMP COleControlSite::XEventSink::Invoke( DISPID dispid, REFIID, LCID, unsigned short wFlags, DISPPARAMS* pDispParams, VARIANT* pvar...

League System compatible with Delphi 2010 or Delphi XE4 #2
I am currently trying to write a league system using delphi to be used for an upcoming football tournamant I am running. However, I have encountered some difficulty in doing so. +Does anyone have a league system they would give me the code for that is compatible with Delphi 2010 or Delphi XE4?+ ...

Cannot create connection profile in Delphi XE4 Starter
I have recently bought Delphi XE4 Starter after using Delphi XE4 trial but I cannot get to make a connection profile in Starter (which I was able to do in the trial). For example I opened the sample FMX LocationDemo project & in Project manager added new platform OSX but it does not let me create a connection.Right clicking on the MacOSX icon all options except delete are greyed out. At the moment I do not have a Mac machine to connect to but I was able to get the create connection working in the trial version so why is it not working similarly for me in Starter? Most grateful for helpfu...

Is delphi xe4 IDE 32 bit application?
Hi, I am trying to install a BPL compiled with win64 platform into DELPHI XE4 IDE. It is throwing an error "it is not a valid win32 application". is it means that DELPHI XE4 IDE is 32 bit application? if so , is it available in WIN64 too? thanks sudheer "Sudheer Bondalapati" wrote in message news:615522@forums.embarcadero.com... > > I am trying to install a BPL compiled with win64 platform into DELPHI XE4 > IDE. It is throwing an error "it is not a valid win32 application". > > is it means that DELPHI XE4 IDE is 32 bit appl...

New with XE4. Can you recommend a sizing component for this Delphi?
Hi there, I am upgrading to Delphi XE4 and need a sizing component, any recommendations? Thanks, Jorge Jorge wrote: > I am upgrading to Delphi XE4 and need a sizing component, > any recommendations? What is a "sizing component"? You need to be more specific. -- Remy Lebeau (TeamB) In Delphi 7, I added GTsizer component so that my forms expand to fit any screen. Now with Delphi EX4, is there a recommended component to add? Also, I am getting Chinese characters in my Memo component when I use memo.lines.LoadFromFile(myfile). myfile is a textfile type. Any ...

Is it possible to create a Itune-like UI with Delphi Xe4?
As subject, on Itune UI , behind the cover flow area, there are many rows for music albums. Each album row, you can point on any album you lilke then click it will show a album information panel , and you can move the row like a slide bar does, all action are smooth and with beautiful animation.... I really want to make it with Delphi xe IOS program, But I found nothing in my mind, How..... even a basic model . a layout as container, 5 HorzSCrollbox..... create a Timage array for create thumbnail image dynamically...(click event also)... then how to make slide animation? ..... Any dem...

How to create additional files for installing Delphi component into BCB
Hi, I'm trying to automate the build process for a Delphi component that can be installed into Delphi from version 4 up to RAD Studio 2009. I had a .Bat build file that worked fine, as long as I only want to install the package into the Delphi personality of RAD Studio. Now that I also want to be able to install it into the C++ Builder personality, I'm having problems generating the additional files needed. It's further complicated in that for each version of Delphi I build two sets of binaries - the final binary, and an evaluation binary that uses a conditional define to ...

Web resources about - How to create components in Delphi XE4 usable also in BCB XE4 - embarcadero.delphi.ide

Component - Wikipedia, the free encyclopedia
Text is available under the Creative Commons Attribution-ShareAlike License ;additional terms may apply. By using this site, you agree to the ...

AirAsia disaster: Indonesia cites faulty component, crew response in crash
Pilots appear to have reset the computer system's circuit breaker, leading to a series of failures that caused them to lose control of the plane ...

It’s a new year, and time for the claimed iPhone 7 component photos to begin
Taiwanese site Apple Club has posted what it claims are leaked photos of iPhone 7 components. The photos appear to show the backlight of a new ...

Japan follows US lead in banning certain Takata components
Filed under: Government/Legal , Safety , Japan Like the US, Japan will ban certain Takata's airbag inflators from vehicles in development, and ...

Lumentum, Fabrinet: Component Makers at Start of 5-Year Boom, Says Needham
Needham & Co .’s Alex Henderson today advises fiber optics enthusiasts to look to component makers , such as Lumentum ( LITE ), in 2016, more ...

Samsung reportedly lost key iPhone 7 component business
... for Samsung , which is ironic considering the two companies are fierce rivals in the mobile business. The Korean giant produces various components ...

Crew, faulty component caused AirAsia crash
Indonesian investigators said crew action and a faulty component caused the AirAsia jet crash in the Java Sea last year, killing 162 passengers. ...

Immigration Law Enforcement: A Vital Component Of National Security And Counterterrorism
While the administration claims that these refugees are being vetted, there is no way to actually screen these people

John Ridley Extends ABC Studios Deal For Three More Years; Film Component Added
John Ridley and his production arm, International Famous Players Radio Picture Corporation, have extended their first-look deal with ABC Studios ...

Passive component maker Chilisin reports 20% increase in October revenues
Chilisin Electronics, which manufactures inductors and power chokes, has announced consolidated revenues for October 2015 increased 20.3% from ...

Resources last updated: 1/13/2016 9:28:58 AM