Powrót   Forum CDRinfo.pl > Różne > Komputery - oprogramowanie i sprzęt

Komputery - oprogramowanie i sprzęt Pytania i problemy niezwiązane z nagrywaniem, backupem i grami.



Witaj Nieznajomy! Zaloguj się lub Zarejestruj

Zarejestrowani użytkownicy mają dostęp do dodatkowych opcji, lepszej wyszukiwarki oraz mniejszej ilości reklam. Rejestracja jest całkowicie darmowa!

Odpowiedz na post
 
Opcje związane z dyskusją Tryby wyświetlania
Stary 23.10.2010, 21:55   #1
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
pomocy baza danych w pascalu

Witam..
Prosze o pomoc w napisani bazy danych w pascalu prawie cala mam napisana lecz jest problem przy procedurze usun gdyz nie usuwa ostatniego rekordu i w programi jest kilka bledow bardzo bym prosil o poprawienie mojego programiku jest to bardzo pilne.

Z gory dziekuje bardzo za pomoc
a to kod zrodlowy:

program baza_dan;

uses dos,crt;

type tdane = record
tytulfilmu:string[30];
rokprodukcji:string[30];
czastrwania: 1..100;
end;

const plik : string = 'baza.bin';

var
opcja : 1..5;
dane : tdane;
baza : file of tdane;



procedure menu;
begin
writeln;
writeln('1 - dodaj wpis do filmoteki');
writeln('2 - popraw wpis w filmotece');
writeln('3 - usun wpis z filmoteki');
writeln('4 - wyswietl zawartosc filmoteki');
writeln('5 - zakoncz program');
writeln;
writeln('Wybierz opcje 1-5');
end;

{******************************************}

procedure dodaj(rozmiar:byte);
var osoba:tdane;
begin
writeln;
write('Podaj tytul filmu: ');
readln(osoba.tytulfilmu);
write('Podaj rok produkcji: ');
readln(osoba.rokprodukcji);
write('Podaj czas trwania: ');
readln(osoba.czastrwania);
seek(baza,rozmiar);
write(baza,osoba);
end;
{******************************************}



procedure popraw;
var numer:byte;
osoba:tdane;
begin
write('Podaj numer filmu poprawy: ');
readln(numer);
dodaj(numer-1);
end;
{******************************************}

procedure usun;
var numer:byte;
temp: file of tdane;
dane:tdane;
begin
write('Podaj numer rekordu do usuniecia: ');
readln(numer);
assign(temp,'d:\temp.bin');
rewrite(temp);
seek(baza,numer);
repeat
read(baza,dane);
write(temp,dane);
until eof(baza);
seek(baza,numer-1);
truncate(baza);
seek(baza,filesize(baza));
seek(temp,0);
repeat
read(temp,dane);
write(baza,dane);
until eof(temp);
close(temp);
erase(temp);
end;
{******************************************}

procedure spacja(ile:byte;znak:char);
var i:byte;
begin
for i:=1 to ile do write(znak);
end;
{******************************************}

procedure kreska(ile:byte;znak:char);
var i:byte;
begin
for i:=1 to ile do write(znak);
writeln;
end;
{******************************************}

procedure pokaz;
var osoba:tdane;
lp:byte;
begin
clrscr;
if filesize(baza) = 0
then
begin
writeln;
writeln('************************************');
writeln('* Brak filmow w bazie danych !!! *');
writeln('************************************');
writeln;
end
else
begin
lp:=1;
seek(baza,0);
kreska(73,'-');
write('| Lp. |tytu lfilmu |');
write(' rok produkcji |');
writeln(' czas trwania |');
kreska(73,'-');
repeat
read(baza,osoba);
write('| ',lp,'|');
write(' ',osoba.tytulfilmu);
spacja(20-length(osoba.tytulfilmu)-1,' ');
write('| ',osoba.rokprodukcji );
spacja(25-length(osoba.tytulfilmu)-1,' ');
write( '| ',osoba.czastrwania,' |');
writeln;
kreska(73,'-');
inc(lp);
until eof(baza);
end;
end;

procedure inicjalizacja;
begin
assign(baza,plik);
if fsearch(plik,'') = ''
then rewrite(baza)
else reset(baza);
end;


begin
inicjalizacja;
repeat
menu;
readln(opcja);
case opcja of
1: dodaj(filesize(baza));
2: popraw;
3: usun;
4: pokaz;
end;
until opcja = 5;
close(baza);

end.
wyhylybymy17 jest offline   Odpowiedz cytując ten post

  #ads
CDRinfo.pl
Reklamowiec
 
 
 
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
 

CDRinfo.pl is online  
Stary 23.10.2010, 22:01   #2
M@X
Get a Mac!
 
Avatar użytkownika M@X
 
Data rejestracji: 18.04.2003
Posty: 10,556
M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>
Znowu szkolne lenistwo ;-)?

Ja moze nieco przekornie napisze ze baza danych w Pascalu to jak dokument napisany w Paincie... Da sie, ale... ;-)
__________________
"Android to syfiasty, zabugowany, irytujący, zaprojektowany przez idiotów,
lagujący, udający otwarty i wolny system." - sobrus

Hosting na świetnych warunkach z rewelacyjnym wsparciem:
M@X jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 22:04   #3
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
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?
wyhylybymy17 jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 22:36   #4
pali
Թ
 
Avatar użytkownika pali
 
Data rejestracji: 14.02.2003
Posty: 3,066
pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>
ktoś tu na forum niedawno gorąco zachwalał Pascala.... (Patrix??)
poszukaj kto i napisz do niego PW
pali jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 22:44   #5
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
dzieki napisalem do Niego ciekawe czy cos odpisze
wyhylybymy17 jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 22:50   #6
M@X
Get a Mac!
 
Avatar użytkownika M@X
 
Data rejestracji: 18.04.2003
Posty: 10,556
M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>M@X jest wybitnie uzdolniony i zna sie rzeczowo na sprawach <1500 - 1999 pkt>
__________________
"Android to syfiasty, zabugowany, irytujący, zaprojektowany przez idiotów,
lagujący, udający otwarty i wolny system." - sobrus

Hosting na świetnych warunkach z rewelacyjnym wsparciem:
M@X jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 22:54   #7
pali
Թ
 
Avatar użytkownika pali
 
Data rejestracji: 14.02.2003
Posty: 3,066
pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>
no co?
pali jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 23:02   #8
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>
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.
__________________
amiga500site
Patrix jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 23:03   #9
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
wielkie dzieki ja to musze oddac do godziny 23 w niedziele wiec byl bym bardzo wdzieczny gdybys cos zdzialal w tej sprawie
wyhylybymy17 jest offline   Odpowiedz cytując ten post
Stary 23.10.2010, 23:15   #10
pali
Թ
 
Avatar użytkownika pali
 
Data rejestracji: 14.02.2003
Posty: 3,066
pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>
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.
pali jest offline   Odpowiedz cytując ten post
Stary 24.10.2010, 02:16   #11
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>
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ć.
__________________
amiga500site

Ostatnio zmieniany przez Patrix : 24.10.2010 o godz. 02:19
Patrix jest offline   Odpowiedz cytując ten post
Stary 24.10.2010, 08:38   #12
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
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

Ostatnio zmieniany przez Reetou : 24.10.2010 o godz. 11:22
wyhylybymy17 jest offline   Odpowiedz cytując ten post
Stary 24.10.2010, 12:38   #13
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>
Mi działa więc dalej robisz coś źle
Widzę wytłumaczyć to mało
Dołączone pliki
File Type: zip db.zip (15.1 KB, 29 oglądane)
__________________
amiga500site
Patrix jest offline   Odpowiedz cytując ten post
Stary 24.10.2010, 13:35   #14
wyhylybymy17
Nowy na forum
 
Data rejestracji: 23.10.2010
Posty: 7
wyhylybymy17 w tym momencie nie ma Reputacji dodatnich ani ujemnych <0  pkt>
dzieki stary juz wszystko wiadomo
wyhylybymy17 jest offline   Odpowiedz cytując ten post
Stary 24.10.2010, 16:54   #15
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>
Jaki ja tam zaraz stary..
ale starzy są tu...
fakt.

PS

Widzę na tweaks'ie nie pomogli...
__________________
amiga500site

Ostatnio zmieniany przez Patrix : 24.10.2010 o godz. 16:59
Patrix jest offline   Odpowiedz cytując ten post
Odpowiedz na post


Twoje uprawnienia:
Nie możesz rozpoczynać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz umieszczać załączników
Nie możesz edytować swoich postów

BB codeWłączone
EmotikonkiWłączone
Kody [IMG]Włączone
Kody HTML są Wyłączone

Teleport

Podobne dyskusje
Dyskusja Autor Forum Odpow. Ostatni Post
POMOCY - skasowalem sobie 40GB waznych danych ryciu Odzyskiwanie danych 5 17.04.2009 18:47
Pascal - baza danych sight Off topic 9 29.05.2005 17:39
Jak odzyskać skasowane pliki na CD-RW Jozgaw Napędy optyczne CD 7 21.06.2004 08:31
Baza Danych Access jelonkowo Off topic 0 09.12.2003 23:47
Baza danych w Accessie 2000 Niebiessska Off topic 26 22.05.2003 18:51


Wszystkie czasy w strefie CET. Aktualna godzina: 23:57.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.