Chciałem zrobić program, który zapisywał by do pliku *.txt dane wpisane przez użytkownika, a później je czytał, oto kodu procedury czytającej i wpisującej:
wcinaj kod i dziel bloki logiczne, inaczej kod jest nieczytelny
kiedy dzielisz się kodem, dziel się całością - ludzie mają zgadywać jak zdefiniowałeś dane, a, tekst?
jeśli to procedura, to dlaczego masz wszystkie lokalne zmienne zdefiniowane globalnie?
procedura nie powinna robić kilku niezwiązanych ze sobą rzeczy (tutaj: wyświetlanie, czekanie, zapis)
Zakładając, że kolejne dane są w oddzielnych liniach, zmienna dane jest typu text a zarówno a jak i tekst są typu string, pierwszą rzeczą, którą powinieneś poprawić jest zamiana Read na ReadLn. Druga rzecz: nie zamykasz na koniec pliku (close(dane)). W Twoim wypadku (mało danych do zapisania) dane trafią do pliku dopiero kiedy zamkniesz plik (co powinno nastąpić automatycznie po zakończeniu działania programu) z powodu CC (cache managera).
Gdybym musiał, zbudowałbym kod mniej więcej tak (nie miałem możliwości skompilować, ale powinien być poprawny):
procedure PokazWpisy(NazwaPliku: String);
var
Dane: Text;
Tekst: String;
begin
{ Wyswietl na ekranie wpisy z pliku }
Assign(Dane, NazwaPliku);
Reset(Dane);
WriteLn('NOTATNIK':40);
repeat
ReadLn(Dane, Tekst);
WriteLn(Tekst);
until EOF(Dane);
Close(Dane);
end;
procedure DodajWpis(NazwaPliku: String);
var
Dane: Text;
Tekst: String;
begin
{ Dodaj do pliku jeden wpis }
Assign(Dane, NazwaPliku);
Append(Dane);
WriteLn('Nowy wpis:');
ReadLn(Tekst);
WriteLn(Dane, Tekst);
Close(Dane);
end;
procedure ZrobCos;
const
NazwaPliku = 'notatnik.txt';
begin
WriteLn('---------------------------------------');
PokazWpisy(NazwaPliku);
WriteLn('---------------------------------------');
Delay(3000);
DodajWpis(NazwaPliku);
WriteLn('---------------------------------------');
Delay(3000);
PokazWpisy(NazwaPliku);
WriteLn('---------------------------------------');
end;