unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
{ 50 bytes :
[50 chars]
}
TEnteteName = array[0..49] of char;
pEnteteName = ^TEnteteName;
const
EnteteNameSize = SizeOf(TEnteteName);
function StringToEnteteName(const S: string): TEnteteName;
var N, L: integer;
begin
L := Length(S)-1;
if L > 49 then
L := 49;
for N := 0 to 49 do
if N <= L then
result[N] := S[N+1]
else
result[N] := #0;
end;
function EnteteNameToString(const E: TEnteteName): String;
var N : integer;
pR: PChar;
begin
SetLength(result, 50);
pR := PChar(result);
for N := 0 to 49 do
begin
pR[N] := E[N];
end;
end;
type
{ 6 bytes :
[2 Year][2 Month][2 Day]
}
TEnteteDate = record
Year, Month, Day: word;
end;
pEnteteDate = ^TEnteteDate;
const
EnteteDateSize = SizeOf(TEnteteDate);
function TEnteteDateToDateTime(const eDate: TEnteteDate): TDateTime;
begin
result := EncodeDate(eDate.Year, eDate.Month, eDate.Day);
end;
function DateTimeToEnteteDate(const aDate: TDateTime): TEnteteDate;
begin
DecodeDate(aDate, Result.Year, Result.Month, Result.Day);
end;
type
{ 60 bytes :
[50 Name chars]
[1 color]
[1 Validity]
[2 DateValidity Year][2 DateValidity Month][2 DateValidity Day]
[2 nul]
}
TEntete = record
Name : TEnteteName;
Color : byte;
Validity : boolean;
DateValidity : TEnteteDate;
Nul : word;
end;
pEntete = ^TEntete;
const
EnteteSize = SizeOf(TEntete);
procedure TForm1.FormCreate(Sender: TObject);
begin
caption := format('%d // %d // %d',[EnteteSize, EnteteNameSize, EnteteDateSize]);
end;
end.