AW: Binärdatei mit TFileStream auslesen
@xzise: folgendes dürfte nicht funktionieren:
Delphi-Quellcode:
explizit die Zeile
procedure ShowBinary(var Data; Count: Cardinal; FileName : string);
var s : TStream; begin s := TFileStream.Create(FileName, fmCreate); try s.Write(@Data, Count); finally s.Free; end; end;
Delphi-Quellcode:
Write erwartet eine Referenz und keinen Pointer. Durch ein vorangestelltes @ wird die Adresse auf die Data Variable geschreiben + die Daten die dahinter im Speicher liegen. (falls es überhaupt kompiliert)
s.Write(@Data, Count);
|
AW: Binärdatei mit TFileStream auslesen
Wieso definierst du dein Record nicht wie folgt
Delphi-Quellcode:
Type
TDatensatz = packed record // Größe = 1404 Bytes RawUnkn : word; // 2 Byte (diese Daten wertest du nicht aus, also mir unbekannt, was die bedeuten RawTime : word; // 2 Byte RawData : Array[ 0..349 ] of integer; // 350* 4 Bytes Function TimeStr : string; Function Data( Index : integer ): double; end; {...} function TDatensatz.TimeStr : string; begin Result := Format( '%d:%d', [ RawTime div 100, RawTime mod 100 ] ); end; function TDatensat.Data( Index: integer ) : double; Begin Result := RawData[ Index ] / 100; end; {...} var ds : TDatensatz; // Prüfen ob die Recordgröße stimmt, denn dann ist die Dateigröße ein ganzes Vielfaches von der Recordgröße if fs.Size mod SizeOf( ds ) = 0 then // Auslesen des aktuellen Records aus der Datei fs.Read( ds, SizeOf( ds ) ); |
AW: Binärdatei mit TFileStream auslesen
Moin SirThornberry,
stimmt das ergibt Sinn, ich dachte Write erwartet einen Pointer, aber Gegenvorschlag einfach das @ wegnehmen?
Delphi-Quellcode:
MfG
procedure ShowBinary(var Data; Count: Cardinal; FileName : string);
var s : TStream; begin s := TFileStream.Create(FileName, fmCreate); try s.Write(Data, Count); finally s.Free; end; end; Fabian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 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