![]() |
string / PChar Problem in funktion / dll
Hallo,
ich habe folgende Definition einer Funktion in einer DLL:
Code:
in Delphi sieht das bei mir so aus:
BOOL __declspec(dllexport) GetUser (LPSTR sDomain, LPSTR sUser, DWORD nLen);
Delphi-Quellcode:
Mein Problem ist die Übergabe eines Strings als LPSTR.
function GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD):BOOL; stdcall; overload;
... exports GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD) name 'GetUser';
Delphi-Quellcode:
Das will nicht so wie ich will !!!
function myMagicFunc(const sDomain: string; var SUser: string):Boolean;
... function GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD):BOOL; var sD, sU: string; cU: array of Char; begin sD := sDomain; sU := sUser; Result := myMagicFunc(sD, sU); // string sU in array of char cU umwandeln setlength(cU, length(sU)); StrLCopy(@cU[0],@sU[1],length(cU)); sUser := PansiChar(cU); nLen := Length(cU); // Compiler-Hinweis Beseitigung ;-) if sUser = sDomain then ; end; Gibt beim Aufruf eine Schutzverletzung. Weiß jemand Rat ? [edit]Als offene Frage markiert[/edit] |
Re: string / PChar Problem in funktion / dll
|
Re: string / PChar Problem in funktion / dll
|
Re: string / PChar Problem in funktion / dll
|
Re: string / PChar Problem in funktion / dll
Zitat:
Man kann natürlich auch vorher die Länge des Eingabestrings ermitteln und prüfen, ob der Puffer groß genug ist. Oder man legt den Puffer anhand der Länge des Eingabestring an - dann erübrigen sich die Prüfungen von selbst :) --- ![]()
Code:
Description
StrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest. StrPCopy does not perform any length checking. The destination buffer must have room for at least Length(Source)+1 characters. |
Re: string / PChar Problem in funktion / dll
Zitat:
Da muss man natürlich vorsichtig sein, indem man vorher genug Speicher reserviert... mfG mirage228 |
Re: string / PChar Problem in funktion / dll
Zitat:
|
Re: string / PChar Problem in funktion / dll
Vielen Dank für die Antworten, ich werde das ausprobieren und "mein" Ergebnis hier posten.
(Offene Frage wird als beantwortet markiert) :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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