Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TCHAR* aus C-Dll (https://www.delphipraxis.net/151472-tchar%2A-aus-c-dll.html)

Mossi 19. Mai 2010 13:46


TCHAR* aus C-Dll
 
Ich denke, dass es das Problem schon mehrmals gab, aber ich find einfach keine Lösung.

Ich habe eine API-Function aus C, die folgendermaßen aussieht:
Code:
BOOL __declspec(dllexport) _stdcall TBApiGetDriverVersion(TCHAR* aVersion);
Meine Umstzung in Delphi würde jetzt folgendermaßen aussehen:
Delphi-Quellcode:
TTBApiGetDriverVersion = function (pVersion: PAnsiChar): Boolean; stdcall;
Nur was mach ich jetzt weiter. Eigentlich müsste ich jetzt den Parameter pVersion mit einer entsprechenden Länge (255 Zeichen) initialisieren und dann erst die Funktion aufrufen. Die Funktion schreibt dann die entsprechende Treiber-Version in die Variable.

Nur hab ich keine Ahnung, wie ich einen PAnsiChar so initialisiere, dass er genau 255 Zeichen aufnimmt. Ich muss auch zugeben, dass ich in Delphi nicht mehr all zu fit bin. Ist schon eine Weile her seit ich da was gemacht habe und ich denke mir, dass es wohl ganz einfach sein müsste. Nur der Ansatz fehlt mir.

ich hoffe, dass mir jemand helfen kann.

implementation 19. Mai 2010 13:49

Re: TCHAR* aus C-Dll
 
Eigentlich müsste es reichen, wenn du dem PAnsiChar eine 255-Zeichen lange Zeichenkette zuweist, z.B. aus nul-Zeichen (#0).
Sicher bin ich mir jetzt aber auch nicht ganz.

Mossi 19. Mai 2010 14:01

Re: TCHAR* aus C-Dll
 
ok. Hat sich erledigt.

Delphi-Quellcode:
var
  driverVersion: AnsiString;
begin
  SetLength(driverVersion, 255);
  TBApiGetDriverVersion(PAnsiChar(driverVersion));
end;
Manchmal sitzt man einfach auf dem Schlauch.

Aber dennoch danke


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