Problem z obsluga pliku

0
Uses CRT;

Var
  Imie,nazwisko,co:array[1..30] of string;
  c,c2:char;
  iloscosob:byte;
  t1:byte;
  plik:text;


PROCEDURE Wprowadz;

Begin
  ClrScr;
  Iloscosob:=iloscosob+1;
  Write('Imie : ');
  ReadLn( imie[iloscosob] );
  Write('Nazwisko : ');
  ReadLn( nazwisko[iloscosob] );
  Write('Porzyczyl : ');
  ReadLn( co[iloscosob] );
End;


PROCEDURE Wyswietl;

Begin
  ClrScr;
  Write('Numer wpisu ? (1..', iloscosob ,') :');
  ReadLn(t1);
  WriteLn('Imie       : ',imie[t1] );
  WriteLn('Nazwisko   : ',nazwisko[t1] );
  WriteLn('Porzyczyl  : ',co[t1] );
  WriteLn;
  Write('Wcisnij jakis klawisz...');
  c2:=readkey;
End;


PROCEDURE Zapisz;
Begin
  Assign(plik,'h:\BAZA1.txt');
  ReWrite(plik);
  WriteLn(plik,iloscosob);
  t1:=0;
  Repeat
    t1:=t1+1;
    WriteLn(plik,imie[t1] );
    WriteLn(plik,nazwisko[t1] );
    WriteLn(plik,co[t1] );
  Until t1=iloscosob;
  Close(plik);
End;

PROCEDURE Czytaj;
Begin
  Assign(plik,'h:\BAZA1.txt');
  Reset(plik);
  ReadLn(plik,iloscosob);
  t1:=0;
  Repeat
    t1:=t1+1;
    ReadLn(plik,imie[t1] );
    ReadLn(plik,nazwisko[t1] );
    ReadLn(plik,co[t1]);
  Until t1=iloscosob;
  Close(plik);
End;

Begin
  Iloscosob:=0;
  Repeat
  ClrScr;
  WriteLn('1. Nowy wpis');
  WriteLn('2. Wyswietlenie wpisu');
  WriteLn('3. Odczyt z pliku');
  WriteLn('4. Zapis do pliku');
  WriteLn('5. Koniec programu');
    Repeat
      readln(c);
    Until (c>='1') AND (c<='5');
  If c='1' Then Wprowadz;
  If c='2' Then Wyswietl;
  If c='3' Then Czytaj;
  If c='4' Then Zapisz;
  Until c='5';
End.

To jest moj kod na program bazy danych, chodzi o to ze zapisuje do pliku ludzi ktozy sa mi cos dluzni np na wpisie nr 1 jest jan Kowalsi pozyczyl 2-CD, ale jak usunac nr wpisu np 2 lub 3 ???
POMOZCIE DZIEKI

To podajcie prosze <ort>chodz </ort>na usuwanie kod z pisu ktory jest zapisany pliku

// poŻyczył!! - ŁF

0

Niewiem czy to zadziała ,popróbuj z tym

For a:=iloscosob downto nrusuwanego+1 do
 begin
   Imie[a-1]:=Imie[a];
   nazwisko[a-1]:=nazwisko[a];
   co[a-1]:=co[a];
 end;
 dec(iloscosob);
Zapisz;

Albo

 if iloscosob>0 then
 begin
  Imie[nrusuw]:=Imie[iloscosob];
  nazwisko[nrusuw]:=nazwisko[iloscosob];
  co[nrusuw]:=co[iloscosob];
 end;  
dec(iloscosob);
0

Kiedyś napisałem bazę danych w TP i też głowiłem się nad tym problemem(tylko, że miałem jeszcze większy, bo każda osoba z bazy(rekord) miała kilka indywidualnych informacji :P)

Zasada jest taka.

Powiedzmy, że masz 5 rekordów, a chcesz usunąć trzeci.
Usuwasz więc trzeci, zmniejszasz ilość osób o jeden, rekord 4 zamieniasz na rekord 3, a 5 na czwarty.

Potem zapisujesz bazę do pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1