![]() |
eigene Dateierweiterung
hallo,
ich bin anfänger mit delphi aber eine frage lässt mich nicht in ruhe ... kann ich in pascal aus eigenen dateierweiterungen daten auslesen ?? kann mir jemand helfen ? MfG Ivan |
Re: eigene Dateierweiterung
Ja, das kannst du sogar aus jeder Datei, nicht nur mit eigenen Erweiterungen.
Lernst du mit einem Buch? Wenn ja, dann arbeite dich durch bis du zum Kapitel über Dateien kommst. Grüße |
Re: eigene Dateierweiterung
Hi!
Unter Windows kann jedem Dateityp eine Default-Aktion zugeordnet werden. Diese Aktion kann beispielweise durch einen Doppelklick auf eine Datei im Explorer ausgelöst werden. Normalerweise wird dann eine Anwendung gestartet, welche die angeklickte Datei öffnet. Bei Bilddateien ist dies meistens ein Bildbearbeitungsprogramm, bei Musikdateien ein entsprechender Player. Um eine Dateiendung für die Nutzung mit dem eigenen Programm zu registrieren, können Sie folgende Funktion einsetzen:
Delphi-Quellcode:
Die Funktion erwartet 6 Parameter:
function InstallExt(Extension, ExtDescription, FileDescription,
OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean; var Reg: TRegistry; begin Result := False; if Extension <> '' then begin if Extension[1] <> '.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey(Extension, True) then begin Reg.WriteString('', ExtDescription); if Reg.OpenKey('\' + ExtDescription, True) then begin Reg.WriteString('', FileDescription); if Reg.OpenKey('DefaultIcon', True) then begin Reg.WriteString('', Format('%s,%d', [OpenWith, IconIndex])); if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then begin Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString])); Result:=True; end; end; end; end; finally Reg.Free; end; end; end; "Extension" Dateiendung die Registriert werden soll "ExtDescription" Kurzbeschreibung, wofür die Abkürzung der Endung steht. "FileDescription" Bietet Platz für eine Beschreibung des Programmes mit dem geöffnet wird. "OpenWith" Hier muss der komplette Pfad zu der Anwendung übergeben werden, die mit der Endung verknüpft werden soll. "ParamStr" Enthält mögliche Parameter und deren Schreibweise. (z.B. "%1" um auch Pfadangaben mit Leerzeichen zu übergeben) "IconIndex" Dem Parameter kann ein entsprechender Index übergeben werden, der angibt, welches Icon für die Anzeige im Explorer verwendet werden soll. Der Index bezieht sich auf die Icons der verknüpften Anwendung. Ein Beispielaufruf könnte so aussehen:
Delphi-Quellcode:
Ist beim Aufruf dieser Funktion die Dateiendung bereits mit einem anderen Programm verknüpft, wird dies überschrieben.
procedure TForm1.Button1Click(Sender: TObject);
begin if InstallExt('.xyz', 'XYZDatei', 'Tolles Programm', ParamStr(0), '"%1"',0) then Showmessage('Dateiendung konnte erfolgreich registriert werden.'); end; Um die Registrierung wieder zu entfernen rufen Sie folgende Funktion auf, der als Parameter die Dateiendung übergeben werden muss. Bei Erfolg wird "True" zurück gegeben.
Delphi-Quellcode:
Vorsicht! Dabei wird eine evtl. zuvor existierende Verküpfung nicht wiederhergestellt, so das Windows die Datein nicht mehr automatisch öffnen kann!
function UnInstallExt(Extension: String): Boolean;
var Reg: TRegistry; Description: String; begin Result := False; if Extension <> '' then begin if Extension[1] <> '.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.KeyExists(Extension) then begin Reg.OpenKey(Extension, false); Description:=Reg.ReadString(''); Reg.CloseKey; if Reg.KeyExists('\'+Description) then Result:=Reg.DeleteKey(Extension) and Reg.DeleteKey('\' + Description); end; finally Reg.Free; end; end; end; Beim Aufruf der eigenen Anwendung nach einem Doppelklick auf die entsprechende Datei,wird dem Programm der komplette Dateiname und Pfad der zu öffnenden Datei als Parameter übergeben. Dieser Parameter muss nur noch ausgewertet werden. Im folgenden Beispiel wird zunächst geprüft, ob ein Parameter übergeben wurde. Ist dies der Fall wird getestet, ob es sich bei dem Parameter um eine existierende Datei handelt, die dann auch geöffnet wird:
Delphi-Quellcode:
Viele Grüße,
procedure TForm1.FormCreate(Sender: TObject);
begin If (ParamCount>0) and (FileExists(ParamStr(1))) then Memo1.Lines.LoadFromFile(ParamStr(1)); end; Chris PS: Der Text stammt nicht von mir. Hab' ihn aus dem "Easy Helper" |
Re: eigene Dateierweiterung
hey danke ...
nein ich lerne nicht mit einem buch. wir haben das jetzt in der schule und der lehrer ist einfach zu langsam für mich ^^ na ja danke vielmals !!! |
Re: eigene Dateierweiterung
Moin Chris,
diese, fehlerhafte, InstallExt-Routine habe ich hier doch vor kurzem schon einmal gesehen... ;-) Zu jedem OpenKey gehört auch ein CloseKey. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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