Delphi-Tags wären wünschenswert.
Ich habe gerade nochmeine version rausgesucht, die ich immer verwende:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| 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; |
Du prüfst nicht, ob
GetUserName erfolgreich war, scheitert der Aufruf steht bei dir Schrott in
u. Man hat keine Möglichkeit zu überprüfen, ob deine Funktion erfolgreich war, bei mir brauucht man nur zu gucken, ob der zurückgegeben String eine Länge größer null hat. Ein weiteres Manko bei dir: Sollte der Benutzername weniger als 128 Zeichen haben hast du in den übrigen Zeichen immer noch den Speichermüll drinne der an der Stelle von
u steht. Da du vor dem Aufruf von
GetUserName das Array nicht initialisierst. Bei mir wird der String auf die tatsächlich gelesenen Zeichen gekürzt.