[ ventura @ 27.08.2003. 14:39 ] @
Kako procitati ovaj fajl koji je kreiran sa Delphi5, putem Write komande...
Dali mozda postoji externi utility, ili nesto tako slicno, ja sam nasao neki source koji to radi, ali posto ne znam delphi nikako nemogu da ga implementiram


Code:
var Member: TMember
     F : file of TMember;
begin
 AssignFile(F,'members.dat');
 Reset(F);
 try
  while not Eof(F) do begin
   Read (F, Member);
 {  DoSomethingWithMember; }
  end;
 finally
  CloseFile(F);
 end;
end;



Fajl je prikacen uz ovu poruku, ako bi neko mogao da ga pogleda i da mi kaze bio bih veoma zahvalan
[ overflow @ 27.08.2003. 17:33 ] @
Tamo gde si nasao ovo parce koda, probaj da pronadjes i definiciju tipa TMember. Bez toga nista.
[ ventura @ 27.08.2003. 17:35 ] @
Problem je sto nigde nema definicije TMember, a to parce koda sam nasao ovde:

http://delphi.about.com/library/weekly/aa080100a.htm
[ overflow @ 28.08.2003. 09:08 ] @
Kako nema:
Code:

type
  TMember = record
    Name : string[50];
    eMail : string[30];
    Posts : LongInt;
  end;


Imas sve lepo napisano na stranici koju si mi poslao. Samo da ti napomenem, ako tvoj fajl nije iste strukture kao ovaj gore navedeni TMember, mozes samo da duvas u prste. Dakle, potrebna ti je struktura fajla da bi iz njega mogao da citas podatke kao u primeru na prilozenom linku.
Ako ima jos nekih pitanja ...
[ ventura @ 28.08.2003. 14:53 ] @
A jel mozes da skines taj config.dat i pogledas dali mozes da izvuces strukturu...
[ overflow @ 28.08.2003. 15:14 ] @
Skinuo sam jos pre svoje prve poruke ... na prvu loptu nisam uspeo nista. Ako uspem, javljam. Mozda ima neki (hack) tool za ovako nesto (provaljivanje struktuiranog fajla)?
[ Rapaic Rajko @ 29.08.2003. 15:29 ] @
Ma kakav tool, najobicniji hex-editor resava stvar. Naprimer, otvoris tvoj fajl sa Win(Total)Comanderom (F3), zatim u lister-u u meniju izaberes hex-view, pa gledaj do mile volje...
Vec sam jednom prilikom ranije rekao: ne postoje fajlovi ovog ili onog tipa, postoje samo nacini kako ih mi gledamo. Prema tome, binarni fajlovi (recimo) su vrlo ruzni text fajlovi, a vazi i obratno. Fajl je fajl.
Elem, kad otvoris tvoj fajl na gore opisani nacin pazljivo broj bajtove (iliti karaktere), i tacno mozes da provalis duzine field-ova i strukturu celog recorda.

Rajko
[ overflow @ 29.08.2003. 16:36 ] @
Nisam ni ja rekao da postoje fajlovi "ovog ili onog tipa", vec "ove ili one strukture", sto je znacajna razlika. Dalje, otvaranjem u hex editoru nisi uvek (samo u retkim slucajvima) u mogucnosti da provalis ni podatke a tek strukturu ... tesko. Evo, probaj da provalis strukturu ovog fajla koji sam ja poslao u prilog, pa je posalji kao i nacin na koji si dosao do nje - ja nisam uspeo za venturin.
[ Rapaic Rajko @ 01.09.2003. 15:19 ] @
E, al' ga nadje...
Ali dobro, ovako za pet minuta sam provalio sledece:

1) U fajlu su dva recorda duzine po 152 (0x98) bajta;
2) Poslednja dva bajta su 0xD i 0xA, kanda si kopirao text editorom;
3) Imas dva tekstualna field-a u recordu:
1. valuta - na poziciji 9 (0 je prva pozicija), duzina 3 bajta;
2. naziv zemlje - na poziciji 72 (0x48), duzina 6 bajtova.

Nesto drugo je stvarno tesko izvuci, bez makar priblizne predstave o kakvim se podacima radi.
Pozdrav

Rajko

P.S. Radio sam svojevremeno alat za sve moguce konverzije fajlova, pa imam izvezbano oko...
[ overflow @ 01.09.2003. 18:02 ] @

Eto, samo sam hteo da ti pokazem da je vrlo vrlo tesko provaliti u strukturu necijeg fajla.
Sto se tice moje strukture, podacima koje si ti dobio ne bi mogao da izvadis podatke iz mog fajla:
Code:

  TSlogF = record
    Kurs : Real;
    Valuta : String[63];
    Drzava : String[75];
    BrStan : Integer;
  end;


A u fajl je upisano (nista nisam kopirao/budzio naknadno):
Code:

  SlogF.Valuta := 'Euro';
  SlogF.Drzava := 'Nemacka';
  SlogF.BrStan := 5673203;
  write(f, SlogF);
  SlogF.Kurs := 4.23;
  SlogF.Valuta := 'Din';
  SlogF.Drzava := 'Kuvajt';
  SlogF.BrStan := 12433203;
  write(f, SlogF);
[ Rapaic Rajko @ 04.09.2003. 08:56 ] @
Heh, ako si ti pravio onaj fajl koji si mi poslao, onda imas pocetnicku gresku...
Pre bilo kakvog rada/popunjavanja recorda, MORAS da uradis sledece:

Code:

    FillChar(SlogF, 0, sizeof(SlogF));


Pozdrav i ne zameri

Rajko

P.S. Recordi nisu klase, nemaju svoje konstruktore tako da gornju liniju obavezno treba da ubacis u kod. U C++ je vec drugacije...strukture (struct) funkcionisu maltene kao klase.
[ overflow @ 04.09.2003. 09:11 ] @
Taman posla da zameram, lepo je uvek cuti/nauciti nesto (novo)... Medjutim, ne vidim zasto bih filler-ovao 0 prvo ceo slog, kada cu ga i onako napuniti podacima pre nego sto pocnem da radim sa njim, tj. pre nego ga upisem u fajl?
[ Rapaic Rajko @ 10.09.2003. 14:25 ] @
Pogledaj fajl koji si okacio, pa ces znati zasto. Ostavio si dosta mesta za string field-ove, a stvarni podaci koje si upisao su znatno manji; rezultat je 'djubre' u samom recordu, a zatim i u fajlu. To mozda sada (u tvom programu) ne pravi probleme, ali ako otvaras tvoj fajl nekim drugim programom/alatom, moze biti pogubno.
Dobra praksa je da se record popuni nulama pre svakog popunjavanja. Dalje, ako je tvoj record na steku, znaci lokalna varijabla u proceduri/funkciji, onda OBAVEZNO moras 'nulovati' taj record pre upotrebe, jednako kao sto inicijalizujes neki lokalni integer. U oba slucaja se to radi zato sto ti kompajler obezbedjuje memoriju na steku za varijable, ali ti ne GARANTUJE sadrzaj te memorije; on je potpuno nasumican.
Pozdrav

Rajko
[ Pahulja @ 22.12.2005. 13:18 ] @
film koji sam skinula sa neta je DAT.file, kako da ga konvertujem u avi.

Hvala
[ Nemanja Avramović @ 22.12.2005. 20:35 ] @
Promeni mu ekstenziju (rename klasican) u AVI i radice (u vecini slucajeva radi :P)