Hier drei Funktionen mit denen man den Windowspfad, den Windowssystempfad und den Pfad zum tempoirär Verzeichnis erhält.
Zwar findet man im Internet genug Funktionen mit denen man diese drei wichtigen Verzeichnisse erhällt, aber alle haben immer zwei Fehler im Code. Allerdings ist nicht zu erwarten, daß irgendwann einer der Fehler eine Rolle spielen wird. So wird z.B. drauf hingewiesen, daß der Puffer immer länger als MAX_PATH sein sollte. Der Grund ist der, daß das Ergebnis immer mit einem Nullzeichen beendet wird. Somit ist bei allen die MAX_PATH angeben ein Fehler im Code. Allerdings wird der Fehler erst dann kritsch, denn einer seinem Windowsverszeichnis ein ca. 260 langen Ordnernamen spendiert
. Da das nicht zu erwarten ist, wird der Fehler wahrscheinich nie eine Rolle spielen. Der ander Fehler ist, daß die API-Funktionen die tatsächliche Anzahl der Zeichen, ohne das abschließende Nullzeichen zurückliefern. Allerdings sind meine drei Funktionen in der Hinsicht auch nicht korrekt. Erstens, weil es kaum zu erwarten wird, daß einer der Verzeichnisse nicht existiert und zweitens, weil es einfacher ist so die Funktionen einzusetzten.
Hier die Funktionen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| function GetWinDir: String; var Dir: array [0..MAX_PATH+1] of Char; begin GetWindowsDirectory(Dir, MAX_PATH); Result := String(Dir); end;
function GetSysDir: String; var Dir: array [0..MAX_PATH+1] of Char; begin GetSystemDirectory(Dir, MAX_PATH); Result := String(Dir); end;
function GetTempDir: String; var Dir: array[0..MAX_PATH+1] of Char; begin GetTempPath(SizeOf(Dir), Dir); Result := String(Dir); end; |
Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetWinDir); ShowMessage(GetSysDir); ShowMessage(GetTempDir); end; |