Einzelnen Beitrag anzeigen

Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Datei mit RegEx parsen - wie generell vorgehen? Performa

  Alt 11. Mai 2009, 08:10
Zitat von worker:
Hat denn niemand eine Meinung dazu? Mich würde es auch interessieren, wie Ihr da so vorgeht.
Hallo,

ich programmiere mir dazu eine Klassenhierarchie, z.B. für die schon ziemlich komplexe Definition einer Leiterplatte. Dazu gibt es ein Root-Objekt, und die Datei fängt ja auch mit einem Objekt "PCB" an. Wenn ich dem Rootobjekt einen Datenamen übergebe, wird die Datei gelesen - das Objekt PCB weiss welche Unterobjekte (Assignments, Library, Components...) enthalten sein können: kommt da Library, so wird ein Unterobjekt angehängt, das die Subklasse Library hat und seinerseits die Datei weiterliest und z.B. Footprint findet, dann wird ein Objekt Footprint angehängt usw. usw.

Jede Subklasse weiss, was an Daten enthalten sein kann, z.B. kann ein Footprint beliebig viele Pads enthalten und diese jeweils X und Y Koordinaten, Drehwinkel, Bohrdurchmesser usw. Ein Drehwinkel ist dabei ein generisches Objekt (weil er in der Textdatei auch immer gleich formatiert ist) und hat in dem Fall als Parent eben das Pad. Unbekannte Definitionen werden bis zum Ende gelesen und ignoriert, das erleichtert die Entwicklung und macht die Software sehr robust.

Langer Rede kurzer Sinn: Mit Root-Objekt und Assign einer Datei entsteht von selbst ein Object Tree, der die Leiterplatte komplett repräsentiert, auch wenn sie 100000 Details enthält. Dabei stecken Syntax und Semantik der Datei in der Klassenhierarchie, während sich die Struktur der Leiterplatte im Object Tree abbildet, den man anschliessend weiterverarbeitet. Hat sich auch als pflegefreundlich erwiesen, wenn z.B. bei den Bauteilen ein "Wert" zusätzlich definiert wird, so füge ich in der Subklasse Component dem Suchen nach Details den Case "Value" zu und dazu wird eine neue Subklasse Value definiert, die ihrerseits einen Text in Anführungszeichen einliest (Standardmethode) oder was auch immer.

Mehr anzuführen hat hier keinen Sinn, ist ja auch kein Delphi-Thema.

Gruss Reinhard
  Mit Zitat antworten Zitat