Powrót   Forum CDRinfo.pl > Różne > Off topic

Off topic Forum poświęcone wszelkim innym tematom.



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 20.10.2006, 20:27   #1
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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 ) no ale tak to wyglada jakos po miesiacu siedzenia w tym.

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...
Dołączone pliki
File Type: rar rekordy.rar (20.3 KB, 20 oglądane)
__________________
amiga500site

Ostatnio zmieniany przez Patrix : 20.10.2006 o godz. 20:30
Patrix 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 21.10.2006, 05:28   #2
luminat
Gość
 
Data rejestracji: 12.12.2002
Posty: 437
luminat zaczyna zdobywać reputację <1 - 49 pkt>
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 nr_rekordu>filesize(plik)) or (nr_rekordu<0)) then
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. 05:32
luminat jest offline   Odpowiedz cytując ten post
Stary 21.10.2006, 11:20   #3
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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
Patrix jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 14:46   #4
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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
Patrix jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 19:44   #5
REi
ClassicGOD
 
Avatar użytkownika REi
 
Data rejestracji: 24.02.2004
Lokalizacja: Tychy
Posty: 3,093
REi niedługo stanie się sławny ;) <50 - 149 pkt>
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"
REi jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:05   #6
sobrus
Jukebox Hero
 
Avatar użytkownika sobrus
 
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>
a dlaczego dla kazdego jednego bajtu pliku wejsciowego otwierac i zamykac plik wyjsciowy? lepiej zrobic to raz przed petla.
sobrus jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:17   #7
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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
Patrix jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:24   #8
sobrus
Jukebox Hero
 
Avatar użytkownika sobrus
 
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>
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. 20:28
sobrus jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:30   #9
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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
Patrix jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:50   #10
sobrus
Jukebox Hero
 
Avatar użytkownika sobrus
 
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>
wynika z tego ze text to nie file ... :/
a jak dasz oba na "file of char"?
sobrus jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 20:57   #11
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
Error: Type mismatch
echh jutro belfra pom***281;cz***281;
__________________
amiga500site
Patrix jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 21:05   #12
andy
logged out
CDRinfo VIP
 
Avatar użytkownika andy
 
Data rejestracji: 12.07.2003
Lokalizacja: /home
Posty: 12,518
andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>
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
andy jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 21:52   #13
sobrus
Jukebox Hero
 
Avatar użytkownika sobrus
 
Data rejestracji: 17.09.2004
Lokalizacja: Back for the Attack
Posty: 10,800
sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>sobrus ma z czego być dumnym <1000 - 1499 pkt>
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. 22:09
sobrus jest offline   Odpowiedz cytując ten post
Stary 22.10.2006, 22:14   #14
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,084
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>
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;
//--------------------------------------------------------------------
Jutro jeszcze pomyśle dlaczego mi ten while nie idzie...

Dzieki
__________________
amiga500site
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


Wszystkie czasy w strefie CET. Aktualna godzina: 05:37.


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