Hallo himitsu,
also im Prinzip habe mir Dein Beispiel angeschaut (64bit für ..),
und mir aus File64.pas nur die Seek64 Funktion geholt.
Unter Interfaces habe ich :
Procedure Seek64 (Var F{: File of xxx}; recNum: Int64);
Unter Implementation habe ich :
Type TLargeIntRec = packed Record Case Byte of
0: (Org: Int64);
5: (Lo: LongWord; Hi: LongInt);
End;
TFlushFunc = Function(Var F): Integer;
und Deine Prozedur :
Procedure Seek64(Var F; recNum: Int64);
Begin
If (TFileRec(F).Mode >= fmInput) and (TFileRec(F).Mode <= fmInOut) Then Begin
TFlushFunc(TFileRec(F).FlushFunc)(F);
TTextRec(F).BufEnd := 0;
TTextRec(F).BufPos := 0;
recNum := recNum * TFileRec(F).RecSize;
If (SetFilePointer(TFileRec(F).Handle, TLargeIntRec(recNum).Lo, @TLargeIntRec(recNum).Hi, FILE_BEGIN)
= Cardinal(-1)) and (TLargeIntRec(recNum).Hi = 0) Then SetInOutRes(GetLastError);
End Else SetInOutRes(103);
End;
in meinen Code integriert.
Das wars eigendlich.
Der Aufrug erfolgt :
AssignFile(f,DNAFilenameLoad);
//FileMode:=2;
//Reset(f,1);
Reset(f);
Seek64(f,NewEndPosition); // int64
truncate(f);
CloseFile(f);
Jedoch so klappte es nicht un es ergab die
Exception, also habe ich
in Deiner Prozedur, wie gesagt, einiges ausgeklammert.
Erkläre mir doch mal bitte den Sinn von:
recNum := recNum * TFileRec(F).RecSize;
Danke.
Viele Grüße,
Jasmine