Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigenes Dateiformat (https://www.delphipraxis.net/155442-eigenes-dateiformat.html)

Coder 23. Okt 2010 18:13

Delphi-Version: 5

Eigenes Dateiformat
 
Hallo,


und zwar möchte ich mein von mir selbst entwickeltes Dateiformat
(jaaa, lobt mich ! :D) wieder auslesen.

Ich hab nämlich nicht bedacht, wie man da vorgehen könnte.
Dämlicherweise hab ich schon einige tausend Einträge derart gespeichert.

Und zwar handelt es sich dabei um etwa folgende Struktur:

Code:
<Name>
Karl Heinz
<Adresse>
 Im weiten Feld 23
 Zimmer 3
 79856 Fritzlar
<Telefon>
07985/ 865656
<Geb.datum>
14.07.1978
<Name>
also ich brauche eigentlich kein richtiges XML, da ich keine direkten Childs habe (so, wie ich das seh), dacht ich... zudem wollte ich Speicherplatz sparen.
Und da das alles nur so hintereinander eingelesen werden muß...
Einzig ist natürlich nur, daß ich einige Teile der Datensätze hab, die über mehrere Zeilen gehen können - so wie die Adresse.
und da ist der Knackpunkt. ..
wie weit les ich ein, bis ich auf den nächsten Tag stoße?
Oder wie handelt man eine solche [schon vorhandene Struktur ...eeeek, s.o.]
und liest die am besten wieder aus?

Luckie 23. Okt 2010 18:24

AW: Eigenes Dateiformat
 
Mach es entweder richtig mit XML oder nimm typisierte Dateien, wobei ich XML-Dateien vor ziehen würde.

Sir Rufo 23. Okt 2010 18:27

AW: Eigenes Dateiformat
 
Also entweder ein wildes Konstrukt bauen, was den ganzen Sermon wieder auseinanderfudelt

Oder die Daten in einem Record speichern und den Record in die Datei schreiben.
Das Auslesen geht dann so einfach wie das Schreiben und ist mit ein paar Zeilen Code erledigt.

Du hast die Wahl

vergessen 23. Okt 2010 20:36

AW: Eigenes Dateiformat
 
Brenn' Deine selbstvermurxte "Datenbank" sofort auf eine CD/DVD, bevor Du noch (viel) mehr Schaden in der "Datenbank" anrichtest! :oops:

Satty67 23. Okt 2010 20:41

AW: Eigenes Dateiformat
 
Selbst wenn er zukünftig ein anderes Datenformat verwendet, muss er ja die Daten wieder Einlesen um die zu konvertieren. Zumindest wenn es sich um einige tausend Einträge handelt, wie er geschrieben hat.

Ganz so schlimm ist das Einlesen aber nicht, einfach bei Auftreten eines <Tag> entsprechend reagieren. Also neuen Datensatz schalten bei <Name> und Datenfeld bei den anderen Tags.

Luckie 23. Okt 2010 20:42

AW: Eigenes Dateiformat
 
Was für eine Datenbank? Das ist strukturierter Datenmüll. :mrgreen:

Assarbad 23. Okt 2010 20:48

AW: Eigenes Dateiformat
 
Man nehme Perl oder eine andere beliebige Skriptsprache und konvertiere in ein Format welches mit Delphi leichter zu verarbeiten ist ;)

Alternativ kann man auch einen mit flex selbstgeschriebenen Scanner benutzen.

Ach ja, als Antwort auf Luckies Hinweis XML zu benutzen, möchte ich ein rotzfreches: "Benutz SQLite" einwerfen :mrgreen:

implementation 23. Okt 2010 20:59

AW: Eigenes Dateiformat
 
Leutchens? Für sowas ist Automatentheorie gut :stupid:
Man nehme einen Bei Google suchendeterministischen endlichen Automaten (DEA) und schon geht das ganze ganz einfach.

In etwa so:
Delphi-Quellcode:
type
  TReader = class
  private
    IsTag: Boolean;
    Values: TDictionary<string, string>;
    Current, Tag: string;
  public
    procedure Feed(c: Char);
    procedure Push;
  end;

procedure TReader.Push;
begin
  if IsTag then begin
    Tag := Current;
    Current := '';
  end else begin
    Values[Tag] := Current;
    Current := '';
  end;
end;

procedure TReader.Feed(c: Char);
begin
  if c = '<' then begin
    Push;
    IsTag := true;
  end else if c = '>' then begin
    Push;
    IsTag := false;
  end else Current := Current + c;
end;

...

for i := 1 to Length(dateialsstring) do
  Reader.feed(dateialsstring[i]);
Keine Garantie auf Richtigkeit, nur schnell zusammengetippt.

Luckie 23. Okt 2010 21:02

AW: Eigenes Dateiformat
 
Man beachte die Delphi Version: D3 Prof.

implementation 23. Okt 2010 21:04

AW: Eigenes Dateiformat
 
Zitat:

Zitat von Luckie (Beitrag 1057425)
Man beachte die Delphi Version: D3 Prof.

Demnach geht dann halt kein generisches Dictionary. Aber bei dem Beispiel ging es eher um das Prinzip des Automaten.

[ot]Mit Generics in Delphi habe ich sowieso noch nie gearbeitet. Bin zum FPC und dann zu C# gewechselt, bevor die kamen. Und beim FPC ham die 'ne andere Syntax. :stupid:[/ot]


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 Uhr.
Seite 1 von 3  1 23      

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