AGB  ·  Datenschutz  ·  Impressum  







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

Binärdatei auslesen

Ein Thema von almisoft · begonnen am 28. Mai 2010 · letzter Beitrag vom 29. Mai 2010
Antwort Antwort
Benutzerbild von almisoft
almisoft

Registriert seit: 14. Feb 2007
Ort: Berlin
40 Beiträge
 
Delphi 7 Professional
 
#1

Re: Binärdatei auslesen

  Alt 29. Mai 2010, 10:06
Danke, ich hatte mich auch gewundert, dass ein RandomAccessFile.readInt unter Java einen anderen Wert brachte als ein TMemoryStream.Read unter Delphi.

Ich habe mir mit einer kleinen Erweiterung TMemoryEx beholfen:

Delphi-Quellcode:
type TMemoryStreamEx=class(TMemoryStream)
     public
       function ReadByte:integer;
       function ReadInt:integer;
       function ReadLong:int64;
       function ReadShort:integer;
       function ReadString(Length:integer):string;
     end;

function ChangeEndian32(i:integer):integer; register;
asm
  bswap EAX
end;

procedure ChangeEndian64(P: Pointer); register;
asm
  mov EDX, [EAX]
  bswap EDX
  mov EBX, [EAX + $04]
  bswap EBX
  mov [EAX], EBX
  mov [EAX + $04], EDX
end;

function TMemoryStreamEx.ReadByte:integer;
var b:byte;
begin
  Read(b,SizeOf(byte));
  Result:=b;
end;

function TMemoryStreamEx.ReadInt:integer;
begin
  Read(Result,SizeOf(integer));
  Result:=ChangeEndian32(Result);
end;

function TMemoryStreamEx.ReadLong:int64;
begin
  Read(Result,SizeOf(int64));
  ChangeEndian64(@Result);
end;

function TMemoryStreamEx.ReadShort:integer;
begin
  Read(Result,2);
  Result:=Swap(Result);
end;

function TMemoryStreamEx.ReadString(Length:integer):string;
begin
  SetLength(Result, Length);
  ReadBuffer(Pointer(Result)^, Length);
end;
Alexander Miehlke
Alexander Miehlke
Wer Schreibfehler findet, darf sie behalten
  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 20:00 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