![]() |
'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Moin moin,
So mein Problem ist diesmal das ich eine Datei löschen will zu erst soll der Benutzername festgestellt werden. Bekomme ich auch alles gut hin. Aber ich verzweifel daran den Filename einzugeben.
Delphi-Quellcode:
Benutzername := GetUsername;
filename := 'C:\Users\'+ Benutzername'\neu\ddd.txt'; // Hier muss ein Fehler sein. Wie füge ich den den "Benuzernamen" mit in den Pfad ein? Kann eig. nur ein dummer Fehler von mir sein aber ich habe schon probiert und probiert aber bekomme es nicht hin. Deletefile(filename); |
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Wie wär's damit:
1. Schau dir die Zeile mal genau an. Fällt dir was auf? 2. Lies nochmal genau den Fehler, den Delphi ausgibt. 3. Schau dir die Zeile noch mal genau an. Fällt dir jetzt was auf? [edit] Ich gehe mal davon aus, dass doch nicht der offensichtliche Syntaxfehler gemeint war. :glaskugel: GetUsername ist eine API-Funktion und kennt Delphi-Strings gar nicht, weshalb sie auch keinen zurückgeben kann. Du musst stattdessen einen Zeiger auf einen ausreichend großen Puffer sowie die Länge des Puffers als ersten bzw. zweiten Parameter an die Funktion übergeben. Wenn du einmal kurz in der IDE F1 oder Strg+Shift+Space gedrückt hättest, wäre dir das auch aufgefallen. Beispiele zum korrekten Aufruf sollten sich hier im Forum finden lassen. [/edit] Abgesehen davon ist das nicht gerade der sicherste Weg, das Benutzerverzeichnis herauszufinden - der kann nämlich je nach Betriebssystemversion und persönlichen Einstellungen auch völlig woanders liegen. Um solche speziellen Pfade zuverlässig herauszufinden gibt es ![]() [edit]Glaskugel kaputt, und mein erster Gedanke war doch der richtige... :wall: [/edit] |
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Ne also das mit dem Benutzernamen hab ich hin bekommen dazu braucht man die Funktion:
Delphi-Quellcode:
als test hab ich auch gemacht label1.caption := Benutzernamen und dann kam da auch mein Benutzername!
function GetUsername: string;
var Buffer: array[0..255] of Char; Size: DWord; begin Size := SizeOf(Buffer); if not Windows.GetUserName(Buffer, Size) then RaiseLastOSError; SetString(Result, Buffer, Size - 1); end; Ich will ja nur wissen wie ich Benutzername richtig in diesen Pfad einbinde! mehr will ich gar nicht. Und ich will ja nicht wissen wo irgend welche Ordner sind ! |
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Ich schenke dir ein "+", aber erst morgen auspacken.
|
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
So danke das wollte ich nur wissen ^^ Man habe mir schon gedacht das , dass so ein dummer Fehler sein muss. Aber ich bin einfach nicht drauf gekommen xD
|
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Und was hat der Compiler für eine Fehlermeldung ausgegeben?
|
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Bevor du irgendwas komisches frickelst, schau dir wirklich, wie schon gesagt, mal
![]() Edit:
Delphi-Quellcode:
Um zum Benutzerprofil zu kommen, musst du vermutlich unten CSIDL_APPDATA durch $0028 ersetzen.
uses
ActiveX, ShlObj; function GetShellFolder(CSIDL: integer): string; var pidl: PItemIdList; SystemFolder: Integer; Malloc: IMalloc; begin Malloc := nil; Result := ''; SHGetMalloc(Malloc); if Malloc = nil then begin Exit; end; try SystemFolder := CSIDL; if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then begin SetLength(Result, MAX_PATH); if SHGetPathFromIDList(pidl, PChar(Result)) then begin SetLength(Result, Length(PChar(Result))); end else Result := ''; end; finally Malloc.Free(pidl); end; end; function PfadZuAnwendungsDaten: string; begin Dir := GetShellFolder(CSIDL_APPDATA); end; |
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Zum lezten mal ich bekomme das doch hin mit dem Benutzernamen !! Wo ist das zweite plus noch nicht gesezt hatte kann da ich brauche noch ein Operator oder Simicolen. Wo das zweite Plus da war ging alles super !
|
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Zitat:
Wenn du das so zusammenbaust, wie du es jetzt hast, dann schließt du schonmal kategorisch alle Benutzer < Vista aus, denn unter XP heißt das Verzeichnis nunmal "Dokumente und Einstellungen" bzw. "Documents and Settings". Und wer weiß, wie es in Windows 8 heißt? Es war also lediglich ein gut gemeinter Rat. Aber, bitte sehr. Manche Individueen müssen halt erst auf die Schnauze fallen, um zu lernen. Der Mensch ist eins davon... |
Re: 'C:\Users\'+ Benutzername'\neu\ddd.txt' geht nicht
Oke... Also hab ich das nun so verstanden das meine Funktion den Benutzernamen herauszufinden nur unter Vista geht und nicht unter XP? Naja wenn das so ist probiere ich mal den Vorschlag aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz