AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BUffer leeren.

Ein Thema von sebastian_buege · begonnen am 5. Mär 2007 · letzter Beitrag vom 5. Mär 2007
Antwort Antwort
sebastian_buege

Registriert seit: 5. Mär 2007
58 Beiträge
 
Delphi 6 Personal
 
#1

BUffer leeren.

  Alt 5. Mär 2007, 10:26
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);
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#2

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:28
Erstmal Herzlich Willkommen in der DP!
versuchs mal mit SetLength(Buffer, 0);
Jörg
have FUN
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:30
herzlich willkommen...

ich löse das folgendermaßen:

Delphi-Quellcode:
var
  u: array [0..127] of Char;
  dw: DWord;
begin
  dw := SizeOf( u );
  GetUserName( u, dw );
  Result := u;
end;
try that... sollte klappen...

Gruß
reli
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:30
Hilfe lesen hilft:
Zitat:
Return Value
If the function succeeds, the return value is a nonzero value, and the variable pointed to by lpnSize contains the number of TCHARs copied to the buffer specified by lpBuffer, including the terminating null character.
Guck dir mal dazu Delphi-Referenz durchsuchenSetStringt an.

Das wird ja immer schlimmer:
Delphi-Quellcode:
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;
Man muss den Buffer auf die Tatsächliche Länge des Benutzernamens kürzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#5

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:32
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;
Jörg
have FUN
  Mit Zitat antworten Zitat
sebastian_buege

Registriert seit: 5. Mär 2007
58 Beiträge
 
Delphi 6 Personal
 
#6

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:34
Oh, das ging ja schnell. Vielen Dank euch allen ich denke mit den vielen Lösungsvorschlägen sollte es funktionieren.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:46
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: BUffer leeren.

  Alt 5. Mär 2007, 10:49
Hallo Sebastian,

falls du mit den vielen Vorschlägen immer noch Schiffbruch erleiden solltest:

Delphi-Quellcode:
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;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
sebastian_buege

Registriert seit: 5. Mär 2007
58 Beiträge
 
Delphi 6 Personal
 
#9

Re: BUffer leeren.

  Alt 5. Mär 2007, 11:01
Vielen Dank für den zusätzlichen Tipp. Es hatte aber schon vorher funktioniert trotzdem allen vielen dank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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