AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei Pointer auf Array of Byte

Ein Thema von ryLIX · begonnen am 1. Mär 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Hilfe bei Pointer auf Array of Byte

  Alt 1. Mär 2010, 18: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?
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Hilfe bei Pointer auf Array of Byte

  Alt 1. Mär 2010, 19:17
Zitat von ryLIX:
Hi,
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?
Dann erhöhe doch den Pointer entsprechend.
Inc(AData,5)
Dann zeigt AData auf den zweiten String.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: Hilfe bei Pointer auf Array of Byte

  Alt 1. Mär 2010, 19:26
Zitat von Amateurprofi:
Zitat von ryLIX:
Hi,
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?
Dann erhöhe doch den Pointer entsprechend.
Inc(AData,5)
Dann zeigt AData auf den zweiten String.
Ich musste grad feststellen das ich den Fehler an der falschen Stelle gesucht habe.
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?
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Hilfe bei Pointer auf Array of Byte

  Alt 1. Mär 2010, 22:57
Zitat von ryLIX:
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?
Pos findet auch #0, zumindest unter Delphi 2005.
Ich weiß aber nicht, ob unter Delphi 2009 die gleiche Routine werkelt..
Probiers doch einfach mal aus.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
ryLIX

Registriert seit: 16. Nov 2008
Ort: Westoverledingen
264 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: Hilfe bei Pointer auf Array of Byte

  Alt 1. Mär 2010, 23:03
Ich hab eine passende Funktion hier im Forum gefunden.
Aber der Tip mit Inc hat mir auch shcon weiter geholfen.
Markus
Hamburflys, Scrubble-Fubble-Puff-Shake, Muffin-Purper-Gurk?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz