![]() |
Denkanstösse, tolerantes Lesen
Hallöchen,
ich brauche ein paar Denkanstösse. Ich lese Daten aus einer Datei in eine Stringlist und dann teile ich allen in Records/Arrays auf. Soweit noch oki. Diese Daten stammen von einer externen Hardware. Die natürlich, verschiedene Software-Versionen hat. Je höher die Version, desto mehr neue sachen sind in diesen "Datensätzen", also diese Dateien die ich dan bekomme zum bearbeiten. Hier mal ein kleines Beispiel:
Code:
Je nachdem wie hoch die Version ist, gibt es in diesem Datensatz noch andere Zeilen.
Lok(
ID: 8 Name: Dampfl.108 Adr: 8 Masse: 2 ) Beispiel:
Code:
Das heisst, bei zukünftigen Versionen, können noch mehr sachen drin stehen.
Lok(
ID: 8 Name: Dampfl.108 Adr: 8 Masse: 2 MasseFaktorBeschl: 3 MasseFaktorBrems: 2 ) Beim einlesen dieser Lok-Datensätze, läuft immer ein Zähler mit. Ich müsste jetzt also diese Zeilen einlesen und speichern, jedoch kann sie mein Programm noch nicht bearbeiten. Je nach Version. Ich brauche jetzt ein paar Ideen, wie man solche Probleme löst. Dachte an einem zusätzlichen Array, der nur diese Zeilen enthält und aufgrund der Zähler, müsste ich die Zeilen wieder an die richtigen Stellen wieder einfügen. Vielleicht habt Ihr noch Ideen wie man sowas überliest, bzw. speichert und an den richtigen Stellen wieder einfügt. Vielen Dank. Grüsse, Daniel :hi: |
Moin Daniel,
ich finde, dass es sich in so einem Falle empfiehlt, der Datei als ersten Satz einen Kennsatz zu verpassen, der dann die Version der Datei enthält. So könnte ein Programm leicht feststellen, ob es das Format unterstützt oder nicht. Der Einfachheit halber sollte das Satzformat nur am Ende erweitert werden, so dass aktuellere Programmversionen immer auch ältere Dateien verarbeiten können. |
Hallo Christian,
auf die Datei habe ich keinen Einfluss. Die kommt so aus diesem Gerät. Und ich muss die Datei bearbeiten und der Version entsprechend wieder schreiben. Schreibe ich nun zuviel oder zuwenig in diese Datei, so kann sich das Gerät zwar nciht aufhängen, aber die Daten die noch in dem Gerät drin sind, werden gelöscht. Es würde mir also ncihts bringen, wenn ich eine Versionsinformation hätte. Ich habe soeben mit dem Entwickler gesprochen. Es wäre kein Problem diess noch einzufügen, das bringt mir aber nur für neue Versionen was und nicht für aktuelle, oder alte, da bin ich und er machtlos. Grüsse, DAniel :hi: |
Moin Daniel,
Du könntest dann höchstens feststellen, dass die Datei keine Kennung hat und Dein Programm daraufhin anpassen. |
Kannst du dir nicht anhand von bestimmten Schlüsselwörtern selbst eine Versionsnummer erzeugen? und wenn du die Version erkannt hast, weist du wie sie gelesen und geschrieben werden muß.
Gruß Wolfgang |
Hi,
im mom. lese ich alles Zeilenweise aus. Zuerst in eine SL, dann wird erstmal alles Acsii to Ansi Konvertiert und wenn lese ich in der SL Zeile für Zeile und verteile schon bei jeder Zeile schon alles ins richtige Record/Array. Ich müsste so ne Art Ki machen, die sich zuerst die Datei mal durchliest und dann mir sagt welche Version das ist. Hmm... Ein anderes Problem. Wie soll ich den rausfinden, welche Version wie was gemacht hat? Dazu müsste man sich die Quellcodes des Gerätes anschauen, das sind zig tausende Zeilen, in C!, und dabei jede kleinigkeit rausfiseln um zu wissen was die V1.2 gemacht hat, oder die 1.64 usw. Wäre doch recht aufwendig. Grüsse, Daniel :hi: |
Moin Daniel B,
ist denn nicht dokumentiert, welche Version welches Dateiformat hat? |
Hallo Christian,
ist es bestimmt. Hab heute nicht dran gedacht nachzusehen. Aber ich bin zu dem Entschluss gekommen, nachdem ich mich heute 1 1/2 Stunden mit unseren Softi darüber unterhalten habe, in der ReadMe zu schreiben, dass das fehlerfreie benutzen, nur ab V1.64 möglich ist. Aufgrund der Bugs & Features, sollte sowieso mind. V1.64 installiert sein. Somit hab ich keine Probleme mit den nächsten Versionen und es wäre ein anreiz für manche Leute endlich mal upzudaten. Ich nehme es auch in kauf, das von 100 Usern, 3 deswegen verärgert sind. Aber wer mit den alten Verisonen noch spielt, ist eh selbst Schuld. Die updates gibt es immer im Netz, oder mann sie jederzeit Bestellen, oder sich zuschicken lassen. Höhere Versionen kann ich ja schon bereits be-/verarbeiten. Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz