![]() |
DLL mit PChar D2010
Hallo,
ich habe nun eine DLL die Solche Parameter übernimmt:
Delphi-Quellcode:
Wenn ich sie nun so aufrufe:
TGetData= function (user,pass : PChar; Out1Str , Out2Str : Pointer ;out1_leng,out2_leng : Integer): integer; stdcall;
Delphi-Quellcode:
Dann zeigt mir die Debug Messagebox der DLL bei User & Pass nur den ersten Buchstaben an.
GetData : TGetData;
.. . User, Pass : String; GetData(PChar(User),PChar(Pass),@Out1Str[1],@Out2Str[1],out1_leng,out2_leng); Also nur 'u' statt 'user'; Hat sicher etwas mit Unicode usw zu tun, bekomme es aber einfach nicht hin, dass der ganze String übergeben wird. :wall: |
Re: DLL mit PChar D2010
Hallo,
versuch mal folgendes:
Delphi-Quellcode:
und dann so den Aufruf:
TGetData= function (user,pass : PAnsiChar; Out1Str , Out2Str : Pointer ;out1_leng,out2_leng : Integer): integer; stdcall;
Delphi-Quellcode:
Ciao Chris
GetData : TGetData;
.. . User, Pass : AnsiString; GetData(PAnsiChar(User),PAnsiChar(Pass),@Out1Str[1],@Out2Str[1],out1_leng,out2_leng); |
Re: DLL mit PChar D2010
Danke für den Tipp, bei mir hat das geholfen. :dp:
Hatte die TAPI32.DLL genutzt und mich gewundert, warum nur die "0" gewählt wird. Als Suchhilfe noch ein paar Begriffe: tapiRequestMakeCall TAPI TAPI32 |
Re: DLL mit PChar D2010
Delphi-Quellcode:
Alternativ dürfte auch dieses gehn.
TGetData = function(const User, Pass: AnsiString; Out1, Out2: PAnsiChar; Out1_Length, Out2_Length: Integer): Integer; stdcall;
Wobei Pointer absichtlich in PAnsiChar geändert wurde, denn ich denke mal dieses ist auch ein AnsiString oder ein AnsiChar-Array ... so gibt es dort nun eine Warnung, wenn man einen PWideChar dort übergibt. Und das PAnsiChar zu AnsiString ... hier wird wohl nur gelesen und diesbezüglich sieht ein AnsiString intern wie ein PAnsiChar aus. Und merke dir Eines: für externe Datenübertagung/-Speicherung nutzt man einfach keine dynamische Typen. PChar, String, Integer, Cardinal sind systemabhängig (also entsprechend des Compilers) und können sich schnell mal verändern. Ab D2009 ist PChar ein PWideChar und davor war er ein PAnsiChar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 Uhr. |
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