Ĺ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
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