logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PASCAL - jak odczytać dane z pliku i wyświetlić na ekranie?

Aaron21 14 Kwi 2008 20:38 12095 8
REKLAMA
  • #1 5030676
    Aaron21
    Poziom 15  
    Posty: 185
    Ocena: 13
    Witam!

    Nie mam za wiele pojęcia o Pascalu ale muszę napisać program który wczyta i potem odczyta (wypisze na ekranie) dane z pliku:

    Część dotyczącą zapisu w zaszadzie mam zakończoną. Nie wiem niestety jak odczytać dane. Chciałbym żeby program zapytał "czy odczytać dane z pliku" - jeśli tak to odczyt. Jeśli nie to koniec programu. Czy możecie mi pomóc? (podać ten kawałek kodu z małym wytłumaczeniem)
  • REKLAMA
  • REKLAMA
  • #3 5030722
    Albert486
    Poziom 14  
    Posty: 164
    Pomógł: 2
    Proszę bardzo:

    Program Odzczyt;
    
    uses
    crt;
    
    var
    plik : Text;          {zmienna pliku}
    wiersz : String;
    znak : Char;
    
    begin
    ClrScr;           {czyszczenie ekranu}
    writeln ('Czy odcvzytac plik? (T/N)');
    
    znak := ReadKey; {Czytanie znaku}
    if Znak = 't' then    {Warunek czy ma odczytac plik}
    begin 
    
    Assign (Plik, 'c:\plik.txt');       
    Reset (plik);
    
    while not eof (plik) do      {Powtarzaj pętle do konca pliku}
    begin
    
    readln (plik, Wiersz);
    writeln (Wiersz);
    
    end;
    
    end 
    
    readln;
    Close (plik);
    
    else
    Exit;
    end.


    Kod proszę umieszczać w znacznikach code - krzychoocpp
  • REKLAMA
  • #4 5031042
    Aaron21
    Poziom 15  
    Posty: 185
    Ocena: 13
    Albert486 napisał:
    Proszę bardzo:

    [...] .

    Wielkie dzięki Albert!! Jeszcze tylko jeden mały mankament.
    dopisałem sobie linijke żeby ładnie wyglądało:
    
    writeln('ZAWARTOŚĆ PLIKU:  '); 
    

    chciałbym żeby ta linijka pojawiła się przed wyświetleniem zawartości pliku. Niestety na razie pojawia mi się przed każdą nową linijką.. jak to zmienić: Na razie mój kod wygląda tak:


    
    {....}
    while not eof(plik) do
    begin
    readln(plik,wiersz);
    writeln('ZAWARTOŚĆ PLIKU:  '); 
    writeln(wiersz);
    end;
    readln;
    close(plik);
    exit;
    end;
    end.
    


    Czy można jakoś zrobić żeby wyświetlane dane były oddzielone np. przecinkiem albo były wypisane np w formie:
    Imie1: {tutaj wprowadzone imie1}
    Nazwisko1: {tutaj wprowadzone nazwisko1} itd. ??

    Na razie wszystko wyświetla mi się w jednej linijce oddzielone spacją..
  • REKLAMA
  • #6 5031257
    Aaron21
    Poziom 15  
    Posty: 185
    Ocena: 13
    mietekn napisał:
    I tak to jest gdy zamiast wędki daje się ryby. Poczytaj w helpach o write, writeln itp a sam dojdziesz ( http://turbopascal.skryptoteka.pl/2.html ).


    kolego.. przeczytałem już wiele takich stron..i jak widzisz kombinuje cały czas ale nie wszystko mi wychodzi.. na tych stronach zazwyczaj są omówione poszczególne funkcje, albo skrawki kodów, a ja nie zawsze wiem co dokładnie oznaczają i gdzie dokładnie je wstawić.. wydaje mi się że forum jest po to by szukać na nim pomocy.. Nie wszystko jest zrozumiałe od razu a ja wole np. jak mi ktoś wytłumaczy na jakimś konkretnym przykładzie..co mi po tym że czytam jakieś zadanie gdzie jest użyta interesująca mnie funkcja jak połowy z tego co tam jeszcze dołączyli nie rozumiem..idąc Twoim tokiem myślenia równie dobrze można by zrobić odnośnik: https://www.elektroda.pl/rtvforum/ = www.google.pl (i przeglądaj sobie miliony stron - nie zawsze na temat)

    Także bardzo proszę.. WYROZUMIAŁOŚCI...
    Dziękuje!
  • #7 5031268
    Albert486
    Poziom 14  
    Posty: 164
    Pomógł: 2
    Po prostu musisz "writeln ('ZAWARTOSC PLIKU: ');" wstawic przed
    pętlą "while not eof (plik);" czyli tak:
    
    {...}
    writeln ('ZAWARTOSC PLIKU: ');
    while not eof (plik) do
    begin
    readln (plik, wiersz);
    writeln (wiersz);
    {...}
    


    Jeśli chcesz po przecinku to tak:

    
    {...}
    writeln ('ZAWARTOSC PLIKU: ');
    while not eof (plik) do
    begin
    readln (plik, wiersz);
    write (wiersz,', ');              { <- Tu zmien na write }
    {...}
    


    A jak chcesz żeby wypisał:

    
    Imie: John
    Nazwisko: Kiepski
    Tel: 111222333
    


    to musisz napisac program zapisujący tablicę lub rekord do pliku.

    Pozdrawiam.
  • #8 5033454
    Aaron21
    Poziom 15  
    Posty: 185
    Ocena: 13
    Albert486 napisał:
    [...]

    A jak chcesz żeby wypisał:

    
    Imie: John
    Nazwisko: Kiepski
    Tel: 111222333
    


    to musisz napisac program zapisujący tablicę lub rekord do pliku.

    Pozdrawiam.


    to musiałbym przerobić aktualny program czy napisać nowy który by zapisał tablice do pliku?
  • #9 5033627
    Albert486
    Poziom 14  
    Posty: 164
    Pomógł: 2
    Musiał byś trochę zmodyfikowac. Umieszczam ci program zapisujący
    tablicę do pliku + źródło z komentarzami. Jak będziesz miał jakieś
    pytania jeszcze to możesz pisac mi na GG lub email :D
    Załączniki:
    • Zapis.rar (574 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.

Podsumowanie tematu

✨ Dyskusja dotyczy problemu odczytu danych z pliku w języku Pascal oraz wyświetlania ich na ekranie. Autor potrzebuje programu, który zapyta użytkownika, czy odczytać dane z pliku, a następnie wczyta i wyświetli zawartość pliku tekstowego. Przykładowy kod pokazuje użycie procedur Assign, Reset, ReadLn, WriteLn oraz pętli while not eof do odczytu i wyświetlania linii z pliku. Wskazano, że polecenie WriteLn z napisem informacyjnym należy umieścić przed pętlą odczytującą plik, aby uniknąć powtarzania nagłówka przy każdej linii. Poruszono także kwestie formatowania wyświetlanych danych, np. oddzielania przecinkiem lub wypisywania danych w formacie klucz: wartość, co wymaga modyfikacji programu do zapisu tablic lub rekordów do pliku. Wskazano na potrzebę modyfikacji istniejącego programu lub napisania nowego, który zapisze dane w strukturze umożliwiającej formatowany odczyt. Podano linki do materiałów edukacyjnych dotyczących funkcji Write i WriteLn oraz zachęcono do nauki na przykładach z komentarzami.
Wygenerowane przez model językowy.
REKLAMA