Skocz do zawartości
Forum Programowanie
Zaloguj się, aby obserwować  
smietas123

[pascal] problem z baża danych:( help!

Polecane posty

Witam wszystkich!
Mam taki problem... muszę zrobić bazę danych biblioteki szkolnej. Program musi posiadać opcję:
>Nowa książka
>edytuj książkę
>zapisz do pliku bazę
>czytaj z pliku bazę
>przeglądaj książki
>szukaj

zrobiłem pierwszą opcje i (chyba) 2 tyle tylko, że zapisuje mi bazę do pliku dat, a chciałbym żeby była również opcja zapisu pliku do txt... i nie mogę sobie z tym poradzić. Możecie mi pomóc? Oto program...
[code=Pascal] ------------------------------------------
program bazadanycHOHX[YWF#7G&ćuł#ÓGGV7G&ćułSÓVćCfltŃ(ą}ŹŃ( z:char;
wielkosc:integer=100;
f:file of karNN[YZ^YH&VvŚ76vbb33ś&ŚćFBb33&Ww&FRbŚf\"ŁÓFąź))ŃĄąŃmt)ąĄ))Ńe zapisano');
readln;
end;

procedure czytaj;
begin
assi N^K] NĘN]
N[H[
HY&VBbEśŚVćC&VFĆŚ6Ć6RbŚVćC&6VGW&RćwfŃ)))ĄąĄŃmtĄąąosc) do inc(i);
if i=wielkosc+1 then
begin gotoxy(10,4);writJ N^HILINĘH[[BY[vF2w& amp;FRb33Fćrb3#c6b3#cb33śśRb(ŃŃ9
ąĄ[i].nr);
gotoxy(10,5); write ('Autor:');readWK]]NJL
N]H
N][N&VFĆEśGGVVćCvF#w&Ń9Ń(ą())
for ile_k:=1 to 3 do t[ile_k].nr:=0;
ile_k:=0;
repeat
textc
Y[ĘN^X[
YJN^X[
VBŚ6&Vw&FVĆb33U42śćV2b33łŁŚvFŃi
Ń9Ńą)ŃŃkground(blue);
z:=readkey;
case z of
'z', 'Z&#39NN NN]ZNN Nb33łćwŚVćCVFŁ3#pŚVćB [/code]
najbardziej zależy mi na apisie do pliku txt i czytaniu biblioteki z pliku... ale jeśli ktoś zechciałby poszperać przy innych opcjach to z góry dziękuje:) Chciałem powiedzieć, że przeczytałem multum artykułow, kursów itp. ale dalej nie mogę sobie poradzić... Czekam na propozycje zmian i rozwiązań mojego problemu:)

// stosuj tagi do kolorownia składni - Iskar

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
super, wielkie dzięki, ale ja czytałem większość z tych artykułów. W moim programie jest to bardziej skomplikowany problem, ponieważ mam tablicę a tamte przykłady itp. są w prostych programach... I nie mogę sobie niestety poradzić:/ PS. kapitana googl'a przewertowałem również:P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
[code=Delphi]
procedure zapisz;
begin
assign(f,'baza.dat');
rewriJNNLHY[Y[]JWJNJNŚVćCw&FRb33śFćRŚ6ćb33&VFĆŚVćC [/code]

Jak możesz najpierw skojarzyć plik z tym baza.dat otworzyć do zapisu a potem w pętli zaraz po pierwszej linijce zapisania go zamknąć a potem w pętli robić tak dalej ? Jak chcesz dalej zapisywać do pliku kolejne dane skoro on już jest zamknięty ? Zamknięcie wywal za pętle.

[quote] że zapisuje mi bazę do pliku dat, a chciałbym żeby była również opcja zapisu pliku do txt [/quote]

Tak bo różnica w tych plikach jest tak ogromna, że jest to tylko zmiana rozszerzenia z *.dat -> *.txt bo zawartość jest zupełnie taka sama wciąż są to zwykłe pliki tekstowe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
No więc zauważyłem błąd z close(f) wcześniej tylko nie widziałem, że wrzuciłem go w kodzie na forum... mój błąd. Ok do pliku zapisuje... z czytaniem też sobie poradziłem. A co z przeglądaniem? Jakieś pomysły? Jakaś malutka podpowiedź?smile.gif

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Przeglądanie ? Albo wczytujesz całą baze i potem wyszukujesz pewnego wzorca w całym tekście. Albo to chyba lepsze: otwierasz plik wczytujesz w pętli linijka po linijce i w aktualnej linijce wyszukujesz szukanego wzorca tekstu. Jeśli go masz odczytujesz sobie dane, przerywasz pętle i wyświetlasz dane.

Ciekawość mnie rozsadzi: czemu skoro to jest dla biblioteki zakładasz tablice do 100? Co jeśli będzie więcej danych ?


Edit: Eh dobra chyba źle zrozumiałem to wyżej można zrobić do szukania. Jak powiesz jak ma wyglądać przeglądanie do może coś wykminimy. O ile się orientuje jak ostatnio byłem w bibliotece to przeglądanie jest posegregowane alfabetycznie więc najpierw musisz napewno wczytać dane do tablicy czy tam czegoś posegregować je a potem wyświetlać na ekranie powiedzmy te 20 rekordów. Przy naciśnięciu strzałki w dół czy tam czegoś zwiększasz index początkowy o 1 i wyświetlasz rekordy od 1-21 po kolejnym wciśnięciu znów +1 i wyświetlasz rekordy od 2-22 i tak dalej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
... no to mam lipe:P mówiłem, że jestem newbie?tongue.gif PS. co do biblioteki to fakt 100 to mało, ale przecież to w każdej chwili można zmienić:P 2 cyferki i po kłopocie:)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Tylko trochę bezsensu jest deklarować tablicę powiedzmy 200 elementów gdy 20 będzie używanych i na odwrót będziesz w nagłym wypadku potrzebować więcej a będzie za mało. Ale dobra nie o tym gadamy xD

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
słusznie zauważyłeś nie o tym... mam taki pomysł na wyszukiwanie
-----
[code=Pascal] function Szukaj(Tekst : string; Pozycja : integer) : integerY[NXN[H
ĘZWK][
HH
H[
fCłvVĆś62Fć2ŚbfCłvVĆś62FV7Vś)ą)M) [/code]
o ile się nie mylę Pos służy do przeszukiwania... tak?tongue.gif ale na bank zmienne coś źle... mam z tym problem:/




beznadzieja... mógłbyś wkleić kawałeczek chociaż kodu jak to ma wyglądać? A może ktoś inny ma coś do dodania?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Stosuj tagi do kolorowania kodu - napisałem Ci o tym w Twoim poście, napisałem Ci PW, teraz pisze ogólnie. Warto spróbować, może tym razem zauważysz (popraw powyższy post).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
dumałem wczorajszy wieczór i dzisiaj ale nie mogę jakoś tego wymyśleć:/ nic chyba muszę porzucić projekcik:P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
Zaloguj się, aby obserwować  

×