Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi How to - string in DLL (https://www.delphipraxis.net/161104-how-string-dll.html)

WojTec 22. Jun 2011 15:32

Re: How to - string in DLL
 
There is another problem - compatibility Ansii/Unicode.
DLL is compiled with D2010, it uses unit with string type.
In API unit I strings declared as AnsiString:

Delphi-Quellcode:
S: AnsiString;
S := FuncReturnsString();
StrLCopy(lpBuffer, PAnsiChar(AnsiString(S)), nSize) // second typecast is from old version
If both DLL and app are compiled in Ansii compiler (D7) - it working, if in Unicode (D2010) - also working. Of one compiled in Ansii and second in Unicode, then raises invalid pionter operation exception, but buffers has correct data. I don't understand. What I'm doing wrong?

jaenicke 22. Jun 2011 16:36

AW: How to - string in DLL
 
I think this is a problem with the size parameter.

You always have to have in mind that one character is one byte in Delphi 7 and two bytes in Delphi 2010.

How does the code for reserving the memory, ... look like?

WojTec 22. Jun 2011 19:28

Re: How to - string in DLL
 
Hm, my functions working as in example on 1st page in this thread, size is length of S, in Ansii should be S length, but in Unicode length * 2 if we talking about bytes nor string length, but the same code working if both EXE and DLL are Ansii OR Unicode. So, what I should to do?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz