Jeg fik sidst svaret at jeg skulle bruge "packed record", og det virker tildels også:
Eksempel:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TReal = Real48;
KDate = Word;
salg_linier_rec = packed record
Del : LongInt;
RoyaltyMaerke : Boolean;
sopret : String[2];
snr : Word; { Kundeordrenummer }
slinienr : Byte; { Linienummer }
sconnr : TReal; { container nr. }
sstyk : Boolean; { stykliste }
svnr : String[15]; { Varenummer }
Enhedskode : Byte;
BestiltAntal : TReal; { Antal bestilt (i ENHEDSKODE) }
snavn : String[55]; { Varebetegnelse }
sepris : TReal; { Pris pr. enhed pr. SINDHOLD }
slpris : TReal; { Totalpris for linie }
soldpris : Boolean; { gl. pris }
srabat : TReal; { Rabatprocent }
sbrutto : TReal; { Bruttovægt pr. enhed }
soprind : Word; { oprindelig ordre }
sindhold : Word; { enhedspris }
sdato : Word; { dato for oprettelse }
LeveretAntal : TReal; { Antal leveret (i ENHEDSKODE) }
Snetto : TReal; { Nettovægt pr. enhed }
Provisionssats1 : TReal; { Tidligere ProvisionPct }
Provisionstype1 : Byte; { 0=%; 1=Beløb }
IaltProvisionsbeloeb1 : TReal; { IALT BASERET PÅ LEVERET MÆNGDE }
IaltNettovaegt : TReal; { IALT BASERET PÅ LEVERET MÆNGDE }
IaltBruttovaegt : TReal; { IALT BASERET PÅ LEVERET MÆNGDE }
Provisionssats2 : TReal;
Provisionstype2 : Byte; { 0=%; 1=Beløb }
IaltProvisionsbeloeb2 : TReal; { IALT BASERET PÅ LEVERET MÆNGDE }
SandsynlighedsFaktor : TReal;
end;
salg_rec = packed record
Del : LongInt;
somordre : Byte;
salgnr : Word;
salgdato : Kdate; { dato for oprettelse }
SalgLevMode : String[19]; { Leveringsm†de }
Klarmeldt : Byte; { 0=' '; 1='X'; 2='*' }
BetalerSelvRoyalty : Boolean;
pakkedato : Kdate;
salgfolgenr : Word;
folgedato : Kdate;
salgfakturanr : Word;
fakturadato : Kdate;
somfaktura : Boolean;
salglogin : String[2];
{ Bestiller (kunde) }
BestiltNr : String[15]; { kundenr som har bestilt ordre }
kundenavn : String[35];
kundeadr1 : String[30];
kundeadr2 : String[30];
kundepnrby : String[30];
kundeatt : String[30];
kundepallelev : TReal;
FragtFradragDKK : TReal;
Internbem : String[60];
{ Leveringssted }
LeveringsNr : String[15]; { kundenr som skal leveres til }
tilnavn : String[35];
tiladr1 : String[30];
tiladr2 : String[30];
tilpnrby : String[30];
tilatt : String[30];
salgref : String[30];
totalpris : TReal;
tilpallelev : TReal;
tilpalleretur : TReal;
LeveringsBem : String[60];
salgbem : String[30];
Salglevdato : Kdate;
SalgFrankatur : String[20];
OmbytAdresser : Boolean;
DebitorNr : String[15];
salgvaluta : Byte;
MomsKode : Byte;
Opret_i_fak : Boolean;
salgrelation : Byte;
totalbrutto : TReal;
{ Leveringssted }
tilland : String[25];
kundeland : String[25];
DBV : Word;
totalnetto : TReal;
SalgKurs : TReal;
Sprogkode : String[2];
SalgBetalingDatoAktiv : Boolean;
SalgBetalingDato : Kdate;
BetalingNLU : Byte;
BetalingDage : Byte;
BetalingGaranti : String[24];
KasserabatNLU1 : Byte;
KasserabatDage1 : Byte;
KasserabatPct1 : TReal;
KasserabatNLU2 : Byte;
KasserabatDage2 : Byte;
KasserabatPct2 : TReal;
DebitorNavn : String[35];
Agentnummer1 : String[15];
ProvisionPct1 : TReal;
TotalProvision1 : TReal;
BetalingModtaget : Kdate;
Toldloebenummer : LongInt;
Tran18Oplys : String[30];
Tran18aOplys : Integer;
Tran19Oplys : Integer;
Tran21Oplys : String[30];
Tran21aOplys : Integer;
Tran25Graensen : Integer;
Tran29Indgangstold : Integer;
Fragtbrevnummer : LongInt;
Tran26Indland : Integer;
Agentnummer2 : String[15];
ProvisionPct2 : TReal;
TotalProvision2 : TReal;
FordelingsFaktor : Packed Array[1..12] of TReal;
SpringRoyaltyOver : Boolean;
end;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
BinaryFile : file of salg_linier_rec;
SL : Array[0..99999] of salg_linier_rec;
AntalRecord : LongInt;
i : LongInt;
SH : Array[0..99999] of salg_rec;
SHFile : File of salg_rec;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
assignfile(binaryfile, 'C:\\DATA\\SL.DAT');
reset(binaryfile);
AntalRecord := 1;
While not Eof(binaryfile) do
begin
read(binaryfile,SL[AntalRecord]);
inc(AntalRecord);
end;
for i := 1 to antalrecord -1 do
begin
memo1.Lines.Add(sl[i].snavn);
end;
closefile(BinaryFile);
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
Fstr : Integer;
begin
Assignfile(SHfile, 'C:\\DATA\\SH04.DAT');
reset(SHfile);
AntalRecord := 1;
While not Eof(SHfile) do
begin
Read(SHfile,SH[AntalRecord]);
inc(AntalRecord);
end;
for i := 1 to antalrecord -1 do
begin
memo1.Lines.Add(SH[i].kundenavn);
end;
closefile(SHFile);
end;
end.
salg_linier_rec virker, jeg kan indlæse filen, og få valide data ud, men ikke salg_rec.
Jeg tror fejlen ligger i "FordelingsFaktor : Packed Array[1..12] of TReal;", men er låst i hvad jeg gør ved den.
Nogen der lige har løsningen til mig ?!
Kenneth