![]() |
BUffer leeren.
Hallo ich hoffe das ich hier richtig bin.
Ich habe frolgendes Problem. Ich möchte den aktuell angemeldeten System nutzer auslesen. das geht auch ganz gut. aber da ich den namen in einen buffer schreiben muss, zeigt er mir natürlich auch noch jee menge mist an (unnötige zeichen). ich vermute das es irgendetwas mit dem buffer zu tun hat. leider weiß ich nicht wie man ihn leert . vielleicht kann mir jemand halfen. vielen dank. hier ist mein quellcode:
Delphi-Quellcode:
var
clBuffer: DWord; Buffer,sql,id: string; .... clBuffer := 255; BUffer:=''; SetLength(Buffer, clBuffer); GetUserName(pchar(Buffer), clBuffer); |
Re: BUffer leeren.
Erstmal Herzlich Willkommen in der DP! :hello:
versuchs mal mit SetLength(Buffer, 0); |
Re: BUffer leeren.
herzlich willkommen...
ich löse das folgendermaßen:
Delphi-Quellcode:
try that... sollte klappen...
var
u: array [0..127] of Char; dw: DWord; begin dw := SizeOf( u ); GetUserName( u, dw ); Result := u; end; Gruß reli |
Re: BUffer leeren.
Hilfe lesen hilft:
Zitat:
![]() Das wird ja immer schlimmer:
Delphi-Quellcode:
Man muss den Buffer auf die Tatsächliche Länge des Benutzernamens kürzen.
function GetCurrUserName: string;
var Size : DWORD; begin Size := MAX_COMPUTERNAME_LENGTH + 1; SetLength(Result, Size); if GetUserName(PChar(Result), Size) then SetLength(Result, Size) else Result := ''; end; |
Re: BUffer leeren.
ich hab bei mir folgenden schnipsel gefunden...
Delphi-Quellcode:
function GetNTloginUser: string;
VAR szUserName: PChar; iUserNameLength: Cardinal; begin iUserNameLength := 0; //Retrieve windows username GetUserName(nil, iUserNameLength); Inc(iUserNameLength, 2); GetMem(szUserName, iUserNameLength); if not GetUserName(szUserName, iUserNameLength) then szUserName := ''; result:= szUserName; end; |
Re: BUffer leeren.
Oh, das ging ja schnell. Vielen Dank euch allen ich denke mit den vielen Lösungsvorschlägen sollte es funktionieren.
Danke :-D |
Re: BUffer leeren.
Und hier die Kurzform:
Delphi-Quellcode:
function GetLoggedinUser: String;
var Buffer: PChar; len: Cardinal; begin if GetUserName(Buffer, len) then SetString(Result, Buffer, len); end; |
Re: BUffer leeren.
Hallo Sebastian,
falls du mit den vielen Vorschlägen immer noch Schiffbruch erleiden solltest:
Delphi-Quellcode:
Freundliche Grüße vom marabu
function GetUserName: string;
var buf: array [Byte] of Char; size: Cardinal; begin size := SizeOf(buf); if Windows.GetUserName(@buf, size) then SetString(Result, buf, Pred(size)) else Result := ''; end; |
Re: BUffer leeren.
Vielen Dank für den zusätzlichen Tipp. Es hatte aber schon vorher funktioniert trotzdem allen vielen dank
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 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