Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL Procedure - String übergeben (https://www.delphipraxis.net/135084-dll-procedure-string-uebergeben.html)

Real-TTX 4. Jun 2009 14:23


DLL Procedure - String übergeben
 
Gibt es eine Möglichkeit ein beliebigen String an eine DLL Funktion zu übergeben?

In meiner DDL die Procedure :
Delphi-Quellcode:
procedure TestDLL(aString : pchar) ; external ; stdcall;
begin
  ShowMessage(aString);
end;
Der Aufruf :
Delphi-Quellcode:
  TestDLL(pChar('test'));
Die Meldung erscheint mit "Glyphen" und dannach folgt eine exception....

Gibt es dabei etwas zu beachten ?



Gruß, Real-TTX

himitsu 4. Jun 2009 14:30

Re: DLL Procedure - String übergeben
 
Also eigentlich dürfte dieses funktionieren ... hast du auch beie Funktionsdefinitionen gleich? (vorallem das stdcall)

Ansonsten könntest du auch einfach einen WideString nehmen, dieser wird von Delphi intern auf einen OLEStr umgeleitet, womit er über den Speichermanager der ole32.dll läuft
und demnach auch über Modulgrenzen hinweg verwendet werden kann.

Oder du verwendet einen SharedManager und kannst dann auch "normale" Strings/AnsiStrings verwenden.



Ja und zu dem PChar ... da könntest du es mal über eine lokale Variable versuchen

Delphi-Quellcode:
var s: String;

s := 'test';
TestDLL(PChar(s));


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.

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