Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 6.626 pregleda

Najnovija ↓

Delphi .DAT file, kako procitati. 27.08.2003. u 15:39 · pre 282 meseca #1
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
Re: Delphi .DAT file, kako procitati. 27.08.2003. u 18:33 · pre 282 meseca #2
Tamo gde si nasao ovo parce koda, probaj da pronadjes i definiciju tipa TMember. Bez toga nista.
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 28.08.2003. u 10:08 · pre 282 meseca #4
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 ...
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 28.08.2003. u 16:14 · pre 282 meseca #6
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)?
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 29.08.2003. u 16:29 · pre 282 meseca #7
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
Re: Delphi .DAT file, kako procitati. 29.08.2003. u 17:36 · pre 282 meseca #8
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.
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 01.09.2003. u 16:19 · pre 282 meseca #9
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...
Re: Delphi .DAT file, kako procitati. 01.09.2003. u 19:02 · pre 282 meseca #10
:)
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);
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 04.09.2003. u 09:56 · pre 281 mesec #11
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.
Re: Delphi .DAT file, kako procitati. 04.09.2003. u 10:11 · pre 281 mesec #12
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?
Potpis
Sve sto je besmislenije, utoliko je bolje.
Re: Delphi .DAT file, kako procitati. 10.09.2003. u 15:25 · pre 281 mesec #13
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme