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.
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:
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:
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:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetFileTypeName('c:\System.st')); end; |