// Drei Möglichkeiten, den Namen der eigenen EXE abzufragen:

// Getestet mit D4 unter Win98

// Variante 1 (empfohlen; funktioniert auch ohne die Unit Forms) 
 
function ExeNameM(mitPfad: boolean): string; 
var 
  buffer: array[0..max_path - 1] of char; 
begin 
  SetString(result, buffer, GetModuleFileName(0, buffer, max_path)); 
  if not mitPfad then result := ExtractFileName(result); 
end; 
 
// Variante 2 (benötigt die Unit Forms) 
 
function ExeNameA(mitPfad: boolean): string; 
begin 
  result := application.exename; 
  if not mitPfad then result := ExtractFileName(result); 
end; 
 
// Variante 3 (alte Methode) 
 
function ExeNameP(mitPfad: boolean): string; 
begin 
  result := paramstr(0); 
  if not mitPfad then result := ExtractFileName(result); 
end; 
 
 
// Beispielaufruf 
 
procedure TForm1.Button3Click(Sender: TObject); 
begin 
  form1.caption := ExeNameM(false); 
end; 
 

// ------------------------------------------------------------------------- 
 
// Und hier eine Möglichkeit den Pfad aus einer DLL heraus anzugeben. Es wird 
// der Pfad der DLL und nicht der Pfad des aufrufenden Programms ermittelt. 
 
// Getestet mit D4 unter WinME 
 
library Project2; 
 
uses 
  windows, 
  SysUtils, 
  Classes; 
 
type buffer = array[0..max_path - 1] of char; 
 
// hiermit dermittelt die DLL ihren eigenen Standort 
 
function pfad: buffer; 
begin 
  GetModuleFileName(hinstance, result, max_path); 
end; 
 
// hiermit gibt die DLL ihren Standort nach außen weiter 
exports pfad; 
 
begin 
end. 
 
// Und so wird das Ganze dann im Programm aufgerufen: 
// Die DLL muß im Path oder im gleichen Ordner stehen. 
// Sollten mehrere DLLs gleichen Namens vorhanden sein, 
// wird zuerst die im Ordner des aufrufendenden Programms 
// bzw. die erste im Pfad gefunden. 

type buffx = array[0..max_path - 1] of char; 
 
function pfad: buffx; external 'Project2.dll'; 
 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
  showmessage(pfad); 
end; 


Zugriffe seit 6.9.2001 auf Delphi-Ecke