[Pascal] Problem z obsługą pliku

musol22
Użytkownik
Użytkownik
Posty: 14
Rejestracja: 8 lis 2009, o 11:29
Płeć: Mężczyzna
Lokalizacja: warszawa

[Pascal] Problem z obsługą pliku

Post autor: musol22 »

problem zadeklarowaniem pliku z rekordu program

Kod: Zaznacz cały

program zad3;
uses crt;

type
    rekord = record
        imie : string;
        nazwisko : string;
        wiek : byte;
    end;
r=file of rekord; {wyskakuje błąd}
var
   plik:r;
   x : integer;
   naz : string;

procedure zapisz(var p:r; a : integer);
var
  b : rekord;
  i : integer;

const
    dane: array[1..5] of rekord = (
    (imie: 'Jacek'; nazwisko: 'Mlot'; wiek: 45),
    (imie: 'Kasia'; nazwisko: 'Milosz'; wiek: 18),
    (imie: 'Boguslaw'; nazwisko: 'ksiazek'; wiek: 52),
    (imie: 'Maciek'; nazwisko: 'Malenczuk'; wiek: 22),
    (imie: 'Katarzyna'; nazwisko: 'Maciejewska'; wiek: 39));
begin
     assign(p, 'f:\214A\lab10\plik3.txt');
     rewrite(p);

     for i:=1 to a do
         begin
              clrscr;
              writeln('Podaj dane rekordordu nr ', i);
              writeln;
              with b do
                   begin
                        write('Imie : ');
                        readln(imie);
                        write('Nazwisko : ');
                        readln(nazwisko);
                        write('Wiek : ');
                        readln(wiek);
                   end;
              write(p, b);
         end;
      for i:=1 to 5 do write(p, dane[i]);

     close(p);
end;

procedure wyswietl(var p : r);
var
  b : rekord;
  i : integer;
begin
     assign(p, 'f:\214A\lab10\plik3.txt');
     reset(p);
     i := 0;
     while not eof(p) do
         begin
              inc(i);
              writeln('Dane rekordordu nr ', i);
              writeln;
              read(p, b);
              with b do
                   begin
                        write('Imie : ');
                        writeln(imie);
                        write('Nazwisko : ');
                        writeln(nazwisko);
                        write('Wiek : ');
                        writeln(wiek);
                   end;
              writeln;
         end;
     close(p);
end;

procedure szukaj(var p : r; n : string);
var
  b : rekord;
  i : integer;
  znaleziono : boolean;
begin
     clrscr;
     assign(p, 'f:\214A\lab10\plik3.txt');
     reset(p);
     i := 0;
     znaleziono := false;
     while not eof(p) do
         begin
              inc(i);
              read(p, b);
              if(b.nazwisko = n) then
                   begin
                        writeln('Znaleziono osobe o nazwisku ', n, ' w rekordordzie ', i);
                        write('Imie : ');
                        writeln(b.imie);
                        write('Nazwisko : ');
                        writeln(b.nazwisko);
                        write('Wiek : ');
                        writeln(b.wiek);
                        writeln;
                        znaleziono := true;

                   end;
         end;
     if not znaleziono then writeln('Nie znaleziono osoby o podanym nazwisku.');
     close(p);
end;

begin
     clrscr;

     write('Podaj liczbe rekordow do zapisania : ');
     readln(x);
     zapisz(plik, x);
     clrscr;
     wyswietl(plik);
     readkey;
     clrscr;
     write('Podaj nazwisko do wyszukania : ');
     readln(naz);
     szukaj(plik, naz);
     readkey;
end.
Ostatnio zmieniony 5 sty 2013, o 18:35 przez Afish, łącznie zmieniany 2 razy.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Pascal] Problem z obsługą pliku

Post autor: royas »

Jaki błąd w jakim kompilatorze?
musol22
Użytkownik
Użytkownik
Posty: 14
Rejestracja: 8 lis 2009, o 11:29
Płeć: Mężczyzna
Lokalizacja: warszawa

[Pascal] Problem z obsługą pliku

Post autor: musol22 »

błąd pierwszy wyskakuje komenda "typed files cannot contain reference-counted types
"
i w programie głównym
przy zapisz(plik,x); {plik does not seem to be initialized}
a następnie przy end.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Pascal] Problem z obsługą pliku

Post autor: royas »

Kod: Zaznacz cały

{$H-}
ODPOWIEDZ