Ich habe verschiedene 'Daten-Schlangen' in allokierten PByteArray's mit unterschiedlicher Länge.
Diese Array's enthalten jeweils sequenziell verschiedene Datenstrukturen mit wiederum unterschiedlicher Länge.
Jede Datenstruktur hat am Anfang einen TAG/Typ und dessen Länge, so dass ich jeweilige 'Blöcke' entsprechend herauslesen und interpretieren kann.
Das funktioniert auch so weit sehr gut, so lange ich mich in der Prozedur befinde, welche das allokierte Array übergeben bekommt.
Ich werte immer den TAG/Typ aus, lese die Daten entsprechend in meine Strukturen und 'hüpfe' dann zum nächsten TAG/Typ, bis das Array komplett gelesen ist.
Da es zig TAGs/Typen gibt / geben kann / geben wird, möchte ich gern die Auswertung in eine separate
Unit verlagern, welche bei Zeiten problemlos erweitert und 'universell' Daten verarbeiten kann.
Soll heissen: Ich möchte den Zeiger auf der aktuellen Position im 'Schlangen-Array' übergeben und die Funtkion soll dann folgendes machen:
- Übergabe eines Zeigers (var Data : pointer), ab dem folgende Daten zur Verfügung stehen:
- Data[0] ist der TAG/Typ, was zu verarbeiten ist. (Byte)
- Data[1] ist die Länge/Anzahl der zu verarbeitenden Daten
- Data[x..y] die Daten die ich auswerten / speichern möchte
- Rückgabe: Anzahl zu überspringender Bytes in 'Daten-Schlange' für den nächsten Aufruf (Data[1] + 1)
Eigentlich ganz einfach ?! ...
... aber irgendwie habe ich Probleme mit der Übergabe des Zeigers in den jeweiligen 'Daten-Schlangen' und dito Übernahme desselben in der Auswerte-Funktion.
TypeCast-Fehler oder nur 'dummes Zeug' im Ergebnis.
In der aktuellen Routine lese ich alles perferkt - aber in der externen Funktion, hier kommt nur Müll zurück.
Kann mir bitte jemand den / die entscheiden Tipp(s) geben .... Bitte ...