Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringübergabe Delphi--> VB 6.0 in DLL (https://www.delphipraxis.net/113771-stringuebergabe-delphi-vbulletin-6-0-dll.html)

DelphiManiac 14. Mai 2008 13:45


Stringübergabe Delphi--> VB 6.0 in DLL
 
Hallo,

folgendes Anliegen habe ich:

ich habe eine DLL geschrieben (in Delphi), eine Funktion übernimmt einen String (bzw einen Zeiger auf das 1. Byte) C-konform, schreibt diesen in ein Gerät, das zurücklesen zeigt, dass der String nicht richtig übergeben wurde, da nur irgendwelche Sonderzeichen, (irgendwas aus dem RAM) drin stehen.

Meine Funktion sieht so aus:

Delphi-Quellcode:
function Set_Seriennummer(DataPointer:PChar):Cardinal;stdcall;
var
  Text:string;
  aPointer:PString;
  I:Integer;
begin
  SetLength(Text,17);
  StrCopy(pchar(Text),DataPointer);
  Result:=aObj.Set_Seriennummer(Text);
end;
Meine Frage ist nun wenn ich eine Zeiger auf einen String (PChar) übergeben lasse, wie muss die Deklaration in Visual Basic 6
dann aussehen??

Gruß
DelphiManiac

shmia 14. Mai 2008 14:21

Re: Stringübergabe Delphi--> VB 6.0 in DLL
 
Code:
Private Declare Function Set_Seriennummer Lib "xxx.dll" (ByVal DataPointer As String) As Long
Delphi-Quellcode:
function Set_Seriennummer(DataPointer:PChar):Cardinal;stdcall;
var
  Text:string;
begin
  Text := DataPointer; // nullterminierte C-Style Strings können einfach durch Zuweisung konvertiert werden
  Result:=aObj.Set_Seriennummer(Text);
end;

DelphiManiac 14. Mai 2008 14:43

Re: Stringübergabe Delphi--> VB 6.0 in DLL
 
@shmia
:lol:
Danke, genau so ist die Implemtierung richtig.

Wird denn in VB der String automatisch als PChar übergeben oder muss man dort noch irgendeine Wandlung vornehmen?

Gruß und danke nochmal!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 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