![]() |
Funktion für Entschlüsselung von Dateierweiterung
Hallo,
ich habe heute mal 'ne Function geschrieben die nicht die einfach Dateierweiterung ausgibt sonder wie diese heisst. Release: 11.12.05 Geschrieben für: Win32 | VCL Unterstützt 27 Dateitypen Verwendung: einfach die Function in den Code kopieren und bei z.B. Button1Click eingeben:
Delphi-Quellcode:
Wenn Ihr wollt könnt ihr noch Dateien Hinzufügen, aber nicht vergessen auc ganz unteneintragen damit die datei nicht doch als "Unbekannt" abgestempelt wird.
Label1.Caption:=GetFullExt(<Vollständiger Datiname>);
Hier die Function
Delphi-Quellcode:
function GetFullExt(const FileName: string): string;
var Ext: string; begin Ext:=ExtractFileExt(FileName); //Pictures if Ext='.jpg' then Result:='JPG / JPEG Bild'; if Ext='.jpeg' then Result:='JPG / JPEG Bild'; if Ext='.JPG' then Result:='JPG / JPEG Bild'; if Ext='.JPEG' then Result:='JPG / JPEG Bild'; if Ext='.ico' then Result:='Windows Symbol'; if Ext='.bmp' then Result:='Windows Bitmap'; if Ext='.gif' then Result:='GIF Bild'; if Ext='.tif' then Result:='Windows Foto Format'; if Ext='.xcf' then Result:='GIMP Bild'; //Texte if Ext='.doc' then Result:='Microsoft Word Dokument'; if Ext='.xls' then Result:='Microsoft Exel Tabelle'; if Ext='.txt' then Result:='Textdokument'; if Ext='.rtf' then Result:='Rich Text Format'; //Source if Ext='.pas' then Result:='Delphi Quellcode'; if Ext='.dfm' then Result:='Delphi Formular Datei'; if Ext='.dpr' then Result:='Delphi Projekt' if Ext='.bdsproj' then Result:='Borland Developer Studio Project File'; if Ext='.dcu' then Result:='Delphi Compilierte Unit'; if Ext='.res' then Result:='Ressource Datei'; if Ext='.cs' then Result:='C# Source File'; if Ext='.bat' then Result:='Stapelverarbeitungsdatei für MS-DOS'; //Other Files if Ext='.exe' then Result:='Ausführbare Datei'; if Ext='.dll' then Result:='Dynamic Link Library / Programmbibliotek'; if Ext='.eml' then Result:='Internet E-Mail Nachricht'; if Ext='.hlp' then Result:='Hilfedatei' if Ext='.ini' then Result:='Konfigurations einstellung'; if Ext='.log' then Result:='"Logbuch"-Datei'; if Ext<>'.jpg' then if Ext<>'.jpeg' then if Ext<>'.ico' then if Ext<>'.bmp' then if Ext<>'.gif' then if Ext<>'tif' then if Ext<>'.JPG' then if Ext<>'.JPEG' then if Ext<>'.doc' then if Ext<>'.xls' then if Ext<>'.txt' then if Ext<>'rtf' then if Ext<>'.exe' then if Ext<>'.dll' then if Ext<>'.pas' then if Ext<>'.dfm' then if Ext<>'.dpr' then if Ext<>'.bdsproj' then if Ext<>'.dcu' then if Ext<>'.res' then if Ext<>'.cd' then if Ext<>'.bat' then if Ext<>'.xcf' then if Ext<>'.eml' then if Ext<>'.hlp' then if Ext<>'.ini' the nif Ext<>'.log' then Result:='unbekannte Dateierweiterung'; end; |
Re: Funktion für Entschlüsselung von Dateierweiterung
Hallo Robin,
Microsoft gibt zu Windows ab und an einen Style Guide als Buch heraus. Für das Einbinden von Dateien in Windows ist der 95-er Style Guide maßgebend. Das Buch heißt "Die Windows-Oberfläche - Leitfaden zur Softwaregestaltung" ISBN 3-86063-226-4. Darin ist dann beschrieben, wie man so etwas macht:
Delphi-Quellcode:
Wenn du diese Routine aufrufst, dann erhältst du für jede registrierte Erweiterung den hinterlegten TypeName.
uses
Registry; function ExtToTypeName(ref: string): string; var reg: TRegistry; begin reg := TRegistry.Create(); Result := ''; reg.RootKey := HKEY_CLASSES_ROOT; if reg.OpenKeyReadOnly(ref) then begin Result := reg.ReadString(''); reg.CloseKey; if Pos('.', ref) = 1 then Result := ExtToTypeName(Result); end; reg.Free; end;
Delphi-Quellcode:
Freundliche Grüße vom marabu
ShowMessage(ExtToTypeName('.txt'));
|
Re: Funktion für Entschlüsselung von Dateierweiterung
Hab mir schon gedacht das es eine einfachere Variante gibt, danke für den Hinweis. Aber wenn man Dateien bei seiner Anwendung eine eigene bezeichnung geben will kann man meine Function benutzen.
|
Re: Funktion für Entschlüsselung von Dateierweiterung
Hallo Robin,
Solch eine IF-Verschachtelung ist nicht wirklich sinnvoll und übersichtlich. Wenn es wirklich mal nicht anders geht, dann mach doch zum Beispiel folgendes...
Delphi-Quellcode:
hier wird nur solange noch weiter verglichen, bis ein Treffer gefunden wurde.
if A = B then
Result:='' else if A = C then Result:='' else if A = D then Result:='' : : Danke marabu für den Registry-Hinweis, so ist es natürlich am sinnvollsten. Wenn man aber mal solch eine Struktur wie sie Robin vorgeschlagen hat braucht, dann kann man das etwas eleganter über ein konstantest Array lösen.
Delphi-Quellcode:
So ist eine Erweiterung noch sehr einfach möglich. Robin bei deinem Beispiel hast du gleich nach dem ersten Typ aufgegeben auch noch gross/klein zu unterscheiden. Bei meinem Vorschlag braucht man nur noch an einer Stelle einmal etwas definieren, dass dann für alle Inhalte im Array gilt.
type
TTyp = (tNone, tPictures, tTexte, tSource, tOtherFiles); TMyResult = record Endung:string; Beschreibung:string; Typ:TTyp; end; : : function GetFullExt(const FileName: string): TMyResult; type TBeschreibung = record A:string[7]; B:TTyp; C:string; end; const INFOS:array[1..25] of TBeschreibung = ( (A: 'jpg'; B:tPictures; C:'JPG / JPEG Bild'), (A: 'jpeg'; B:tPictures; C:'JPG / JPEG Bild'), (A: 'ico'; B:tPictures; C:'Windows Symbol'), (A: 'bmp'; B:tPictures; C:'Windows Bitmap'), (A: 'gif'; B:tPictures; C:'GIF Bild'), (A: 'tif'; B:tPictures; C:'Windows Foto Format'), (A: 'xcf'; B:tPictures; C:'GIMP Bild'), (A: 'doc'; B:tTexte; C:'Microsoft Word Dokument'), (A: 'xls'; B:tTexte; C:'Microsoft Exel Tabelle'), (A: 'txt'; B:tTexte; C:'Textdokument'), (A: 'rtf'; B:tTexte; C:'Rich Text Format'), (A: 'pas'; B:tSource; C:'Delphi Quellcode'), (A: 'dfm'; B:tSource; C:'Delphi Formular Datei'), (A: 'dpr'; B:tSource; C:'Delphi Projekt'), (A: 'bdsproj'; B:tSource; C:'Borland Developer Studio Project File'), (A: 'dcu'; B:tSource; C:'Delphi Compilierte Unit'), (A: 'res'; B:tSource; C:'Ressource Datei'), (A: 'cs'; B:tSource; C:'C# Source File'), (A: 'bat'; B:tSource; C:'Stapelverarbeitungsdatei für MS-DOS'), (A: 'exe'; B:tOtherFiles; C:'Ausführbare Datei'), (A: 'dll'; B:tOtherFiles; C:'Dynamic Link Library / Programmbibliotek'), (A: 'eml'; B:tOtherFiles; C:'Internet E-Mail Nachricht'), (A: 'hlp'; B:tOtherFiles; C:'Hilfedatei'), (A: 'ini'; B:tOtherFiles; C:'Konfigurations einstellung'), (A: 'log'; B:tOtherFiles; C:'"Logbuch"-Datei') ); var Ext: string; i:integer; abbruch:boolean; begin Ext:=lowercase(ExtractFileExt(FileName)); i:=low(INFOS); abbruch:=false; while (i <= high(INFOS)) and not abbruch do begin abbruch:=(Ext = INFOS[i].A); if not abbruch then inc(i); end; if abbruch then begin Result.Endung:=INFOS[i].A; Result.Typ:=INFOS[i].B; Result.Beschreibung:=INFOS[i].C; end else begin Result.Endung:=''; Result.Typ:=tNone; Result.Beschreibung:='unbekannte Dateierweiterung'; end; end; Naja, ist nur ein Vorschlag. MfG Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz