Pascal prosim pomoc

Programovacie jazyky, rady, poradňa...
strho
Novice
Novice
Príspevky: 6
Registrovaný: 09 dec 2009, 21:23

Pascal prosim pomoc

Príspevok od používateľa strho »

prosim vas potreboval by som tuto proceduru upravit tak ze ked zmenit len 1 polozku z toho recordu tak nech mi ostatne udaje ponecha a vypise len to co som teraz pozmenil....som to skusal..ale neviem s tym ani pohnut..mne to nechce ponechat povodne udaje..a ak ponecha a chcem to opravit znovu..tak mi zase zmiznu...:-(.. plus pridavam cely program aby ste si mohli pozret ako to vyzera (Dalsia.pas)

Kód: Vybrať všetko

 PROCEDURE oprav(k:integer);
       begin
        clrscr;
        seek(s,k-1);
        repeat
        writeln('Co chces opravit?');
        writeln('P-postava, H-herec, C-charaktery, V-vztahy, F-filmy, Esc-koniec');
        odp2:=readkey;
        case odp2 of
        'P','p': begin
                  clrscr;
                  gotoxy(24,1);write('Zadaj meno serialoveho hrdinu:');
                  readln(friend[k-1].postava);
                 end;
        'H','h': begin
                  clrscr;
                  gotoxy(24,1);write('Zadaj herca:');
                  readln(friend[k-1].herec);
                 end;
        'C','c': begin
                  clrscr;
                  gotoxy(24,1);write('Zadaj charakter hrdinu:');
                  readln(friend[k-1].charaktery);
                 end;
        'V','v': begin
                  clrscr;
                  gotoxy(24,1);write('Zadaj dolezity vytah v seriali:');
                  readln(friend[k-1].vztahy);
                 end;
        'F','f': begin
                  clrscr;
                  gotoxy(24,1);write('Zadaj ine filmy herca:');
                  readln(friend[k-1].filmy);
                 end;

         end;
         until odp2=#27;
             write(s,friend[k-1]);

       end;
Prílohy
Databazy.rar
(2.8 KiB) 21 stiahnutí
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ty si pri zápise premažeš súbor a zapíšeš tam iba toho zmeneného. Zapisovať musíš všetkých v cykle. Namiesto riadku

Kód: Vybrať všetko

write(s,friend[k-1]);
skús dať

Kód: Vybrať všetko

for i:=1 to filesize(s) do pridanie(i);
strho
Novice
Novice
Príspevky: 6
Registrovaný: 09 dec 2009, 21:23

Príspevok od používateľa strho »

co bude to I v tomto pripade?..ved to nadobudne hodnut od je po mnozstvo zaznamov co tam mam..ci nie?..pridanie(i) znamena to zapisat do suboru?...bo som to dako nepochopil..
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

áno, zapísať všetky záznamy (nie len ten zmenený, lebo si premažeš celý súbor a ostane ti tam iba tej jeden)
strho
Novice
Novice
Príspevky: 6
Registrovaný: 09 dec 2009, 21:23

Príspevok od používateľa strho »

Kód: Vybrať všetko

for i:=1 to filesize(s) do write(s,friend[i]);
ak si to myslel takto zapisat..tak som to skusil..a to mi neslo..:-(
kamos este poradil..ze si proste spravit novu premennu do ktorej si ulozit povodne informacie z toho recordu..a ked to pomenim tak proste len prepisat len to co so pomenil...ale to sa mi dako nezda..bolo by to mozne?

A nepremaze to lne tu poziciu na tom k-1?

//autoeditácia príspevku ( 17 Dec 2009, 21:45 )
dik moc..uz som si to opravil trosku inak:-)..konecne to fici

//autoeditácia príspevku ( 22 Dec 2009, 20:51 )
potreboval by som pomoct s dalsou procedurou...bo mi dako blbne.. je to procedura hladania v subore...

Kód: Vybrať všetko

 procedure hladaj_rok;
var a:array[1..100] of kniha;
    b:array[1..100] of integer;
    poc,p,i,rok,j,bc:integer;
begin
 clrscr;
 reset(s);
 write('Zadaj rok aky chces najst: ');
 readln(rok);
 i:=0;
 while not eof(s) do
  begin
   inc(i);
   read(s,a[i]);
  end;
 poc:=0;
 for j:=1 to i do
  if a[j].rok=rok then
   begin
    poc:=poc+1;
    b[poc]:=filepos(s);
   end;
 writeln('Pocet najdenych zaznamov je: ',poc);
 writeln;
 p:=1;
 while p<>poc+1 do
  begin
   vypis1(b[p]);
   inc(p);
  end;
 writeln;
end;
pricom kniha je typu record a knihy je pole typu kniha :-)..ono mi to najde..najde mi pocet vyhovujucich zaznamov...ael vypise mi uplne ine... podla man je chyba vo vypise ale neviem ju najst

Kód: Vybrať všetko

procedure vypis1(k:integer);
begin
 reset(s);
 seek(s,k-1);
 read(s,knihy[k]);
  with knihy[k] do
   begin
    writeln;
    writeln('Zaznam cislo: ',k,'.');
    writeln;
    writeln('Nazov knihy: ',nazov);
    writeln('Zaner knihy: ',zaner);
    writeln('Rok vydania: ',rok);
    writeln('Autor: ',autor.priezv,' ',autor.meno);
    writeln('Hodnotenie: ',hodnotenie,'%');
  end;
end;
Napísať odpoveď