AGB  ·  Datenschutz  ·  Impressum  







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

Eigener Dateityp - aber WIE?

Ein Thema von Stanlay Hanks · begonnen am 23. Apr 2003 · letzter Beitrag vom 21. Feb 2004
Antwort Antwort
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#1

Eigener Dateityp - aber WIE?

  Alt 23. Apr 2003, 20:24
Hallo zusammen. Immer öfter fällt mir auf, d.h. ich lese im Forum oder wo anders, dass man sich zu dem und dem Zweck einfach einen eigene Dateityp überlegen soll. Das hört sich so leicht an, aber ich kann mir nicht vorstellen, dass zu einem eigenen Dateiformat nur das Ändern der Endung gehört. Wenn ich in eine Datei einfach was schreibe, diese dann abspeichere (z.b. mit der Endung *.mf = MeinFormat), und die dann im Texteditor öffne, ist es das gleiche, als ob ich eine Textdatei öffne. Aber eigentlich soll doch ein eigener Datentyp nur mit dem eigenen Programm (order kompatiblen) geöffnet werden können. Also, wie würdet ihr einen neuen/eigenen Datetyp definieren, bzw. erzeugen?

Bis bald, man liest sich. Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 23. Apr 2003, 21:51
Such mal im Forum nach Registry und Datei - dazu gibt es schon mehrere Threads. Um einen Dateityp mit Deinem Programm zu verknüpfen müssen die entsprechenden Einträge in der Registry im Schlüssel HKCR vorgenommen werden.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Specialwork
Specialwork

Registriert seit: 10. Jan 2003
Ort: Schwall
71 Beiträge
 
Delphi 8 Professional
 
#3
  Alt 23. Apr 2003, 21:55
Hallo Stanley,

Es kommt schon darauf an, ob Du Deine Daten im Binär- oder Textformat abspeicherst.
Beide Formate kannst Du ohne Weiteres mit Deinem oder kompatibelen Programmen auslesen. Ziel einer exklusiven Erweiterung ist es, eine Datei und dessen Inhalt auf einen Blick erkennen und einem Programm zuordnen zu können.

Solltest Du Dein Programm vermarkten wollen, dann ist es im wirtschaftlichen Sinne ratsam, Deine Daten binär zu speichern. Ein passendes Beispiel wäre zum Beispiel das PDF oder Word (DOC) Format. Hier ist das kaum zu entschlüsselnde Binärformat sicherlich im Interesse der Hersteller gewesen, um daraus Profit zu erzielen.

Man sollte also abwiegen, ob man die Daten mit einem herkömmlichen Texteditor ändern (z.B. XML, INI, RTF, HTML), was ziemlich komfortabel aber fehleranfällig ist, oder die Daten exklusiv mit Deinem Programm bearbeiten soll.

Das Binärformat sollte man unbedingt dann verwenden, wenn die Daten schützenswert sind. (z.B. Passwörter, EMails, usw.)

Gruß, Tom
Thomas van Veen
Es gibt keine Probleme, nur Lösungen, auf die man nicht gleich kommt !
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#4
  Alt 24. Apr 2003, 00:47
Hi,

@Specialwork: Versteh das nich so richtig. Wie meinst du das mit "binär" abspeichern? Wandelst du irgendwie all deine Daten in integer- Werte um, rechnest sie dann in einen Binären code um und speicherst diesen dann als Text ab oder wie?

Ich mach das mit eigenen Dateitypen meistens so:
Erstmal gucke ich was ich in meinem Programm für einen Datentyp brauche, den ich verwalten muss bzw. welches Format die Daten haben sollten die ich verwalten muss.
Dann deklrarier ich mir einen Typ, z.B. für eine Adressverwaltung:
Delphi-Quellcode:
type
     adresstyp = record
                   name, strasse, ort: string;
                   hausnr, tel, fax: integer;
                 end;
Ok, in dem Beispiel sieht man jetz nich wirklich den Sinn von eigenen Typen, weil ich für all diese Daten eigentlich nur Strings brauche, aber so könnte das z.B. aussehen.
Dann kann ich irgendeine Variable deklarieren, die dieesen Typ hat; bei Adressverwaltungen solltes dann aber schon ein Array sein:
adressen: array[0..99] of adresstyp; Ne Wertezuweisung kann dann so aussehen:
adressen[0].name= 'S - tefano'; So, aber jetz kommt eigentlich ers das für dich eher wesentliche.
Naja, oder auch nicht. Denn den Typ haben wir ja oben schon deklariert, und wir können auch einen Array erzeugen und ihn mit Daten füllen. Diese Daten sind dann schon so "formatiert" wie wir es oben haben wollten.
Wir haben also quasi schon fast ne Datei, aber noch isses nur n Array der diesen Typ hat, den wir noch abspeichern müssen.
Sowas geht dann (so mach ich es jedenfalls) mit Files.

Delphi-Quellcode:
procedure abspeichern;
var
 f: file of adresstyp;{die Variable steht im Programm stellvertretend für ne Datei}
 i: integer;{Schleifenzähler der gleichzeitig Index im Array angibt}
begin
 assignfile(f, 'dateiname.adr'); {der Variable f einen Dateinamen zuweisen}
 {$I-} {Compilerschalter, weiß nich mehr warum der sein muss, aber ich bin mir ziemlich sicher dass der muss... :lol: }
 reset(f);
 if ioresult= 0 then begin {wenn kein Fehleraufgetreten is, dann...}
  for i:= 0 to arlength do begin {arlength soll der Index des letzten Eintrags im Array ein}
   write(f, adressen[i]); {in der Schleife werden die einzelnen Datensätze des Arrays in die Datei geschrieben, sind ja nur aneinandergereihte Variablen}
  end;
  closefile(f); {Datei wieder schließen, um anderen Programmen den Zugriff zu ermöglichen}
  {$I+}
 end;
end;
Hm, irgendwas hab ich bestimmt falsch gemacht, weil lange nich mehr sowas gemacht, aber das is eigentlich alles was du für ein eigenes Dateiformat brauchst.
OK, auslesen solcher Dateien wär ja auch nich schlecht, aber dazu bin ich jetz mittlerweile doch schon zu müüüde...

Hoffe mal dass es überhaupt das war was du wissen wolltest...

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#5
  Alt 24. Apr 2003, 08:08
Vielen Dank. Es ist auf jeden Fall interessant. Ich muss mir das alles jetzt noch mal durchlesen. Bis dann man liest sich. Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#6
  Alt 24. Apr 2003, 08:30
KLICK

Delphi-Quellcode:
uses Registry;
...
function InstallExt(Extension, ExtDescription, FileDescription,
                    OpenWith, ParamString: String; IconIndex: Integer): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
     begin
      RootKey := HKEY_CLASSES_ROOT;
      OpenKey(Extension, True);
      WriteString('', ExtDescription);
      OpenKey('\' + ExtDescription, True);
      WriteString('', FileDescription);
      OpenKey('DefaultIcon', True);
      WriteString('', OpenWith + ','+IntToStr(IconIndex));
      OpenKey('\' + ExtDescription + '\Shell\Open\Command', True);
      WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
     end;
   Result := True;
  except
   Result := False;
  end;
  Reg.Free;
end;
function UnInstallExt(Extension, ExtDescription: String): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
     begin
      RootKey := HKEY_CLASSES_ROOT;
      DeleteKey(Extension);
      DeleteKey('\' + ExtDescription);
     end;
   Result := True;
  except
   Result := False;
  end;
  Reg.Free;
end;
...
 InstallExt('.xyz', 'XYZ Datei', 'Tolles Programm', Application.ExeName, '%1',0);
 UnInstallExt('.xyz', 'XYZ Datei');
von Johannes Tränkle

***
Gruss Mirilin
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#7
  Alt 24. Apr 2003, 08:40
Suppi. Vielen Dank. Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von Specialwork
Specialwork

Registriert seit: 10. Jan 2003
Ort: Schwall
71 Beiträge
 
Delphi 8 Professional
 
#8

Binärformat

  Alt 24. Apr 2003, 09:53
Hallo S - tefano

Es gibt zwei gängige Methoden, Daten in einer Datei abzulegen

a) ASCII Format (z.B.: Texte)
b) Binärformat (z.B.: Klassen, Arrays)

Gruß, Tom
Thomas van Veen
Es gibt keine Probleme, nur Lösungen, auf die man nicht gleich kommt !
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#9
  Alt 24. Apr 2003, 11:25
Hi,

ahso, also is mein obiges Beispiel im Binärformat.
Und auch thx @ Mirilin, sowas hab ich noch gesucht.

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
p3ps1

Registriert seit: 16. Dez 2003
Ort: Recklinghausen
87 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Eigener Dateityp - aber WIE?

  Alt 21. Feb 2004, 17:23
Ich habe eben mal in der Suche nach einem Post zum erstellen eines eigenen Dateityps gesucht.
Bin natürlich auch fündig geworden.

Jetzt habe ich sofort den Code von Mirilin ausprobiert - klappt, bis auf eine Kleinigkeit :
Wenn ich einen dateityp entfernen will, passiert dies zwar, aber in der Registry steht er trotzdem noch, man kann ihn allerdings nicht öffnen(er ist leer). Aslo muss man ihn manuell entfernen.
-------> warum?
Es geht schief was nur schiefgehen kann
  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 07: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