Ty jednak dalej nic nie rozumiesz... Piszesz raz do mnie na PM, raz na forum, dostajesz liczne wskazówki a mimo to dalej kod wygląda tak, jak miesiąc temu... Nic tylko Cię zbanować, zamknąć w pokoju bez klamek i dać książkę do nauki...
Zacznijmy od samej góry (enty raz już to piszę):
procedure Odczyt(var D: TPlik; Numer_aktywnej_pozycji: byte);
Po jaką cholerę deklarujesz var D: TPlik, skoro go nie używasz? Nie będę już czepiał się identyfikatorów argumentów i ogólnie zmiennych, bo to najmniejszego sensu nie ma...
var
i, X, Y: byte;
Kolor_aktywny, kolor_nie_aktywny: integer;
Po co Ci te X i Y...? Pokazałem Ci już wiele razy jak wpakować i obsłużyć odpowiednie wartości offset'ów do macierzy statycznej, ale Ty jak zwykle swoje... Kolor_aktywny i Kolor_nie_aktywny są ZBĘDNE, także pokazałem Ci jak wpakować wykorzystywane kolory do statycznej macierzy indeksowanej typem Boolean - jak zwykle nie słuchasz...
X := 1;
Y := 2;
WTF...?! Ehhh, szkoda pisać...
for i:=1 to FileSize (plik) do
Nawet pętli nie indeksujesz tak, jak Ci pokazaliśmy...
Read(plik, dane);
seek(plik, i);
Rany Boskie Święte... Czy Ty wszędzie ten Seek musisz pakować...? Na cholere Ci to, skoro wskaźnik sam jest przestawiany podczas odczytu na początek kolejnego rekordu, a nie wybierasz losowych struktur tylko odczytujesz po kolei...? Tragedia...
gotoxy(x, y + 2 * i);
textcolor(kolor_aktywny);
gotoxy(x, y);
Write(Dane.Numer, '. ');
GoToXY(9, Y);
Write(Dane.Imie, ' ');
GoToXY(32, Y);
Write(Dane.Nazwisko);
GoToXY(64, Y);
Write(Dane.Plec);
GoToXY(69, Y);
WriteLn(Dane.Placa: 0: 2, ' zl');
Inc(Y, 2);
Także pokazałem Ci jak wykorzystać macierz statyczną do przechowania wartości wykorzystywanych w GoToXY... Tu akurat można offset'y wpisać statycznie (w GoToXY), ale pozbądź się Inc(Y, 2), bo głupkowato to wygląda, a poza tym tak jak napisałem Ci na PM prawdopodobnie wiersze będą wyświetlane w co drugiej linii, skoro tą zmienną inkrementujesz o dwa, a później wykorzystujesz w GoToXY...
else
gotoxy(x, y + 2 * i);
textcolor(kolor_nie_aktywny);
end;
A to to w ogóle do czego ma służyć...? Ty myślisz, że wywołując TextColor nagle jakoś kosmicznie magicznie kolor napisów w danej linii zmieni się...? Zacznij czytać opisy tych procedur bo widać, że zielonego pojęcia nie masz o nich...
close(plik);
Jest!!! Chociaż wycieków pamięci nie będzie...
Guepardo napisał(a)
Dlaczego ta procedura wyświetla mi tylko pierwszy rekord z pliku?
Dlatego, że tak to napisałeś a nie inaczej; Nie znasz procedur, nie masz pojęcia jak krok po kroku wykonać ten program stąd nic nie działa tak, jak powinno; Do tego jest mnóstwo zastrzeżeń, których Ty oczywiście nie chcesz słyszeć... Proponuję zacząć się uczyć programowania, a nie pisania postów;
Patryk27 napisał(a)
for i := 1 to FileSize(plik) do
Co to ma robić?
Ty tego nie wiesz...? Ja stosuję for I := 0 to FileSize(fInput) - 1 do i działa bezbłędnie; Nie rozumiem tego dlaczego Cię taka konstrukcja dziwi... Może też jesteś zwolennikiem Seek...?