ďťż

Ładny brzuch

Czy ktoś mogłby mi podpowiedziec jak napisac procedure odczytujaca ciag 7 znakow a-Z 0-9 oraz 3 znakow 00h-FFh
czyli np mogą być zmienne
tekst : string[7];
B1, B2, B3 : byte;

a plik ma postac np:

abcdefg#00#23#BEa2f6g74#FF#AB#AE

pogrubione to znaki ktore powinny byc wczytane do zmiennej byte

próbowalem wszystko odczytywac jednym stringiem[10] a plik byl textfile tylko ze gdy procedura trafilaa na znaki #13 czyli enter to sie wysypywala i dalej juz nic nie dzialalo jak trzeba
Użytkownik DrizeR edytował ten post 13 marzec 2006, 21:29


procedure TForm1.Button1Click(Sender: TObject); type rek=record tekst:string[7]; b:array[0..2]of byte; end; var f:file; r:rek; begin AssignFile(f,'c:\plik.txt'); FileMode:=fmOpenRead; Reset(f,1); while not eof(f) do begin {$I-} BlockRead(f,r,10); {$I+} if IOResult<>0 then exit; end; CloseFile(f); end;

niezbyt ten kod mi dzialal troche jednak poczytalem o BlockRead i niby dziala tylko strasznie wolno i nie do konca tak wiec postanowilem wczytywac caly plik do pamieci co moze byc chyba szybsze niz odczytywanie po kawalku z pliku tylko jak wczytac caly plik do tablicy
B : Array[0..10000] of byte tylko jak dobrac odpowiedni rozmiar tablicy no i jak to wczytac przy pomocy BlockRead rozmiar pliku jest nie zmienny bo zawsze ma ok 9.70KB
Użytkownik DrizeR edytował ten post 15 marzec 2006, 14:20
Zrob dynamiczna tablice ...
b: array of byte;
A pozniej tylko setlength




niezbyt ten kod mi dzialal troche jednak poczytalem o BlockRead i niby dziala tylko strasznie wolno i nie do konca tak wiec postanowilem wczytywac caly plik do pamieci co moze byc chyba szybsze niz odczytywanie po kawalku z pliku tylko jak wczytac caly plik do tablicy
B : Array[0..10000] of byte tylko jak dobrac odpowiedni rozmiar tablicy no i jak to wczytac przy pomocy BlockRead rozmiar pliku jest nie zmienny bo zawsze ma ok 9.70KB
Jak nie działa jak działa :> To jest na jeden rekord, na więcej masz tak:procedure TForm1.Button1Click(Sender: TObject); type rek=record tekst:string[7]; b:array[0..2]of byte; end; var f:file; r:array of rek; i, x:integer; begin AssignFile(f,'c:\plik.txt'); FileMode:=fmOpenRead; Reset(f,1); i:=0; while not eof(f) do begin setlength(r,length(r)+1); {$I-} BlockRead(f,r[i],10,x); {$I+} inc(i); if x<>10 then begin setlength(r,length(r)-1); exit; end; if IOResult<>0 then exit; end; CloseFile(f); end;W tablicy R masz wszystko ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •