AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zahl aus TMemoryStream in Integer einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

Zahl aus TMemoryStream in Integer einlesen

Ein Thema von MaWi · begonnen am 6. Okt 2005 · letzter Beitrag vom 6. Okt 2005
Antwort Antwort
MaWi

Registriert seit: 18. Sep 2003
8 Beiträge
 
#1

Zahl aus TMemoryStream in Integer einlesen

  Alt 6. Okt 2005, 12:32
Ich schreibe an einem Programm um Firmware auf Echtheit zu prüfen.
In der Firmwaredatei ist u.a. die Größe der Datei als Prüfwert abgelegt...
Nun habe ich allerdings ein kleines Problem beim einlesen dieses Wertes:

In der Datei steht der wert wie folgt:
Code:
HEX: xx xx xx xx xx 11 22 33 44 yy yy yy
Ich habe folgende Funktion zum Auslesen:
(fsFirmware ist vom Typ TMemoryStream)

Delphi-Quellcode:
function TFirmware.GetstoredSize: Integer;
var
   buffer: integer;
begin
   fsFirmware.Position := 12;
   fsFirmware.ReadBuffer(Buffer,SizeOf(buffer));
   
        result := buffer;
end;
Als Ergebnis bekomme ich allerdings nicht die Dateigröße, sondern eine Zahl, die dem gespiegeltem HEX-Wert entspricht!
Code:
HEX erwartet: 11 22 33 44
HEX Ergebnis: 44 33 22 11
Was mache ich falsch?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Zahl aus TMemoryStream in Integer einlesen

  Alt 6. Okt 2005, 12:46
Hallo,

noch machst du nichts falsch - du musst die Bytes nur noch umdrehen. Schau mal hier: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: Zahl aus TMemoryStream in Integer einlesen

  Alt 6. Okt 2005, 12:54
Ich denke, du machst nichts falsch! Meines Wissens nach, werden die einzelnen Bytes einer Integer-Variable derart gespeichert, dass das höchstwertigste Byte als letztes kommt. (Bei einem Dezimal-Wert z.B. 10356 würde das dann so aussehen: 65301).

Versuch mal:

Delphi-Quellcode:
var
  Wert: Longword;

[...]

Wert:=((Wert and $FF000000) ShR 24)+((Wert and $00FF0000) ShR 8)+((Wert and $0000FF00) ShL 8)+((Wert and $000000FF) ShL 24);
//Edit: Oops, zu langsam! Naja - trotzdem!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
MaWi

Registriert seit: 18. Sep 2003
8 Beiträge
 
#4

Re: Zahl aus TMemoryStream in Integer einlesen

  Alt 6. Okt 2005, 12:56
Vielen Dank!
Da hab ich ja an der völlig falschen Stelle den Fehler gesucht!
Hatte schon vermutet, ich hätte einfach den falschen Typ genommen...

Danke!
Jetzt klappt's...
  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 19:10 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