Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
RAD-Studio 2009 Pro
|
Hilfe bei Pointer auf Array of Byte
1. Mär 2010, 19:56
Hi,
ich bin durch Hilfe im Forum nun an einem Punkt angekommen wo mir irgendwie das Verständnis zu Pointern fehlt.
Es geht um einen Parser für Daten im little Endian Format.
Funktion:
function ParseData(ASize: Cardinal; AData: PByte; AArgs: AnsiString): string;
Aufruf:
ParseData(ABlock.Size, @ABlock.Data[0], GDefinitons[Index].DataFormat);
ABlock.Size ist die Größe des eingelesenen Blocks (feste Satzlänge in der Datei).
ABlock.Data ist ein Array of Byte.
GDefinitons.DataFormat enthält einen String welcher angibt welche Daten ABlock.Data von 0 bis ABlock.Size enthält.
Das könnten Daten im String, Byte, Word, DoubleWord oder LongWord sein.
Diese Daten sind dur NULL von einander getrennt. Sprich #0 Terminierte Strings usw.
Mein Problem liegt nun darin die Daten in ParseData so zu trennen das ich diese auch dementsprechend verarbeiten kann.
Wenn AData vom Typ PByte ist kann ich ja nicht über den Index des Arrays auf die Daten zugreifen.
Ich habe z.B. zwei Strings(AArgs = 'SS') in AData und ASize ist 10 dann enthält AData 2 Strings die jeweils 4 Zeichen + NULL sind.
Jetzt kann ich aber über SetString immer nur auf den ersten String zugreifen.
Wie bekomme ich den zweiten String bzw die folgenden Daten?
Markus Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
|