Solved

TstringList can not assign

Posted on 2001-08-12
9
342 Views
Last Modified: 2010-04-06
Hello,

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 ?
reagrds
Asi
 

0
Comment
Question by:asi
  • 2
  • 2
  • 2
  • +3
9 Comments
 
LVL 3

Expert Comment

by:nnbbb09
ID: 6377357

Hello,

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.
0
 

Author Comment

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


10x to me
0
 
LVL 3

Expert Comment

by:nnbbb09
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.
0
 
LVL 21

Expert Comment

by:gemarti
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....


0
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 
LVL 4

Accepted Solution

by:
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
or
Don't use Assign, rather make your own copying routine
or
try
first_string_list.Assign(TStringList(second_string_list))

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.

F.
0
 

Author Comment

by:asi
ID: 6380269
and if i want to get from a Dll Tdataset ? the same ... ?
0
 
LVL 4

Expert Comment

by:fva
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)

F.
0
 
LVL 1

Expert Comment

by:Moondancer
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.
http://www.experts-exchange.com/jsp/qList.jsp?ta=commspt
 
Please click the Help Desk link on the left for Member Guidelines, Member Agreement and the Question/Answer process.  http://www.experts-exchange.com/jsp/cmtyHelpDesk.jsp

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.
http://www.experts-exchange.com/questions/Q.11624838.html
http://www.experts-exchange.com/questions/Q.11837819.html
http://www.experts-exchange.com/questions/Q.12000718.html
http://www.experts-exchange.com/questions/Q.20015588.html
http://www.experts-exchange.com/questions/Q.20033766.html
http://www.experts-exchange.com/questions/Q.20060547.html
http://www.experts-exchange.com/questions/Q.20086506.html
http://www.experts-exchange.com/questions/Q.20087146.html
http://www.experts-exchange.com/questions/Q.20096878.html
http://www.experts-exchange.com/questions/Q.20099988.html
http://www.experts-exchange.com/questions/Q.20103524.html
http://www.experts-exchange.com/questions/Q.20105868.html
http://www.experts-exchange.com/questions/Q.20124168.html
http://www.experts-exchange.com/questions/Q.20126164.html
http://www.experts-exchange.com/questions/Q.20126258.html
http://www.experts-exchange.com/questions/Q.20127406.html
http://www.experts-exchange.com/questions/Q.11610958.html
http://www.experts-exchange.com/questions/Q.20136024.html
http://www.experts-exchange.com/questions/Q.20137249.html
http://www.experts-exchange.com/questions/Q.20147343.html
http://www.experts-exchange.com/questions/Q.20162739.html
http://www.experts-exchange.com/questions/Q.20163581.html
http://www.experts-exchange.com/questions/Q.20165158.html
http://www.experts-exchange.com/questions/Q.20167166.html
http://www.experts-exchange.com/questions/Q.20177854.html
http://www.experts-exchange.com/questions/Q.20185774.html
http://www.experts-exchange.com/questions/Q.20185782.html
http://www.experts-exchange.com/questions/Q.20211426.html
http://www.experts-exchange.com/questions/Q.20211827.html
http://www.experts-exchange.com/questions/Q.20229407.html
http://www.experts-exchange.com/questions/Q.20231198.html
http://www.experts-exchange.com/questions/Q.20238567.html
http://www.experts-exchange.com/questions/Q.20238568.html
http://www.experts-exchange.com/questions/Q.20238571.html
http://www.experts-exchange.com/questions/Q.20240061.html
http://www.experts-exchange.com/questions/Q.20241871.html
http://www.experts-exchange.com/questions/Q.20242268.html
http://www.experts-exchange.com/questions/Q.20244256.html
http://www.experts-exchange.com/questions/Q.20246106.html
http://www.experts-exchange.com/questions/Q.20250445.html
http://www.experts-exchange.com/questions/Q.20251868.html
http://www.experts-exchange.com/questions/Q.20254886.html
http://www.experts-exchange.com/questions/Q.20254704.html
http://www.experts-exchange.com/questions/Q.20255422.html
http://www.experts-exchange.com/questions/Q.20261740.html
http://www.experts-exchange.com/questions/Q.20262552.html
http://www.experts-exchange.com/questions/Q.20262985.html
http://www.experts-exchange.com/questions/Q.20265275.html
http://www.experts-exchange.com/questions/Q.20270259.html
http://www.experts-exchange.com/questions/Q.20270694.html
http://www.experts-exchange.com/questions/Q.20270687.html
http://www.experts-exchange.com/questions/Q.20271885.html


To view your locked questions, please click the following link(s) and evaluate the proposed answer.
http://www.experts-exchange.com/questions/Q.20171579.html
http://www.experts-exchange.com/questions/Q.20178687.html
http://www.experts-exchange.com/questions/Q.20265222.html
http://www.experts-exchange.com/questions/Q.20265219.html
http://www.experts-exchange.com/questions/Q.20269116.html

PLEASE DO NOT AWARD THE POINTS TO ME.  
 
------------>  EXPERTS:  Please leave any comments regarding your closing recommendations if this item remains inactive another seven (7) days.
 
Thank you everyone.
 
Moondancer
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.
0
 
LVL 5

Expert Comment

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

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

758 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

13 Experts available now in Live!

Get 1:1 Help Now