Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unbekanntes Dateiformat einlesen (https://www.delphipraxis.net/125273-unbekanntes-dateiformat-einlesen.html)

nicodex 19. Dez 2008 10:43

Re: Unbekanntes Dateiformat einlesen
 
Zitat:

Zitat von ryLIX
Code:
141200| 01 00300000  00000000 0100 D602 0001 00 01 01 68 00 |8B
          {00003000},00000000,0001,02D6,{}, (00 01), {68},{}

Das ist nicht ganz korrekt "zerlegt":
Code:
141200| 01 00300000 ,00000000 0100 D602 00   01 00 01  01 68  00  |8B
          {00003000},00000000,0001,02D6, {}, (00 01), {68}, {}
Es gibt also, wie schon erwähnt, eine (1 Byte) Längenangabe der Listen/Arrays (da ein Element nicht nur aus einem Wert bestehen muss, darf man den gesamten Ausdruck pro Element parsen/lesen).

ryLIX 19. Dez 2008 10:52

Re: Unbekanntes Dateiformat einlesen
 
Erkenne ich das richtig das dieses Byte markiert ob die in Klammern gehaltenen Variablen Werte enthalten bzw keine Werte enthalten?

nicodex 19. Dez 2008 10:56

Re: Unbekanntes Dateiformat einlesen
 
Zitat:

Zitat von ryLIX
Erkenne ich das richtig das dieses Byte markiert ob die in Klammern gehaltenen Variablen Werte enthalten bzw keine Werte enthalten?

Ja. Das Byte am Anfang eines {- oder (-Blocks gibt an, wie viele Elemente (können mehrere Werte sein!) in den Liste vorkommen.

{LWB} => Anzahl(Byte), Anzahl * [Wert1(LongWord), Wert2(Word), Wert3(Byte)]

ryLIX 19. Dez 2008 10:58

Re: Unbekanntes Dateiformat einlesen
 
Ah ok :)

Was meinst du zu der Schleife für die Fallerkennung?
HAb grad kein Delphi hier zum testen :/

nicodex 19. Dez 2008 10:59

Re: Unbekanntes Dateiformat einlesen
 
Zitat:

Zitat von ryLIX
Hab grad kein Delphi hier zum testen :/

Geht mir ähnlich. Habe aber auch keine Zeit, um es in C++ auszuprobieren ;)

ryLIX 19. Dez 2008 11:06

Re: Unbekanntes Dateiformat einlesen
 
Hehe.

Würde für AFormat[x] TStrings ausreichen?
Oder müsste das eher eine TStringList sein?

nicodex 19. Dez 2008 11:27

Re: Unbekanntes Dateiformat einlesen
 
Zitat:

Zitat von ryLIX
Würde für AFormat[x] TStrings ausreichen?
Oder müsste das eher eine TStringList sein?

Ich würde das viel generischer lösen (Interfaces für Dateiblock, Definitionen, Deklarationen, Datengruppen und Datenwerte). Ist halt "etwas" Arbeit, wird dann aber mit nützlichen Features belohnt (wie GetDataByName)...
Wenn man nur einen einzigen Wert braucht, kann man sich die Arbeit aber auch sparen (und alles prozedural runterprogrammieren).

ryLIX 19. Dez 2008 11:47

Re: Unbekanntes Dateiformat einlesen
 
Mit dieser Aussage verwirrst du mich gerade :gruebel:

Ich glaube ich mache mal Pause mit der Sache und versuche mal mehr über diese Sache zu lernen denn so bringt mich des nich viel weiter :|

Hast du eine Empfehlung hinsichtlich einer Seite oder eines Buches was sich mit dieser Art der Datenverarbeitung beschäftigt?
Denn den ganzen Tag mit so einem :wiejetzt: rum laufen stört mich.Und da mir dort einfach zuviele Grundlagen fehlen denke ich das ich erst einmal dort ansetzen sollte.

nicodex 19. Dez 2008 12:01

Re: Unbekanntes Dateiformat einlesen
 
Zitat:

Zitat von ryLIX
Mit dieser Aussage verwirrst du mich gerade :gruebel:

Da bist du nicht der erste (und wirst nicht der letzte sein).

Zitat:

Zitat von ryLIX
Ich glaube ich mache mal Pause mit der Sache und versuche mal mehr über diese Sache zu lernen denn so bringt mich des nich viel weiter :|

Da gibt es nicht viel zu lernen. Eher Erfahrungen zu sammeln (Fehler und Fehlentscheidungen gehören genauso dazu, wie Dinge, die sofort funktionieren ;)).

Zitat:

Zitat von ryLIX
Hast du eine Empfehlung hinsichtlich einer Seite oder eines Buches was sich mit dieser Art der Datenverarbeitung beschäftigt?

Nein. Die Analyse, bzw. der generelle Aufbau, der Daten ist ja soweit erledigt.
Jetzt stellt sich eher die Frage, welche Daten du auf welche Arten verwenden willst (ein Tool, welches nur einen Wert ändert, oder eher eine komplette Entwicklungsumgebung zur Bearbeitung und/oder Erstellung der Daten).
Wenn du dir darüber im Klaren geworden bist, dann kannst du auch entscheiden, in welcher Form (Schnittstellen, Klassen, Hilfsfunktionen) du die Daten lesen und/oder bearbeiten möchtest. Ohne Konzept brauchst du nicht anfangen :)

Zitat:

Zitat von ryLIX
Denn den ganzen Tag mit so einem :wiejetzt: rum laufen stört mich.Und da mir dort einfach zuviele Grundlagen fehlen denke ich das ich erst einmal dort ansetzen sollte.

Wir beide denken anders und haben unterschiedliche Erfahrungen. Wir würden bei gleicher Problemstellung, mit an Sicherheit grenzender Wahrscheinlichkeit, zu unterschiedlichen Lösungen kommen. Welche davon nun "besser" ist, ist Ansichtssache (jeder weitere wird eine weitere Meinung dazu haben) und eine Frage der Anforderungen und Umstände.
Das Problem ist eher, dass weder du noch ich in diesem Forum alle Gedanken und Eindrücke ausführlich darlegen können (ohne Romane zu schreiben). Mein vorhin genannter Lösungsansatz geht von Vermutungen aus (wie die Daten von Dir verwendet werden könnten), und ist somit nur eine Möglichkeit von vielen, die durchaus schlecht/ineffektiv für dein Vorhaben sein könnte.

Kurz: Wird es ein größeres Projekt, dann denke vorher über die Art und Weise der Datenhaltung und -verwaltung nach. Bei einem kleinen Projekt: Mach das es funktioniert - das reicht.

ryLIX 1. Mär 2010 14:57

Re: Unbekanntes Dateiformat einlesen
 
Ich hol den Thread noch mal wieder hoch.
Zwar habe ich noch ein wenig an dem Programm gearbeitet aber mit geringem Erfolg.

Jetzt bin ich beim Aufräumen wieder darauf gestoßen und wollt mich noch mal wieder ransetzten.

Ich hatte um die einzelnen Strukturen zu verarbeiten ein if/else KOnstrukt verwendet welches ich aber recht aufwendig finde.
Sprich
Delphi-Quellcode:
if AArgs = 'S' then
//Do something
else if AArgs = 'SS' then
//Do something else
[...]
Gibt es hier eine Lösung die übersichtlicher und leichter zu warten ist?

Dann hab ich eine Frage zu dem Pointer (PByte) dieser zeigt auf ein Array Feld (array of Byte).
Kann ich den Pointer wie ein Array behandeln oder muss ich dafür ein temporäres Array erstellen (lokales Array).
Denn ich müsste hier auf das Array zugrifen können um fest zustellen wann ein neuer Wert anfängt.
Denn die werden immer alle direkt nacheinander weitergeleitet.
Und wenn ASize(größe des aktuellen Feldes) = 10 und AArgs= 'SS'(2 Strings) ist sind 2 #0 Terminierte Strings enthalten aber via SetString() erhalte ich nur einen nicht beide Strings.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Seite 5 von 5   « Erste     345   

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