Integers, Strings, booleans in BinärDaten converertieren
Hallo
ich arbeite an folgendem Ich habe einen typ Deklariert
Delphi-Quellcode:
dieser besteht nur aus bytes.
Type TBinaryObject = array of byte;
ich will nun ein paar convertierungsfunctionen schreiben. Ich dachte an integers, strings(auch dynamische), booleans und Gleitkommazahlen. nun meine Frage: Wie kann ich z.b die 4 bytes aus einem integer wert auslesen? Wie geht das bei dynamischen Strings? da habe ich ja nur einen Zeiger. gruß snow PS:// geht das ohne Tstream oder einen Nachfahren von TStream zu verwenden? |
Re: Integers, Strings, booleans in BinärDaten converertieren
Zitat:
Chars sind ja Bytes also sind Strings kein Problem |
Re: Integers, Strings, booleans in BinärDaten converertieren
Es gibt da eine Prozedur namens Move:
Delphi-Quellcode:
Damit kannst du beliebige Daten durch die Gegend kopieren, zum Beispiel einen Int-Wert in ein Byte-Array:
procedure Move(const source; const dest; count: Integer);
Delphi-Quellcode:
Move(intWert, byteArray[offset], sizeof(integer));
|
Re: Integers, Strings, booleans in BinärDaten converertieren
Natürlich geht das ohne TStream. Und für Wertetypen und statische Arrays, also alles, was kein Zeiger ist, ist das auch ganz einfach:
Delphi-Quellcode:
Und das war es auch schon. Das ist absolut keine Hexerei.
var IntVar: Integer; Bytes: TBinaryObject;
begin SetLength(Bytes, SizeOf(IntVar)); Move(IntVar, Bytes[0]); end; Zitat:
|
Re: Integers, Strings, booleans in BinärDaten converertieren
Es ist aber schon schöner, wenn man dem programm nur einen integer wert übergibt, und der rest dann automatisch gemacht wird.
Wie heißt den die gegenprocedure zu Move? Oder kann ich das array auslesen und in den integer schreiben? gruß snow |
Re: Integers, Strings, booleans in BinärDaten converertieren
Zitat:
|
Re: Integers, Strings, booleans in BinärDaten converertieren
Move ist Move und fertig Ende. Move bewegt einen Speicherblock, von wo do willst wohin du willst. Also exakt das selbe mit umgedrehten Parametern zum Auselesen.
Und deine Funktion kannst du für Wertetypen so gestalten, dass du als zweiten Parameter die Größe übergibst. Da wünscht man sich schon fast Makros wie in C. |
Re: Integers, Strings, booleans in BinärDaten converertieren
um mir ein wenig arbeit zu ersparen hab ich anstatt integer mal ordinal genommen.
Sollte ja auch funktionieren, aber wenn ich eine funktion deklariere mit Ordinal dann...
Delphi-Quellcode:
function InttoBin(ord : ordinal):TBinaryObject;
Zitat:
gruß snow |
Re: Integers, Strings, booleans in BinärDaten converertieren
Den Typ Ordinal gibt es nicht. Er ist nur ein Hilfstyp bei einigen Funktionen, die bereits vom Compiler umgesetzt werden.
|
Re: Integers, Strings, booleans in BinärDaten converertieren
Ich kann also keiner function einen parameter vom typ ordinal übergeben?
und wie macht dass dann inc(X : Ordinal); gruß snow |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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