Hier eine Funktion die eine Double, zwei Integer Zahlen und ein Array der Länge 3 vom Datentyp Char in eine Binärdatei schreibt.
Inhalt der Binärdatei aus dem Hexeditor:
Code:
13000000000000F03F020000000200000041424313
OK Formatieren wir das mal so das man es lesen kann...
Code:
13 00 00 00 00 00 00 F0 3F 02 00 00 00 02 00 00 00 41 42 43 13
Lassen wir mal die $13 vor und nach dem Datensatz außer acht...
Dann schreibt diese kleine Delphi Programm das gleiche weg... (Oder liest es ein).
Auch ohne eine Monster-Class dafür zu Programmieren.
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
{$A1}
type
TB =
record
Len1 : byte;
A : Double;
C,
D : Integer;
S :
array[1..3]
of AnsiChar;
Len2 : byte;
end;
// 13 00 00 00 00 00 00 F0 3F 02 00 00 00 02 00 00 00 41 42 43 13
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
B : TB;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
F :
File;
begin
Assignfile(F,'
Test.net');
rewrite(F,1);
B.Len1 := $13;
B.Len2 := $13;
B.A := 1.0;
B.C := 2;
B.D := 2;
B.S[1] := '
A';
B.S[2] := '
B';
B.S[3] := '
C';
Blockwrite(F,B,Sizeof(B));
Closefile(F);
end;
end.
Aber das wird trotzdem nicht zielführend sein, da der Text ABC keine längen Informationen hat...
Es sei den, Texte werden mit einem $13 beendet.. Also kein längenbyte und nicht 0 terminiert.
Oder das letzte $13 ist einfach ein CR weil Datei nicht als Bin Datei geöffnet wurde.
Boh... Mach doch mal ein richtiges Beispiel und fülle die Daten mit einem Pattern.
Delphi-Quellcode:
var
B : Byte;
W : Word;
L : Integer;
S1 : String
S2 : String;
N : Byte;
begin
B := $55;
W := $3388;
L := $11223344;
S1 := 'Das ist ein cooler Text';
S2 := 'Noch einer';
N := $99;
...
end;
In Fortran natürlich und bitte 3x hinter einander weg schreiben... und bitte erst dem Link aus meinen mein
Posting #16 lesen.
Mavarik