Więc tak:
Mam rekord TSerwis i plik TSerwisFile (chyba zawartość rekordu nie jest ważna?). W części zmiennych globalnych zadeklarowałem jedną zmienną dotyczącą naszgo pliku o nazwie 'plik' (;p)
var
Form1: TForm1;
plik: TSerwisFile;
na razie tworzę obsługę formularza i plików więc dla potrzeb edycji tworzę (czyszczę zawartość) plik w metodzie:
procedure TForm1.FormCreate(Sender: TObject);
var
dane:TSerwis;
begin
assignfile(plik,'c:\dane.dat');
<b>rewrite(plik);</b>
//tu wstawiam 3 rekordy za pomocą WRITE();
RecordDisplay(0); //ta procedura wyświetla zawartość rekordu podanego w parametrze na formularzu
Tak więc jak widać na listingu plik otwieram za pomocą REWRITE.
A sama procedura wywołująca błąd ma postać:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if FilePos(plik)>0 then
Seek(plik,FilePos(plik) - SizeOf(TSerwis));
RecordDisplay(FilePos(plik));
end;
Jej poprzednia wersja, która nie działała poprawnie bo nie wyświetlałą dobrego rekordu na formularzu (choć błedó kompilatora nie było) miała postać:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if FilePos(plik)>0 then
Seek(plik,FilePos(plik) - 1);
RecordDisplay(FilePos(plik));
end;
Oparłęm się w niej na przykład w "Delphi 4.0 - vademecum profesjonalisty" więc zdziwiłem się, że stwierdziliscie, że jest zła.. Ale nawet w Helionie znalazłem jakiś bląd :-P AKurat w artykule o plikach typowanych... ;p