| Autor |
Beitrag |
mexx
      
Beiträge: 1183
|
Verfasst: Fr 01.06.07 15:31
Hi,
ich verwende folgen Code zum Auslesen des Benutzernamens.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function GetCurrentUserName: string; const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; begin dwUserNameLen := cnMaxUserNameLen-1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; |
Nun muss ich in die Anwendungsdaten des Benutzers und verwende somit das Result von der Funktion, welches ein String ist, wie folgt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| ... var Teil1,Teil2,Teil3,Erg:String; ... teil1 := '\\fs01\UserHomes\'; teil2 := GetCurrentUserName; teil3 := '\Anwendungsdaten\ICAClient\pn.ini'; erg := teil1 + Teil2 + teil3; showmessage(erg); |
Und hier das Ergebnis: \\fs01\UserHomes\mexx <-- und schluss!!!
Teil3 wird nicht mehr and den String erg angehangen. Verwende ich für Teil2 einen String wie 'mexx' kommt der vollständige Pfad mit teil3 raus. Was stimmt da nicht?
Vielen Dank, Mexx
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Fr 01.06.07 15:38
Bei mir funktioniert das wunderbar. 
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Fr 01.06.07 15:40
Das liegt wahrscheinlich daran, dass am Ende ein Nullzeichen dranhängt. (Keine 0, das Zeichen mit der Nummer 0 in der ASCII-Tabelle). Das einfach wegmachen, dann gehts.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Stefan-W
      
Beiträge: 475
Win 7 SP1
D2005 PE
|
Verfasst: Fr 01.06.07 15:40
ich bin mir jetzt nicht sicher ob Delphi die groß und Kleinschreibung beachtet...
aber versuche eine Variable immer gleich zu schreiben
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 01.06.07 15:40
GetCurrentUsername liefert einen String, der als letztes Zeichen ein #0 hat, was ja das Ende eines Strings markiert. Also einfach das letzte Zeichen von GetCurrentUsername verwerfen, dann sollte es gehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function GetCurrentUserName: string; const cnMaxUserNameLen = 254; var sUserName: string; dwUserNameLen: DWORD; begin dwUserNameLen := cnMaxUserNameLen-1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen-1); Result := sUserName; end; |
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
mexx 
      
Beiträge: 1183
|
Verfasst: Fr 01.06.07 15:51
Es geht, danke!!! Ich wusste das nicht mit dem Ende eines Strings. Hattes aber schon geahnt und mir die Länge des Strings ausgeben lassen, der immer eins mehr war, als in Wirklichkeit.
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 01.06.07 21:23
Alternativ kannst Du auch die Funktion Trim verwenden ... Die entfernt alle undruckbaren Zeichen am Anfang und Einde eines Strings ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|