AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi [erledigt] Little-Endian-DWord zu Integer und zurück
Thema durchsuchen
Ansicht
Themen-Optionen

[erledigt] Little-Endian-DWord zu Integer und zurück

Ein Thema von mOfl · begonnen am 1. Sep 2008 · letzter Beitrag vom 1. Sep 2008
 
mOfl

Registriert seit: 1. Jun 2006
11 Beiträge
 
#1

[erledigt] Little-Endian-DWord zu Integer und zurück

  Alt 1. Sep 2008, 07:16
(Delphi 7 Personal)

Hallo Jungens,

für ein Programm, das sich aus einem MemoryStream Größen holt, die da als Dwords im Little-Endian-Format stehen, habe ich nach einer Möglichkeit gesucht, die 4 Bytes, sobald sie in meinen Byte-Array-Puffer geladen wurden, in Integer umzuwandeln, um damit arbeiten zu können. Von Assembler wollte und will ich gänzlich die Finger lassen, weil ich keinen Schimmer davon habe. Offensichtlich ist es mit Pointern nicht anders, denn ich fand diese simple Lösung für mein Problem...

Delphi-Quellcode:
buffer: Array[0..3] of Byte;
groesse: integer;
groesse := PInteger(@buffer[0])^; ... die ich nicht verstehe Ich habe das an einem schlichten Programm getestet und es scheint wunderbar zu funktionieren, wenn ich von Hand in das Array etwas eintrage, etwa

Delphi-Quellcode:
buffer[0] := $FE;
buffer[1] := $E2;
buffer[2] := $00;
buffer[3] := $00;
dann wird das richtig umgewandelt in die Integer 58110, da es hexadezimal ja E2FE ist, ich verstehe aber nicht, was in dieser kleinen Zeile alles drin steckt. Dass PInteger ein Pointer auf Integerzahlen ist und die grobe Funktion von @ und ^ konnte ich auf einschlägigen Seiten lesen, aber wie funktioniert das zum Beispiel, dass trotz des Aufrufs von Index 0 des Arrays die ganze Zahl umgewandelt wird? Denkt die Funktion mit? =)

Die zweite Sache ist nämlich die, dass ich bestimmte Bytes verändern und dann wieder in den MemoryStream schicken möchte, und das heißt für mich: Integer bearbeiten, wieder in Little-Endian-Form bringen, in ein Byte-Array schreiben und mittels stream.WriteBuffer(buffer, 4) den entsprechenden Wert im MemoryStream überschreiben. Zusätzlich zur allgemeinen Frage also noch die Frage: Wie sieht der äußert raffinierte Befehl rückwärts aus, also von Integer zu Byte-Array oder viel primitiver gefragt - geht das überhaupt so einfach?

Würde mich über fachmännische Hilfe sehr freuen! =)

Grüßle
Dani

PS: Ich bin mir sicher, dass die Delphi Hilfe da ein paar schlaue Sachen bereit hält, aber Windows Vista meint irgendwie, alte Hilfedateien nicht mehr anzeigen zu müssen
  Mit Zitat antworten Zitat
 


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 19:26 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