Potrzebuję dodać do swojego programu opcję tworzenia pliku .dat, który będzie używany przez inny program. Plik musi mieć konkretny wsad lecz muszę mieć opcję zmiany kilku komórek.
Wersja testowa na razie wygląda tak:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TRecord = packed record
A : Byte;
B : Byte;
C : Byte;
D : Byte;
E : Byte;
Im : String[23];
Op : String[6];
G : Byte;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
F: file of TRecord;
Rec : TRecord;
s, s1, s2 : string;
i :Integer;
begin
s:= trim(Edit1.Text);
s1:= trim(Edit2.Text);
s2:= trim(Edit3.Text);
Rec.A := 33;
Rec.B := 00;
Rec.C := 00;
Rec.D := 00;
Rec.E := 23;
Rec.Im := (s + s1);
Rec.Op := '0' +s2;
Rec.G := 70;
AssignFile(F, 'File.dat');
try
Rewrite(F);
Write(F, Rec);
finally
CloseFile(F);
end;
end;
end.
Taki plik obecnie tworzy mi program:
Na obrazku zaznaczone pola w których musiałaby się znajdować wartość 00 lub 01,(222222222222222 33333333 44444 - to wartości, które chcę zmieniać przed tworzeniem pliku)
W kodzie znajduje się '0' - Nie wiedziałem jak zmienić to na wartość 00 bo 'null' nie działa
Tak powinien wyglądać poprawnie wygenerowany plik:
Wszystko byłoby ok gdyby nie fakt że zmienna String tworzy przed docelowym rekordem Bit (Obrazek 1 zaznaczone na czerwono), którego nie potrafię zmienić a bez zmiany program błędnie interpretuje plik .dat
Ma ktoś jakiś pomysł co można zmienić by plik był generowany poprawnie?
Będę wdzięczny za podpowiedź.
Pozdrawiam