Programowanie - Pascal - Program z odczytu pliku

Fristajler_2005

Programowanie - Pascal - Program z odczytu pliku

Post autor: Fristajler_2005 »

Mam do wykonania takie zadanie o nastepującej treści:

Napisz progrqam znaki, który poda ilość znaków występujących w pliku tekstowym o podanej nazwie. (funkcja zwracająca długość łańcucha tekstowego to LENGTH(ciag). Program sprawdza poprawność wprowadzanej nazwy (istnienie pliku).

Ja napisałem cos takiego:

Kod: Zaznacz cały


program znaki;

var plik:file;
      i:integer;

begin

writeln;
writeln('Oto prosty program, ktory poda, ilosc znakow wystepujacych w ciagu zawartym w');
writeln('pliku "ZNAKI.TXT". Dodatkowo program sprawdza, czy podany plik istnieje.');
writeln;

     Assign(plik, 'znaki.txt');

     Reset(plik);
     i:=FileSize(plik);

     if i:=0 then writeln('Plik ZNAKI.TXT nie istnieje, lub wprowadzona nazwa pliku jest nieprawidlowa');

     writeln('W pliku "ZNAKI.TXT" wystepuje ',i,' znakow.');
     close(plik);

end.
Jednak nie wiem, w jaki sposób mam "dorzucić" tutaj funkcję length, oraz jak wyswietlić informacje o tym, jeśli nazwa pliku jest niepoprawna, lub plik ten nie istnieje. Co bym musiał zmodyfikować, by program był OK i zgodny z treścią?

[ Dodano: Pią Lis 25, 2005 4:51 pm ]
Już nie trzeba. Napisałem ;))

8-)
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

Programowanie - Pascal - Program z odczytu pliku

Post autor: spajder »

co do poprawności istnienia pliku to zawsze rozwiązywałem to w ten sposób :

Kod: Zaznacz cały


function FileExist(var s:string):boolean;
var f:file;
     p:boolean;
begin
 assign(f,s);
 {$I-}
 reset(f);
 p:=IOResult=0;
 close(f);
 {$I+}
end;


co do zliczania znaków :



Kod: Zaznacz cały

function licz(var s:string;z:char):longint;
var f:file; 
     x:longint;
     znak:char;
begin
 x:=0;
 assign(f,s);
 reset(plik,1);
  while not oef(plik) do begin
    BlockRead(f,znak,1);
    if znak=z then inc(x);
  end;
 close(plik);

 licz:=x;
end;


ps. mogłem gdzieś zrobić literówkę, bo pisałem, nie wklejając tego do pascala.[/code]


[edit] dopiero teraz zauważyłem dopisek....
ODPOWIEDZ