Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mi 04.02.04 03:06 
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:

ausblenden 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:
//Windowspfad
function GetWinDir: String;
var
  Dir: array [0..MAX_PATH+1of Char;
begin
  GetWindowsDirectory(Dir, MAX_PATH);
  Result := String(Dir);
end;

//Systempfad
function GetSysDir: String;
var
  Dir: array [0..MAX_PATH+1of Char;
begin
  GetSystemDirectory(Dir, MAX_PATH);
  Result := String(Dir);
end;

//Temp-Pfad
function GetTempDir: String;
var
  Dir: array[0..MAX_PATH+1of Char;
begin
  GetTempPath(SizeOf(Dir), Dir);
  Result := String(Dir);
end;


Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetWinDir);
  ShowMessage(GetSysDir);
  ShowMessage(GetTempDir);
end;

_________________
Popov