![]() |
||
Nagrywarki |
Pliki |
Dyski twarde |
Recenzje |
Księgarnia |
Biosy |
Artykuły |
Nagrywanie od A do Z |
Słownik |
FAQ
|
||
|
Off topic Forum poświęcone wszelkim innym tematom. |
![]() |
|
Opcje związane z dyskusją | Tryby wyświetlania |
![]() |
#1 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Pascal - małe pytanie: rekordy
Więc tak, napisałem program w pascalu i to miały być jego zadania:
- pytać/zapisać do pliku imie/nazwisko/klasa jako rekordy - aktualizacja rekordu Menu miało być takie: 1. dodaj ucznia 2. aktualizacja 3. wyjscie W sumie nawet działa pomijajac ta aktualizacje (niebardzo wiem jak sie za to zabrać). Program może i nie jest na wysokim poziomie (moze być beznadzieja dla niektorych ![]() Wiec podpowie ktos jak sensownie aktualizaować wyszukany rekord ? PS PseudoProgram w załaczniku ![]() PS2 label'ami w varze sie nie przejmowac zapomnialem zastosować na nich del bo udało mi sie uniknąć goto...
__________________
amiga500site Ostatnio zmieniany przez Patrix : 20.10.2006 o godz. 21:30 |
![]() |
![]() |
#ads | |
CDRinfo.pl
Reklamowiec
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
|
|
![]() |
![]() |
#2 |
Gość
Data rejestracji: 12.12.2002
Posty: 437
![]() |
program baza_filmow;
uses crt,dos; type film=record tytul: string[20]; gatunek: string[15]; rok: integer; cena: integer; czas: integer; end; var i,j: byte; x1,y1,j1: byte; klawisz: char; baza: film; plik: file of film; plik2: file of film; nazwa_pliku: string[12]; nazwa: string[12]; f: SearchRec; procedure opcja5; var nr_rekordu: byte; i: byte; baza2: film; begin clrscr; wersja_programu; textbackground(0); textcolor(7); gotoxy(1,1); assign(plik,nazwa_pliku); reset(plik); write('Wprowad***171; nr rekordu kt˘ry chcesz zmodyfikowa***8224; ([0] - wyj***732;cie): '); readln(nr_rekordu); if (nr_rekordu<=filesize(plik)) and (nr_rekordu>0) then begin seek(plik,nr_rekordu-1); read(plik,baza); seek(plik,nr_rekordu-1); writeln; writeln('[000] - wybrana pozycja nie zostanie zmodyfikowana'); writeln; writeln('Tytul: ',baza.tytul); write('Nowy tytul: '); readln(baza2.tytul); if baza2.tytul<>'000' then baza.tytul:=baza2.tytul; writeln; writeln('Gatunek: ',baza.gatunek); write('Nowy gatunek: '); readln(baza2.gatunek); if baza2.gatunek<>'000' then baza.gatunek:=baza2.gatunek; writeln; writeln('Rok: ',baza.rok,' r'); write('Nowy rok: '); readln(baza2.rok); if baza2.rok<>000 then baza.rok:=baza2.rok; writeln; writeln('Cena: ',baza.cena,' PLN'); write('Nowa cena: '); readln(baza2.cena); if baza2.cena<>000 then baza.cena:=baza2.cena; writeln; writeln('Czas: ',baza.czas,' min'); write('Nowy czas: '); readln(baza2.czas); if baza2.czas<>000 then baza.czas:=baza2.czas; write(plik,baza); writeln; end; if (nr_rekordu<>0) and ![]() begin writeln; write('Baza jest pusta lub podano nr rekordu kt˘ry nie istnieje!!!'); readln; end; close(plik); end; Sensownie mozna zrobic m. in tak jak wkleilem. Jest to wycinek bazy, ktora robilem jakis czas temu. Jak bedziesz zainteresowany to moge udostepnic cala baze, ale zeby zrozumiec jej schemat dzialania bedziesz musial poswiecic troche czasu. I wystrzegaj sie uzywania instrukcji goto, instrukcja bezwarunkowa jest to najgorsza rzecz jaka moze zrobic programista w swoim programie. Ostatnio zmieniany przez luminat : 21.10.2006 o godz. 06:32 |
![]() |
![]() |
![]() |
#3 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
taa wiem goto jest złe właśnie dlatego pozbyłem sie go tylko zapomnialem labele wyciac
![]() znalazłem jakiś super wypasiony program i ma w skrypcie wszystkie informacje jakie mi potrzeba, ma coś koło ~400 linijek ale go sobie przerobię ![]()
__________________
amiga500site |
![]() |
![]() |
![]() |
#4 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Chmm a kto mi wytłumaczy co tu jest źle...
Miałem tutaj zamiar skopiować zawartość tymczasowego pliku 'filmy.tmp' do 'filmy.txt' nie nadpisujac tego drugiego (poprostu dopisać)... Kod:
//-------------------------------------------------------------------- procedure przepisz; var tmp: text; plik: file of film_r; znak: char; begin assign(tmp,'filmy.tmp'); reset(tmp); while not eof(tmp) do begin read(tmp,znak); assign(plik,'filmy.txt'); reset(plik); seek(plik,filesize(plik)); write(znak); close(plik); end; close(tmp); end; //--------------------------------------------------------------------
__________________
amiga500site |
![]() |
![]() |
![]() |
#5 |
ClassicGOD
Data rejestracji: 24.02.2004
Lokalizacja: Tychy
Posty: 3,093
![]() |
czy tmp nie powinno byc zmienna plikowa? o.0 dawno pascalem sie nie bawilem
![]()
__________________
![]() God's Final Message to His Creation: "We apologise for the inconvenience" |
![]() |
![]() |
![]() |
#6 |
Jukebox Hero
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
a dlaczego dla kazdego jednego bajtu pliku wejsciowego otwierac i zamykac plik wyjsciowy? lepiej zrobic to raz przed petla.
|
![]() |
![]() |
![]() |
#7 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
no w***322;a***347;nie narazie nie mam poj***281;cia jak to ma nawet wygl***261;da***263;.
@REi piszesz o typie "tmp:file of...;" ? @sobrus tak owszem tylko niech to cho***263; w jakiej***347; jednej kombinacji zadzia***322;a to to posprz***261;tam ![]()
__________________
amiga500site |
![]() |
![]() |
![]() |
#8 |
Jukebox Hero
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
wlasnie - typ drugiego pliku. oba chyba powinny byc text. W tym wypadku kompilator oczekuje ze bedziesz zapisywac wartosc typu film_r, a ty przepisujesz char.
btw a kompilator nic nie krzyczy? "char variable expected" czy cos w tym stylu? Ostatnio zmieniany przez sobrus : 22.10.2006 o godz. 21:28 |
![]() |
![]() |
![]() |
#9 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
no w***322;a***347;nie teraz nie krzyczy, poprostu nie przepisuje
jak dam oba na text; to wywala byka: Error: Incopatible type of arg no. 1: Got text, expected file.
__________________
amiga500site |
![]() |
![]() |
![]() |
#10 |
Jukebox Hero
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
wynika z tego ze text to nie file ... :/
a jak dasz oba na "file of char"? |
![]() |
![]() |
![]() |
#11 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Error: Type mismatch
![]() echh jutro belfra pom***281;cz***281;
__________________
amiga500site |
![]() |
![]() |
![]() |
#12 |
logged out
CDRinfo VIP
Data rejestracji: 12.07.2003
Lokalizacja: /home
Posty: 12,518
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Mo***380;e co***347; Ci si***281; przyda:
http://4programmers.net/Turbo_Pascal...%B3w_w_Pascalu http://4programmers.net/Turbo_Pascal/Pliki
__________________
XMPP: andrzej(at)czerniak.info.pl |
![]() |
![]() |
![]() |
#13 |
Jukebox Hero
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Tak mnie to zaciekawilo ze az delphi zainstalowalem...napisalem takie cos i chodzi bez zajakniecia (z while not eof tez). Oczywiscie pominalem sprawdzanie bledow.
(Delphi7 Personal): Kod:
procedure append; var plik1,plik2: file of char; i:integer; znak:char; begin Assign(plik1,'C:\plik1.txt'); Assign(plik2,'C:\plik2.txt'); Reset(plik1); Reset(plik2); Seek(plik2,FileSize(plik2)); for i:=0 to FileSize(plik1)-1 do begin Read(plik1,znak); Write(plik2,znak); end; Close(plik1); Close(plik2); end; Ostatnio zmieniany przez sobrus : 22.10.2006 o godz. 23:09 |
![]() |
![]() |
![]() |
#14 |
Pingwin specjalista.
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Chmm zamysł z filozofia działania mialem mniej wiecej dobry wg Twojego
![]() Z charami kombinowałem problem u mnie był bodaj z tym /while not eof/ bo to mi dalej nie działa, przepisałem Twojego /for/ i teraz wszystko gra ![]() poprawione: Kod:
//-------------------------------------------------------------------- procedure przepisz; var tmp: file of char; plik: file of char; znak: char; i: integer; begin assign(tmp,'filmy.tmp'); assign(plik,'filmy.txt'); reset(tmp); reset(plik); seek(plik,filesize(plik)); for i:=0 to filesize(tmp)-1 do begin read(tmp,znak); write(plik,znak); end; close(tmp); close(plik); end; //-------------------------------------------------------------------- Dzieki ![]()
__________________
amiga500site |
![]() |
![]() |
![]() |
|
|