Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#65

Re: himXML (gesprochen himixML)

  Alt 1. Jun 2009, 16:48
hab das Projekt mal ein klein wenig aufgeräumt ...
mit immer mehr zusätzlichen Test-/Zusatzdateien wurde es in dem einem Verzeichnis langsam unübersichtlich

TSAXFile (früher TSAXParser) hat einen bekannten Bug
und zwar zählt die Levelindizierung falsch, weswegen in der zugehörigen Demo kein Ergebnis angezeigt wird.
(hab es jetzt nicht in der Demo so hingebogen, daß es da läuft, sondern werd' demächst die Parser-Funktion eh überarbeiten und mit der neuern Verson von TXMLFile abgleichen)

die letzen Änderungen
  • der Text im Post #1 wurde auch mal geupdatet
  • Erste Schritte in Richtung Abwärtskompatibilität wurden gewagt.
    - seit Einführung der Interfaces war das Projekt nichtmal mehr für D2006/TDE geeignet
    (siehe erwähntes Property-Problem in Post #1)
  • und theoretisch sollte sich die aktuelle Version auch bald als DLL-Version in älteren Delphi-Versionen nutzen lassen
  • TSAXParser in TSAXFile umbenannt (passend zu TXMLFile)
  • die öffentlichen Interfaces, wichtigsten Typen, sowie die "Hilfe" wurden in himXMLi.pas ausgelagert
  • hab auch die ganzen Interfaces etwas aufgeräumt/sortiert und vorallem die unterschiedliche Definitionen in den einzelnen Dateien auf einen einheitlichen Stand gebracht
  • .Data der Nodes wurde in .Text umbenannt
  • die Weiterleitungen in TXMLNode wurden überarbeitet
    und ebenso in das Hauptdokument eingefügt
    Delphi-Quellcode:
    alias TXMLNode TXMLFile

    .Attribute[] .Attributes.Values[] .RootNode.Attributes.Values[]
                   .Attributes[] .RootNode.Attributes[]
    .Node[] .Nodes.Node[] .RootNode.Nodes.Node[]
                   .Nodes[] .RootNode.Nodes[]
    .NodeNF[] .Nodes.NodeNF[] .RootNode.Nodes.NodeNF[]
    .NodeList[] .Nodes.NodeList[] .RootNode.Nodes.NodeList[]
    .NodeListNF[] .Nodes.NodeListNF[] .RootNode.Nodes.NodeListNF[]
    .AddNode() .Nodes.Add() .RootNode.Nodes.Add()
  • hab das ganze Projekt so geändert, daß alles als virtielle Objekte, Interfaces oder "Normal" kompiliert werden kann
  • für D2006/TDE und auch schon für ältere Versionen wurde TIndex, sowie die überladenen Default-Properties abschaltbar gestaltet

    also es läuft jetzt auch wieder unter TDE ... dieses kannte leider noch keine überladenen Default-Properties bei Interfaces
  • das Property LibVersion wurde in die Hauptklassen eingefügt und liefert ab nun die Version der Klassen
  • das Property PathDelimiter kam hinzu, jetzt kann die Pfadangabe in Windows- (\) oder Linux-Stil (/) erfolgen
  • passend dazu kam das Property FullPath hinzu, welches den Pfad des Nodes liefert
  • LoadFromFile und SaveToFile nutzen den Dateinamen aus dem Property FileName (dieses kann direkt beschrieben werden oder wird von LoadFromFile/SaveToFile gesetzt), wenn kein Dateiname angegeben wude,
    außerdem kann jetzt direkt mit .Create eine Datei geladen werden
  • ja und vor 'ner Weile kam halt noch ein "echter" SAXParser mit dazu, welchem die Dateigröße egal ist und der hier mal mit locker 20-30 MB/s die Testdateien einlaß (nicht mitgerechnet die Zeit für die programmseitige Verarbeitung der Daten)
  • ...

Dateien siehe Post #1


aktuelle Probleme:
  • Den Indexfehler in TSAXFile beheben
  • mir endlich mal eine wirklich brauchbare Lösung für die Deserialisierung von Objekten einfallen lassen
  • das große Problem mit der Speicher-/Objektfreigabe bei den Interfaces lösen
    - durch die vielen Kreuz und Rückverknüpfungen nicht so einfach
    - und mit der Standardverwaltung von TInterfacedObject hält sich alles gegenseitig ewig am Leben
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat