Napisałem poniższy kod:
program wejscie;
uses crt;
type
skladnik_listy2 = ^zapis;
zapis = record
wsk1 : skladnik_listy2;
imie : string[20];
nazw : string[30];
nr_tel : string[20];
opis : string;
wsk2 : skladnik_listy2;
end;
dostep = record
haslo : string[15];
end;
var plik : file of dostep;
zmHaslo : dostep;
kapsulka : string[15];
plik2 : file of skladnik_listy2;
skladnik_biezacy, pierwszy_skladnik : skladnik_listy2;
procedure intro;
begin
textbackground(blue);
clrscr;
textcolor(yellow);
gotoxy(20,1);
writeln('Rozpoczynam program "Notatnik".');
delay(1000);
gotoxy(20,3);
writeln('Achieved with CryEngine4 and DevPascal.');
delay(1000);
gotoxy(20,5);
writeln('Developer/owner : rNest. ');
delay(1000);
gotoxy(20,7);
writeln('Kliknij ENTER aby kontynuowa'+#134+' ...');
end;
procedure utworzPlik(var kapsulka : string);
begin
assign(plik, 'C:\sec\plikHa1345917.dat');
rewrite(plik);
zmHaslo.haslo := 'jula';
kapsulka := zmHaslo.haslo;
readln(zmHaslo.haslo);
write(plik, zmHaslo);
close(plik);
end;
procedure sprawdzHaslo(kapsulka : string);
var hasloUser : string[15];
koniec : boolean;
begin
koniec := false;
window(20,2,50,5);
textbackground(yellow);
clrscr;
window(21,3,49,4);
textbackground(blue);
clrscr;
repeat
writeln('Wpisz has'+#136+'o dost'+#169+'powe : ');
readln(hasloUser);
if hasloUser = kapsulka then
begin
sound(2000);
koniec := true;
end;
clrscr;
until koniec;
end;
procedure zapiszRekord(var skladnik_biezacy : skladnik_listy2; var pierwszy_skladnik : skladnik_listy2);
var poprzedni_skladnik, nastepny_skladnik : skladnik_listy2;
begin
assign(plik2, 'C:\notatnik\notatnik.dat');
rewrite(plik2);
if skladnik_biezacy <> nil then poprzedni_skladnik := skladnik_biezacy
else
begin
poprzedni_skladnik := nil;
nastepny_skladnik := nil;
end;
new(skladnik_biezacy);
writeln('Wpisz imie:');
read(skladnik_biezacy^.imie);
writeln('Wpisz nazwisko:');
read(skladnik_biezacy^.nazw);
writeln('Wpisz nr telefonu:');
read(skladnik_biezacy^.nr_tel);
writeln('Wpisz opis dodatkowy:');
read(skladnik_biezacy^.opis);
skladnik_biezacy^.wsk1 := poprzedni_skladnik;
read(skladnik_biezacy^.wsk1);
skladnik_biezacy^.wsk2 := nastepny_skladnik;
read(skladnik_biezacy^.wsk2);
write(plik2, skladnik_biezacy);
poprzedni_skladnik := skladnik_biezacy;
close(plik);
end;
BEGIN
intro;
utworzPlik(kapsulka);
clrscr;
sprawdzHaslo(kapsulka);
clrscr;
window(15,2,60,10);
skladnik_biezacy := nil;
zapiszRekord(skladnik_biezacy, pierwszy_skladnik);
readkey;
END.
Program ma zapisywać do pliku .dat poszczególne rekordy w porządku listy 2-kierunkowej. Więc potrzebne będzie zapamiętanie adresu elementu poprzedniego i następnego. I tu wyskakuje błąd. Stąd moje pytanie : czy zmienną typu wskaźnikowego można zapisać w pliku elementowym, w celu późniejszego użycia?
dodanie znacznika <code class="pascal"> - fp