TstringList can not assign

Posted on 2001-08-12
Last Modified: 2010-04-06

I create a dll with delphi and try to connect to the Dll by delphi application

One of the function in the Dll has parameter from type TStringList.

When i try to use this function i get an error :
"TstringList can not assign to TstringList"

i use StrList1.assign(StrList2)

and every unit has the ShareMem unit,

why ?

Question by:asi
  • 2
  • 2
  • 2
  • +3

Expert Comment

ID: 6377357


Try declaring sharemem in the project source of your exe and dll rather than in every unit. You also need to ensure that it is declared first.

Author Comment

ID: 6377366
finally i find out  the Vcl objects cannot pass to Dll ...

10x to me

Expert Comment

ID: 6377597

you should be able to post objects between an exe and a dll without any problem. Problems only occur if you start using strings over 255 characters.
LVL 21

Expert Comment

ID: 6377608
Are the string lists in the dll or in the exe?

Try using Form1.StringLIst.Assign(Form2.StringList);

Replacing Form# with your form names....

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.


Accepted Solution

fva earned 50 total points
ID: 6379186
The Assign method checks for the class of the parameter using probably the "is" operator or "InheritsFrom". Both rely on the virtual tables being the same, which is not the case unless you compiled both your EXE and your DLL with runtime libs.
Resolution: Compile with runtime libraries (packages) both the EXE and the DLL
Don't use Assign, rather make your own copying routine

I would go for the first option if it's affordable, since the different VT issue might get you in other kinds of trouble later.


Author Comment

ID: 6380269
and if i want to get from a Dll Tdataset ? the same ... ?

Expert Comment

ID: 6380332
If the object you are trying to use across the "DLL boundary" does not make any awkward use of internal workings of the compiler (as the case I outlined) or some global vars then you might get away with it. The sad fact is that when you run a method of any object from within the DLL, code inside the DLL gets run and when you call the same method on the same object from within the EXE _other_identical_piece_of_code_ will run. Things can go very well as long as that code does not make use of any globals (and the VT is such a "hidden" global).
When you run into globals you _will_ have to switch to runtime libs. The database subsystem of the VCL is built on global stuff (see the Session or the Sessions variables) so you will have a very hard time to DLL-ize database code without runtime packages.
When using RT packages every module (EXE and all involved DLL's) is expected to use the same vclxxx.dpl, meaning that all the globals I mentioned above are in the same place (a.k.a. in those DPL's)


Expert Comment

ID: 6844660
Question(s) below appears to have been abandoned. ADMINISTRATION HAS BEEN ADVISED AND WILL BE CONTACTING YOU SHORTLY.  There are a total of 57 open questions for you, any not shown here have ZERO comments added, so you can delete them directly.

Your options are:
1. Accept a Comment As Answer (use the button next to the Expert's name).
2. Close the question if the information was not useful to you. You must tell the participants why you wish to do this, and allow for Expert response.
3. Ask Community Support to help split points between participating experts, or just comment here with details and we'll respond with the process.
4. Delete the question. Again, please comment to advise the other participants why you wish to do this.

For special handling needs, please post a zero point question in the link below and include the question QID/link(s) that it regards.
Please click the Help Desk link on the left for Member Guidelines, Member Agreement and the Question/Answer process.

Please click you Member Profile to view your question history and keep them all current with updates as the collaboration effort continues, to track all your open and locked questions at this site.  If you are an EE Pro user, use the Power Search option to find them.

To view your open questions, please click the following link(s) and keep them all current with updates.

To view your locked questions, please click the following link(s) and evaluate the proposed answer.

------------>  EXPERTS:  Please leave any comments regarding your closing recommendations if this item remains inactive another seven (7) days.
Thank you everyone.
Moderator @ Experts Exchange

P.S.  For any year 2000 questions, special attention is needed to ensure the first correct response is awarded, since they are not in the comment date order, but rather in Member ID order.

Expert Comment

ID: 6887782
Admin notified of User neglect. Force-accepted by
Community Support Moderator
Experts Exchange

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Delphi application Soap connection 5 94
How to renew a Delphi rad-studio licence? 5 49
can't find the executable in Simulator 1 77
Delphi...Split view - idea? 1 40
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
This is a video that shows how the OnPage alerts system integrates into ConnectWise, how a trigger is set, how a page is sent via the trigger, and how the SENT, DELIVERED, READ & REPLIED receipts get entered into the internal tab of the ConnectWise …

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now