AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

eigene Dateierweiterung

Ein Thema von Crazy Ivan · begonnen am 30. Mär 2007 · letzter Beitrag vom 30. Mär 2007
Antwort Antwort
Crazy Ivan
(Gast)

n/a Beiträge
 
#1

eigene Dateierweiterung

  Alt 30. Mär 2007, 14:05
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
  Mit Zitat antworten Zitat
LizardKaiser

Registriert seit: 18. Feb 2007
Ort: Kassel
25 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: eigene Dateierweiterung

  Alt 30. Mär 2007, 14:14
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
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 31. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: eigene Dateierweiterung

  Alt 30. Mär 2007, 14:17
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:
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;
Die Funktion erwartet 6 Parameter:

"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:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if InstallExt('.xyz', 'XYZDatei', 'Tolles Programm', ParamStr(0), '"%1"',0) then
   Showmessage('Dateiendung konnte erfolgreich registriert werden.');
end;
Ist beim Aufruf dieser Funktion die Dateiendung bereits mit einem anderen Programm verknüpft, wird dies überschrieben.

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:
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;
Vorsicht! Dabei wird eine evtl. zuvor existierende Verküpfung nicht wiederhergestellt, so das Windows die Datein nicht mehr automatisch öffnen kann!

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:
procedure TForm1.FormCreate(Sender: TObject);
begin
 If (ParamCount>0) and
    (FileExists(ParamStr(1))) then
   Memo1.Lines.LoadFromFile(ParamStr(1));
end;
Viele Grüße,
Chris

PS: Der Text stammt nicht von mir. Hab' ihn aus dem "Easy Helper"
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Crazy Ivan
(Gast)

n/a Beiträge
 
#4

Re: eigene Dateierweiterung

  Alt 30. Mär 2007, 14:30
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 !!!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: eigene Dateierweiterung

  Alt 30. Mär 2007, 19:03
Moin Chris,

diese, fehlerhafte, InstallExt-Routine habe ich hier doch vor kurzem schon einmal gesehen...

Zu jedem OpenKey gehört auch ein CloseKey.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz