![]() |
TFileStream: Binäre datei lesen und hex als string anzeigen
hi,
kann mir einer sagen was an folgendem falsch ist? (ja ich weiss das es schwachsinnig aussieht *g*...):
Delphi-Quellcode:
ich bekomme immer eine access violation.
procedure TForm1.Button1Click(Sender: TObject);
var fs: TFileStream; e, b: char; begin fs := TFileStream.Create('C:\datei', fmOpenRead); try while fs.Position <= fs.Size-1 do begin fs.Read(b, 1); BinToHex(pchar(b), pchar(e), sizeof(b)); memo1.Text := memo1.Text + e; end; finally fs.Free; end; end; ich möchte die datei in einem memo anzeigen (bzw die hexwerte)... also sowas wie FF...usw |
Re: TFileStream: Binäre datei lesen und hex als string anzei
Na meine Seite (
![]() |
Re: TFileStream: Binäre datei lesen und hex als string anzei
danke luckie, der code sieht perfekt aus :)
seite hatte ich in den favoriten, aber habe bis jetzt immer nur auf die api tuts geachtet ;) |
Re: TFileStream: Binäre datei lesen und hex als string anzei
Na dann merk dir mal, dass es da noch andere nette Dinge gibt. ;)
|
Re: TFileStream: Binäre datei lesen und hex als string anzei
Werd ich machen =)
|
Re: TFileStream: Binäre datei lesen und hex als string anzei
Zitat:
![]() |
Re: TFileStream: Binäre datei lesen und hex als string anzei
Folgendes ist sehr Performance lastig:
Delphi-Quellcode:
Bei fs.Size wird jedes mal an das Ende der Datei gesprungen und anschliessend an die aktulle Stelle zurück. Die Funktion Read gibt die Anzahl der gelesenen Bytes zurück. Das ganz du ausnutzen:
while fs.Position <= fs.Size-1 do
begin fs.Read(b, 1);
Delphi-Quellcode:
Deine Access-Violation liegt daran, dass du einen Char nicht so in einen PChar konvertieren kannst.
while (fs.Read(b, 1)<>0) do
begin Am besten du nutzt ganz einfach StrToHex:
Delphi-Quellcode:
dann muss aber e als String definiert werden.
e:=StrToHex(Integer(b),2)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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