Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Pascal] Program nie zapisuje do pliku.

11 Apr 2010 00:07 2522 9
  • Level 9  
    Witam,

    mam problem z zapisem tekstu do pliku z mojego kodu.
    Mam taki problem, gdy nie zastosuję żadnej opcji jeszcze z zapisem to wszystko ładnie się wyświetla, tylko jak wprowadzę instrukcje do zapisywania do tego pliku, to tekst który się zapisuje nie jest wyświetlany na ekranie, dlaczego? da się to zmienić?

    tu jest mój kod:
    Code:

    program koko;
    uses dos, crt;
     
    var
    plik_tekst : text;
    moj_tekst : string;
     
    a:array[1..3] of array[1..3] of integer;
    o:array[1..3] of string;
    p:array[1..3] of string;

    k,l,b,c,i,n,s,t,maxi,mini: integer;
    y,max,min,m:real;
     
    begin
    clrscr;

    assign (plik_tekst, 'c:\k\moj_tekst.txt');
    rewrite (plik_tekst);
    writeln( 'Podaj imie osoby');

    for i:=1 to 3 do
     begin
      readln(o[i]);
     end;
     
    writeln( 'Podaj przedmiot');
    for n:=1 to 3 do
     begin
      readln(p[n]);
     end;
     
    i:=0;
     
    for k:=1 to 3 do
     begin
      n:=0;
      i:=i+1;
      for l:=1 to 3 do
       begin
        n:=n+1;
        writeln('Podaj ocenc osoby o imieniu:  ',o[i],' z przedmiotu: ',p[n]);
        read(a[k,l]);
      end;
    end;
     
     
    readln();
    i:=0;
    for k:=1 to 3 do
     
    begin
    n:=0;
    i:=i+1;
    for l:=1 to 3 do
      begin
            n:=n+1;
            writeln(plik_tekst, moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]);
           
      end;
    end;
     
    s:=0;
    b:=0;
    i:=0;
    max:=0;
    min:=7;
    for k:=1 to 3 do
     begin
      for l:=1 to 3 do
       begin
        b:=b+1;
        s:=a[k,l]+s;
      end;
    y:=s/b;
     
    i:=i+1;
    if y > max then
    begin
    max:=y;
    maxi:=i
    end;
     
    if y < min  then
    begin
    min:=y;
    mini:=i;
    end;
     
    writeln('średnia ocen osoby o imieniu: ',o[i],' to ',y);
    s:=0;
    b:=0;
    end;
     
    writeln('najwieksza srednia to ',max, 'nalezy do ', o[maxi]);
    writeln('najmniejsza srednia to ',min, 'nalezy do ', o[mini]);
    close(plik_tekst);
    readln;
    end.


    Quote:
    Free Pascal Compiler version 2.2.0 [2009/11/16] for i386
    Copyright (c) 1993-2007 by Florian Klaempfl
    Target OS: Linux for i386
    Compiling prog.pas
    prog.pas(74,9) Warning: Variable "moj_tekst" does not seem to be initialized
    prog.pas(14,7) Note: Local variable "c" not used
    prog.pas(14,15) Note: Local variable "t" not used
    prog.pas(15,11) Note: Local variable "m" not used
    Linking prog
    137 lines compiled, 0.1 sec
    1 warning(s) issued
    3 note(s) issued


    Quote:
    Runtime error 5 at $080480D4
    $080480D4
    $08069E61





    Proszę o pomoc.

    Proszę umieszczać kod bezpośrednio w poscie oraz pamiętać o używaniu znaczników code.
    Post poprawiłem - arnoldziq
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Moderator of Programming
    Po pierwsze, musisz się zdecydować na jaką platformę piszesz ten program.
    Ustawienia kompilacji masz na Linux-a, a w programie jest podana ścieżka do zapisu z systemu DOS/Windows.
    Poprawnie skompilowany kod (pod Windows-em) dział bez problemu. Zapisuje, do pliku txt, teksty tego typu :
    Quote:
    ocena osoby o imieniu: Zenek to 1 z przedmiotu j.polski

    Nie sprawdzałem poprawności obliczeń. Jedynie wyniki mógłbyś wyświetlać z mniejszą precyzją, bo na razie ta ilość zer jest powalająca.
  • Level 9  
    a jak zmienić tą kompilacje?
  • Moderator of Programming
    Nie wiem dokładnie, ale jeżeli używasz Free Pascal-a, to na 100% masz tam jakieś opcje kompilatora, w których możesz ustawić target.
    Quote:
    Free Pascal Compiler version 2.2.0 [2009/11/16] for i386
    Copyright (c) 1993-2007 by Florian Klaempfl
    Target OS: Linux for i386
    Compiling prog.pas


    Dodano po 13 [minuty]:

    Tu znajduje się opcja Target dla kompilatora, w IDE Free Pascal-a
    [Pascal] Program nie zapisuje do pliku.
    Ma być ustawiona w ten sposób :
    [Pascal] Program nie zapisuje do pliku.
    Wynik uruchomienia Twojego programu :
    [Pascal] Program nie zapisuje do pliku.

    Jedyna zmiana w kodzie to zmiana readln(); na readln;
  • Level 9  
    ale ja tak mam od samego poczatku.


    ale u Ciebie tez sie nie wyswietla

    writeln(plik_tekst, moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]);

    na ekranie,

    wiesz jak zrobic zeby sie wyswietlało?
  • Moderator of Programming
    Ten tekst nie wyświetla się, bo kierujesz go do pliku.
    plik który mi stworzyło na dysku zawiera coś takiego :
    Quote:
    ocena osoby o imieniu: Tomasz to 3 z przedmiotu j.polski
    ocena osoby o imieniu: Tomasz to 4 z przedmiotu matematyka
    ocena osoby o imieniu: Tomasz to 4 z przedmiotu biologia
    ocena osoby o imieniu: Zanek to 2 z przedmiotu j.polski
    ocena osoby o imieniu: Zanek to 3 z przedmiotu matematyka
    ocena osoby o imieniu: Zanek to 2 z przedmiotu biologia
    ocena osoby o imieniu: Marek to 4 z przedmiotu j.polski
    ocena osoby o imieniu: Marek to 5 z przedmiotu matematyka
    ocena osoby o imieniu: Marek to 6 z przedmiotu biologia

    Z zgodnie z twoim programem :
    Quote:
    prog.pas(74,9) Warning: Variable "moj_tekst" does not seem to be initialized

    zmienna moj_tekst - niczego nie zawiera.
  • Level 9  
    i teraz mi chodzi zeby to sie roznoczesnie zapisywalo do pliku ale tez wyswietlalo na tym czarnym ekranie
  • Moderator of Programming
    To zapisuje do pliku :
    Code:
    writeln(plik_tekst, moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]); 

    To wyświetla na ekranie :
    Code:
    writeln(moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]); 
  • Level 9  
    czyli nie idzie zrobić zeby bylo to i to jednoczesnie?
  • Moderator of Programming
    Oczywiście, że można zmień swój kod na taki, a będzie on zapisywał do pliku i wyświetlał równocześnie :
    Code:
    [...]
    
    begin
    n:=0;
    i:=i+1;
    for l:=1 to 3 do
      begin
            n:=n+1;
            writeln(plik_tekst, moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]); //zapis do pliku
            writeln(moj_tekst,'ocena osoby o imieniu: ',o[i],' to ',a[k,l],' z przedmiotu ',p[n]); //wyświtlanie na ekran
      end;
    end;
    [...]