![]() |
Hilfe bei Pointer auf Array of Byte
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:
Delphi-Quellcode:
Aufruf:
function ParseData(ASize: Cardinal; AData: PByte; AArgs: AnsiString): string;
Delphi-Quellcode:
ABlock.Size ist die Größe des eingelesenen Blocks (feste Satzlänge in der Datei).
ParseData(ABlock.Size, @ABlock.Data[0], GDefinitons[Index].DataFormat);
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? |
Re: Hilfe bei Pointer auf Array of Byte
Zitat:
Inc(AData,5) Dann zeigt AData auf den zweiten String. |
Re: Hilfe bei Pointer auf Array of Byte
Zitat:
Beim debugging grad hab ich gesehen das mein durch SetString erzeugter String beide Strings getrennt durch #0 enthält z.B. 'Foo'#0'Bar'. Jetzt sollte ich das ganze doch mit Pos() und Copy() zerlegen können oder erkennt Pos() #0 nicht? |
Re: Hilfe bei Pointer auf Array of Byte
Zitat:
Ich weiß aber nicht, ob unter Delphi 2009 die gleiche Routine werkelt.. Probiers doch einfach mal aus. |
Re: Hilfe bei Pointer auf Array of Byte
Ich hab eine passende Funktion hier im Forum gefunden.
Aber der Tip mit Inc hat mir auch shcon weiter geholfen. :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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