Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: PChar, PWideChar, Array of Char und Windows API

  Alt 2. Mai 2015, 17:38
Lies doch mal die Doku zu GetUserName:

Dein festes Array funktioniert da du die Größe schon auf 256 Zeichen festgelegt hast. Den String musst du natürlich auch lang genug machen sonst scheitert die Funktion, wie beschrieben. Ich lasse bei so etwas die Funktion beim ersten mal mit Absicht scheitern da sie mir, laut verlinkter Doku, im Ausgabeparameter lpnSize zurückgibt wieviele Zeichen der UserName denn braucht. Und dann kann man seinen String (oder Array) auch so lang machen wie es gebraucht wird und nicht unnötig länger.

[Quote]
Delphi-Quellcode:
procedure printUserName();
var
   userName:   String;
   buffer:      PChar;
   bufferLen:   DWORD;
begin
   bufferLen := 0;
   GetUserName(nil, bufferLen);

   userName := String.Create('?', bufferLen-1);
   buffer := PChar(userName);
   Win32Check( GetUserName(buffer, bufferLen) );
   WriteLn( userName.QuotedString() );
end;
  Mit Zitat antworten Zitat