ďťż

Ładny brzuch

Witam!:)
Mam mały problem z Pascalem(nie qmam go w ogule, ale cos probuje:d). Otóz, mamy zrobic na zadanie baze danych, ktora ma wczytwyac, wyswietal i edytowac dane, ktore poda uzytkownik. Program zrobilem, tylko za ch*** nie wiem jak zrobic zeby była mozliwosc edycji danych:/Pomozecie?:( I jescze, zminilem kokalizcaje pliku *pas i teraz mi wyskakuje COS TAKIEGOi nawet go uruchomic nie moge:/:d, co to znaczy?(jak mowielm jestem noga w pascala:(:)
Kod wyglada tak:
program baza; uses crt; type info = record        imie:string[30];        nazwisko:string[30];        wiek: byte; end; procedure czekaj; begin        writeln;        writeln('-------=======--------');        writeln('Nacisnij dowolny klawisz');        writeln('-------=======--------');        readkey; end; procedure pobierz(var os :array of info); var        i:integer; begin        for i:=0 to length(os)-1 do        begin                writeln('wypelniam rekord', i+1);                write('   podaj imie:');                readln(os[i].imie);                write('podaj nazwisko:');                readln(os[i].nazwisko);                write('    podaj wiek:');                readln(os[i].wiek);        end;        writeln('wpisano wszystkie rekordy');        czekaj; end; procedure wypisz(os : array of info; nr : integer); begin        writeln;        write('rekord', nr+1, ';');        write('', os[nr].imie);        write(', ', os[nr].nazwisko);        writeln(', ', os[nr].wiek, ''); end; procedure wypiszwszystko (os: array of info); var        i:integer; begin        for i:=0 to length(os)-1 do wypisz(os, i); end; procedure zapisz(os  : array of info; plik:string); var        i:integer;        f:file of info; begin        assign(f, plik);        rewrite(f);        for i:=0 to length(os)-1 do        begin                write(f, os[i]);        end;        close(f);        writeln('zapisano pomyslnie do bazy danych');        czekaj; end; procedure wczytaj(var os : array of info; plik: string); var        f:file of info;        i:integer; begin        assign(f, plik);        reset(f);        for i:=0 to length(os)-1 do                read(f, os[i]);        writeln('wczytano pomyslnie dane');        czekaj; end; const        plik: string = 'c:\temp\baza.txt'; var       os : array[0..1] of info;        k : char; begin        wczytaj(os, plik);       // pobierz(os);        wypiszwszystko(os);       // zapisz(os, plik);        readln;   { while true do    begin        writeln('witaj w programie bazodanowym');        writeln('----------------------------');        writeln('1 - wyswietl cala baze');        writeln('2 - wyswietl wybrany rekord');        writeln('3 - edytujn wybrany rekord');        writeln('4 - wczytaj baze');        writeln('5 - zapisz baze');        writeln('6 - wypelnij cala baze');        writeln } end; end.

Jak wyzej, co i gdzie wstawic zeby byla mozliwosc edycji wczesniej zapisanych danych?Chyba niedokladnie sluchalmem psora bo nieiwem:(Prosze o pomoc:(
Użytkownik bep edytował ten post 22 kwiecień 2006, 13:03


Niekorzystam z tp (wole fp :P), ale widzę jeden bardzo duży błąd :)
Nie ma czegoś takiego jak funkcja length dla tablic. Działa ona tylko dla string i zwraca wartość spod 0 elementu tablicy z której jest zbudowany string (w 0 elemencie jest znak którego kod ascii równy jest ilości elementów w tablicy). Najwygodniej jest tworzyć dodatkową stałą będącą ilością elementów tablicy. I albo zdefiniować ją przed funkcjami i procedurami i używać wewnątrz ich jako globalną, albo przekazywać wielkość jako kolejny parametr (stałej nie można przekazywać do procedury/funkcji przez jej adres w pamięci... no przynajmniej mi się teraz nie udało :)). I wywal to end; na końcu bo to chyba pozostałośc po while :)
const  m=1; var  os : array[0..m] of info;
Polecam też tworzyć zmienne tablicowe jako nowy typy, łatwiej wtedy o zmiany i przekazywanie wartości do procedur/funkcji
const  m=1; type  TInfo = record             imie:string[30];             nazwisko:string[30];             wiek: byte;           end;  TOs = array[0..m] of TInfo; var  os : TOs; procedure pobierz(var os :TOs, size: integer);

//Edit----------------------
Dodałem jeszcze taką małą dygresję co to typów :)
Użytkownik reVis edytował ten post 22 kwiecień 2006, 13:18
Ale zanim zmienilem lokazlicje pliku wszystko dzialało:(
tylko teraz mi wyskakuje exitcode=2 i dup* nie wiem o co mu chodzi:/eh. I poptawnie sie kompiluje:)to tez jest FP:D

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •