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: Fr 30.01.04 19:32 
Hier handelt es sich nicht und die Dateierweiterung die zurückgegeben wird (das geht mit ExtractFileExt), sondern um den Typ allgemein. Zum Beispiel ist der Programme-Ordner vom Typ her Dateiordner. Config.sys ist eine Systemdatei. Autoexec.bat ist eine Stapelverarbeitungsdatei für MS-DOS. Dieser Tipp zeigt also um was für einen Typ sich bei der Datei handelt; so wie es auch der Explorer macht.

Die Funktion erwartet ein Parameter:
  • FileName, also der Name der Datei

Ergebnis ist ein String mit der Typbezeichnung. Gibt es keinen registrierten Typ, dann wird eine allgemeine Bezeichnung zurückgegeben (z.B. "Datei BMK" bei der Erweiterung "BMK" ). Wird die Datei nicht gefunden oder es gibt sonnst ein Fehler, dann wird ein Nullstring (#0) zurückgeliefert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
uses
  ShellApi;

function GetFileTypeName(const FileName: String): String;
var
  sfi: TSHFILEINFO;
begin
  if SHGetFileInfo(PChar(FileName), 0, sfi, SizeOf(sfi), SHGFI_TYPENAME) <> 0
    then Result := sfi.szTypeName
    else Result := #0;
end;


Beispiele:

Hier wird ein Ordner als Dateiname angegeben. Es sollte "Dateiordner" zurückkommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetFileTypeName('c:\Programme')); 
end;


Hier wird die AutoExec.bat angegeben. Es sollte "Stapelverarbeitungsdatei für MS-DOS" zurückkommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetFileTypeName('c:\autoexec.bat')); 
end;


Als letztes noch die System.1st (sie ist versteckt). Da die "1st" Erweiterung nicht registriert ist, kommt die allgemene Typenbezeichnung "Datei 1st" zurück:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetFileTypeName('c:\System.st')); 
end;

_________________
Popov