POMOCY!!!! Przeglądarka plików binarnych (rekordy)

0

Witam ....

Mam pewien problem[sciana]. Mam napisac w delphi(jako Console Application) przegladarke plikow rekordowych o roznym ukladzie definiowanym w osobnym pliku konfiguracyjnym... Udało mi sie jak <ort>na razie</ort> napisac przegladarke dla jednego typu rekordu( kod ponizej). Nie wiem jedak jakiej modyfikacji dokonac aby mozliwy byl wybor typu przegladanego rekordu z poziomu programu.

BARDZO PROSZE O POMOC.....

Moj adres email: <email>endrju-x1@<ort>po prostu.net</email></ort>

Kod programu:

program przegladarka_xxx;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
   rek = record
    Imie:string[20];
    Nazwisko:string[30];
    nr_telefonu:string[10];
   end;
   tabl = array[word] of rek;

var
  baza: file of rek;
  ilosc,i,i2:integer;
  katalog:tabl;
  nazwa:shortstring;
begin
   Writeln('Program ma za zadanie umozliwienie uzytkownikowi przegladanie');
   writeln('plikow binarnych - rekordowych o roznych ukladach.');
   writeln;
   writeln('Aby rozpoczac nacisnij Enter');
   writeln;readln;
   write('Podaj sciezke dostepu pliku binarnego: ');
   readln(nazwa);
   writeln;
  { TODO -oUser -cConsole Main : Insert code here }
  assignfile(baza,nazwa);
  writeln('Zeby rozpoczac przegladanie rekordow nacisnij Enter');
  readln;
 i:=0;
 reset(baza);
 while not eof(baza) do
  begin
   inc(i);
   read(baza, katalog[i]);
  end;
  i2:=i;
  close(baza);
  for  i:=1 to i2 do
   begin
    with katalog[i] do
     begin
      writeln('Rekord: ',i);
      write('Imie: ');writeln(imie);
      write('Nazwisko: ');Writeln(nazwisko);
      write('Numer telefonu:'); writeln(nr_telefonu);
      writeln;
     end;
     writeln('Dalej>> nacisnij Enter');
     readln;
   end;
   writeln('Koniec pliku bazy.Nacisnij Enter by wyjsc.');
   readln;
end.

0

Zaczął bym od wymyślenia postaci pliku konfiguracyjnego, dla tego przykładu można np. tak:


S 20 Imię
S 30 Nazwisko
S 10 telefon


znak typu ? wielkość ? nazwa pola.
?s? string Pascalowy, ?c? tablica znaków, ?b? bajtów, ?L? longint, ?w i d e.....?, ?0? (zero) string zakończony zerem jak w C.
Program to w zasadzie interpreter takiego pliczku, czytam go, wyliczam wielkość rekordu w bajtach, takimi porcjami czytam właściwy plik (blockread). Przeczytana porcja to tablica bajtów, potrzebne będą procedury wyświetlające pola rekordu, np. PiszLong(var poz: word), poz to pozycja w bajtowej tablicy do której wczytałeś rekord, ?var? bo PiszLong przestawi poz o 4, PiszZnak(var poz:word; ile:word);........

0

Dzieki za info .... troche mi to rozjasnilo sprawe, ale i tak bede musial sie nad tym mocno poglowic :/..... Chyba przez te swieta jestem troszke niekumaty .....

0

Dzieki Xitami, ale czy moglbys mi troche jasniej wytlumaczyc ide tego "interpretera" Bylbym Ci bardzo wdzieczny gdybys zechcial napisac procedurke przetwarzajaca plik konfiguracyjny w ksztalcie takim jak zaproponowales.....

BĘDĘ BARDZO WDZIĘCZNY....

0

Udalo mi sie :) Progs dziala prawidlowo :). Jeszcze raz dzieki za pomoc.

Wiekie dzieki ..... udanej koncowki swiat ;P

0

Udalo mi sie :) Progs dziala prawidlowo :). Jeszcze raz dzieki za pomoc.

Wiekie dzieki ..... udanej koncowki swiat ;P

Taa... nie kumam tylko czemu raz endju a raz endrju100 :P ?

0

Taa... nie kumam tylko czemu raz endju a raz endrju100 :P ?

Bo raz się loguje a raz nie :P

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