Newsgroup: it.comp.lang.delphi
Titolo: Lettura dei file binari

Salve gente, ho un problema che per molti è una sciocchezza, ma mi sta
creando seri problemi.
Devo leggere un file nella sua interezza. Usando i TextFile mi legge
solo l'intestazione mentre devo leggerlo tutto. Se mi fate sapere mi
fate un favore. ciao ciao

Potresti utilizzare uno stream.
Per esempio guarda come funzione TFileStream. è abbastanza semplice.
Dipende però poi cosa ne devi fare di questo file.
saluti
Lorenzo

Ho provato ma non ho capito quasi niente.... :(
Se hai qualche esempio....
Il mio scopo è leggere un intero file il più veloce possibile per poi
passarli byte-byte
e ricavarmi gli esadecimali da mettere in una griglia...

Ciao,
eccoti un esempio ad-hoc.
var
  vFileStream: TFileStream;
  vI: integer;
  vBuffer: string;
  vString: string;
begin
   // crea lo stream in sola lettura
  vFileStream := TFileStream.Create('tuo nome file',fmopenread);
   // recupera le dimensioni e alloca lo spazio in una variabile di
tipo string
  vI := vfilestream.size;
  vBuffer := stringofchar(#32,vI);
   // legge tutto il contenuto e lo inserisce nella variabile
  vfilestream.Read(pchar(vBuffer)^,vI);
  // elimina l'oggetto stream (chiude in automatico il file)
  freeandNil(vfilestream);
  // esegue la lettura della stringa inserendo nella variabile vString
l'esadecimale del carattere esaminato
  for vI := 1 to length(vBuffer) do
  begin
    vString := InttoHex(Ord(vBuffer[vI]),2);
    showmessage(vstring);
  end;
Tieni presente che ci sono tecniche sicuramente migliori e più
performanti per leggere un file. In questo caso ho utilizzato una
variabile string che per me è molto comoda e mi permette di
manipolarla con facilità.
Spero di esserti stato d'aiuto.
ciao
Lorenzo

Sei fantastico, Funziona alla grande prorpio come serve a me.
E per scrivere un file uso semplicemente la WRITE?
Grazie comunque 
ciao ciao

Sì, ma devi utilizzare anzichè "fmOpenRead" la "fmOpenWrite".
Sull'help on line trovi anche le altre opzioni.
bye
Lorenzo

Grazie mille

Imho, questa filsastrocca inizia a diventare monotona..
Ogni giorno arriva una cometa che ha un problema, gli si da qualche
dritta e puntualmente la risposta è del tipo " non ho capito, ho
provato ma non riesco..." etc etc etc.
Forse le comete non sanno che le risposte pappa-pronta le hanno xche
qualcuno HA CAPITO, e per capire SI E' DOCUMENTATO, HA FATTO DEI TEST,
MAGARI CI HA PERSO IL SONNO....
Stendiamo poi un n-esimo velo pietoso x cio che riguarda faq, vecchi
post etc etc etc.
Solid, non è una critica a te, attenzione!
Ognuno sul ng risponde a prp discrezione...
Dico solo che inizio a essere veramente stufo di questi elementi che
non leggono un po di documentazione manco se li paghi....
AS

Il tuo ragionamento mi sta anche bene, se non vuoi rispondere puoi
anche non farlo.....
E se proprio lo vuoi sapere, ho gia risolto il problema in VB6 ma non
mi piace un granchè come linguaggio quindi ho deciso di rifarlo in
delphi ma ho incontrato questo problema e dopo 1 settimana ho deciso di
chiede qualche consiglio.
Dato che Solid mi ha proposto la stessa soluzione che avevo trovato io
ma che non ero riuscito ad utilizzare ho chiesto chiarimenti.
I NG servono a questo....
Scusa Solid se ci vai di mezzo non era mia intenzione.

Mi chiedo e mi domando....
1) dici che in una settimana non hai risolto il problema...
Ok, non lo hai risolto. Ma che tentativi hai fatto?
Forse hai postato del codice dicendo "ho scritto questo ma non va.. Mi
date una mano?" A me sembra di no...
2) Solid snake ti ha proposto la stessa soluzione trovata da te, ok!
Perchè, allora, nel tuo post iniziale non dici che stavi usando gia
uno stream, spiegando chiaramente quale era il tuo problema che avevi
incontrato?
Bho.... :-/
AS

1) ho provato diverse soluzioni.
2) Non potevo reperire tutto il codice.
3) Mi sembra stupido iniziare una discussione presentando tre tentativi
falliti.
Ultimo e non da meno) Non ho pensato nemmeno ad accennare le strade da
me tentate.
Ed ammetto che questo è un mio errore.