Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   pomocy baza danych w pascalu (https://forum.cdrinfo.pl/f113/pomocy-baza-danych-pascalu-86988/)

wyhylybymy17 25.10.2010 11:10

nom jak widac nie:P

Patrix 24.10.2010 16:54

Jaki ja tam zaraz stary.. :]
ale starzy są tu...
fakt.

PS

Widzę na tweaks'ie nie pomogli... :]

wyhylybymy17 24.10.2010 13:35

dzieki stary juz wszystko wiadomo :)

Patrix 24.10.2010 12:38

Ilość załączników: 1
Mi działa więc dalej robisz coś źle :P
Widzę wytłumaczyć to mało :(

wyhylybymy17 24.10.2010 08:38

wielkie dzieki pomoglo
tylko teraz jak usuwam ostatni rekord to mi caly program wylacza

zrobilem kolejne testy lecz gdy usuwam nawet ze srodka jakis rekord to go wylancza tez program

jeszcze raz ja poprawilem wszystko juz nie wywala ale pojawil sie taki problem ze gdy mam np.4 rekordy to gdy usuwam 3 to usuwa tez 4 co z tym zrobic???

Patrix 24.10.2010 02:16

Cisza spokój to przed spaniem poddałem analizie powyższe wypociny mimo późnej godziny.

Drogi wyhylybymy17, na wstępie zapytam się o coś.
Czy Ty nie uważasz na lekcjach i potem musisz edukować się w domu czy wzór tego programu podał nauczyciel ? Jeśli to nie Twoja wina to gorzko...
Za ten program dostałbyś u mnie dwóję (w liceum/gimnazjum to i tak pozytywna ocena).
Nie bierz tego do siebie ale już wyjaśniam...

Każdy program, o którym można powiedzieć, że jest "bazodanowy" obojętnie czy operuje na plikach czy na prawdziwej bazie
rozróżnia poszczególne wpisy po niepowtarzalnych identyfikatorach w rekordach - u Ciebie ich brak.
Zastosowałeś tu substytut w postaci szurania wskaźnikiem, który w prawdzie działa ale to jest po prostu straszne :)
Następną straszną rzeczą jest wyświetlanie danych - zastosowałeś tutaj liczbę porządkową co za tym idzie jest ona płynna. Po skasowaniu jakiegoś filmu przed filmem z lp=5 ten film robi się lp=4. Tu znowu daje o sobie znać brak ID bo kasowanie czegoś po zmiennej liczbie porządkowej, która de facto nie ma nic wspólnego z samym zbiorem jest straszne (ponumerować i skatalogować pudełka - rzecz w tym przypadku niemożliwa) :)

Kasowanie wpisu przy bazie w pliku tekstowym powinno odbywać się mniej więcej tak:
- masz bazę w formacie FILM( ID, tytul, produkcja, czas trwania )
- prosisz usera o podanie ID do skasowania
- przepisujesz bazę do pliku tymczasowego z pominięciem tego ID
- nadpisujesz plik bazy utworzoną kopią, która nie posiada już tego ID
- kasujesz plik tymczasowy

LUB

usuwasz dany ID logicznie (gdzie STAN=1 to pozycja dostepna, STAN=0 to pozycja skasowana)
- masz bazę w formacie FILM( ID, STAN, tytul, produkcja, czas trwania )
- prosisz usera o podanie ID do skasowania
- zmieniasz stan na 0 przy pozycji o tym ID co za tym idzie pozycja przestaje się wyświetlać i jest pomijana.


Twój program jest napisany całkowicie źle - tyle mojego wykładu.

Przejdźmy teraz do poprawy kodu.

- zadeklarowałeś dwie rzeczy, których nie używasz - nie jest to błąd ale kompilator ma za zadnie poinformować Cię o tym co też czyni.
- program sypał się zawsze na ostatnim rekordzie ponieważ zastosowałeś zły typ pętli co za tym idzie w pewnej chwili program chciał odczytać pustkę, coś czego nie ma bo plik już dawno się skończył.

W tym przypadku najpierw wykonujesz operację a warunek sprawdzasz na końcu:
Kod:

repeat
  read(baza,dane);
  write(temp,dane);
until eof(baza);

Czyli program o końcu pliku dowie się za późno tzn po wykonaniu błędnej operacji a dokładniej to się nawet nie dowie bo się najpierw wysypie.

Program będzie działać jeśli w procedurze usuń zastosujesz pętlę, która najpierw bada warunek a potem wykonuje operacje tj.:

Kod:

while not eof(temp) do
 begin
 read(temp,dane);
 write(baza,dane);
end;

W tym przypadku program dowie się o końcu pliku przed wykonaniem błędnej operacji.

No to tyle, idę spać, popraw te pętle i program będzie działać. :)

pali 23.10.2010 23:15

aha, kolego wyhylybymy

Kod źródłowy składa się z części właściwej oraz z komentarzy. Uwierz mi, że nie ma nic gorszego od analizy cudzego kodu bez komentarzy. Można nawet rzec, że kod bez komentarzy jest bezwartościowy, gdyż po czasie nawet sam autor go nie odbuguje, nie mówiąc o innych. W szkole za brak komentów powinieneś dostać bańkę.

A co lepsze, prawidłowo komentując kod, można wpaść gdzie porobiło się błędy.

Skomentuj ten kod, opisując jego części logiczne, funkcjonalne. I pisz po polsku, pełnymi zdaniami. Albo po angielsku.

wyhylybymy17 23.10.2010 23:03

wielkie dzieki ja to musze oddac do godziny 23 w niedziele wiec byl bym bardzo wdzieczny gdybys cos zdzialal w tej sprawie:):)

Patrix 23.10.2010 23:02

pali no wiesz, żeby tak mnie wkopać ? :)
to nie było niedawno ja w pascalu ze 2 lata nic nie pisałem.

Jutro rzucę na to okiem.

pali 23.10.2010 22:54

no co? :)

M@X 23.10.2010 22:50

:szczerb:

wyhylybymy17 23.10.2010 22:44

dzieki napisalem do Niego ciekawe czy cos odpisze

pali 23.10.2010 22:36

ktoś tu na forum niedawno gorąco zachwalał Pascala.... (Patrix??)
poszukaj kto i napisz do niego PW

wyhylybymy17 23.10.2010 22:04

powiem tak szkolne lenistwo to nie bo pisalem ale utknalem w martwym punkcie nie wiem co dalej

oj wiem pascal to przezytek ale coz zrobic w szkole go wymagaja
pomozesz????

M@X 23.10.2010 22:01

Znowu szkolne lenistwo ;-)?

Ja moze nieco przekornie napisze ze baza danych w Pascalu to jak dokument napisany w Paincie... Da sie, ale... ;-)


Wszystkie czasy w strefie CET. Aktualna godzina: 07:24.

Powered by vBulletin® Version 3.9.0 LTS
Copyright ©2000 - 2026, vBulletin Solutions Inc.