Newsgroup: it.comp.lang.visual-basic
Titolo: prg di immagini

Ciao a tutto il NG,
sta lavorando a un progetto per un programma di grafica con VB6. Il mio
programma dovrebbe essere in grado di salvare in un file unico i dati
contenuti in un file JPG, BMP, ICO, GIF ecc. e dei dati ASCII contenenti
altre informazioni. Questo file, al momento dell'apertura, dovrebbe poi
essere diviso in due file temporanei, uno contenete i dati ASCII l'altro i
caratteri (penso che siano binari) del file di immagine originale. Purtroppo
MSDN non fornisce alcun aiuto sulla modalitą di apertura del file in
modalitą binaria con la seguente riga:
Open miofile.est For Binary as #Numerofile
Dice solamente che il tipo di dati Byte č normalmente utilizzato per
l'apetura dei file binari, ma mi sembra un semplice tipo di dati numerico
che va da 0 a 256.
Grazie a tutte le eventuali risposte.

 Grazie a tutte le eventuali risposte.
Con Open quellochevuoi.est for Binary as #1 hai a disposizione due 2
funzioni(Put e Get) col PUT scrivi dati nel file; col Get li leggi
Il put e il get supportano Array di Byte (in questo caso è come ad aprirlo
con un editor esadecimale[per ogni elemento dell'array c'è un byte])
e anche stringhe (per il  get devono essere dimensionate con es.
sInp=space(LOF(1)))
Spero che abbia capito.
Ciao
--
Timothy Redaelli
timothy.redae...@email.it
------------------------------------------------------------------
Togliere NONSPAMMARE per rispondere

 Ciao
Aggiungo...
Dato che devi inserire in un file gruppi di dati multipli da riconvertire
poi in file, ti servira' sicuramente un'intestazione che specifichi il nome
e la dimensione di ogni file...
Direi che un
Type UDTFileData
    FileSize As Long
    FileName As String * 251 ' +1 per il null=252, +4 per il long=256
End Type
Type UDTHeader
    NumFiles As Long
    FileData() As UDTFileData
End Type
Dovrebbe andare bene... Dubito infatti che avrai file con nomi piu' lunghi
di 250 caratteri o piu' grandi di 2GB...
Ovviamente devi costruirti e scrivere nel file l'header PRIMA di aggiungere
i dati, e rispettare l'ordine dei file nell'header quando li scriverai nel
maxifile binario.
Cmq la scrittura e' abbastanza semplice e anche la lettura non dovrebbe
essere un problema.
Considera che nell'header hai la dimensione di ogni file, percui per trovare
il punto di inizio di ogni file ti basta ciclare sull'header finche' non
trovi il tuo candidato e aggiungere la dimensione totale dell'header alla
somma delle dimensioni precedenti.
Poi vai di SEEK (istruzione) al numero trovato (o n-1, o n+1, fai un paio di
prove e troverai l'eventuale costante di aggiustamento) e inizi una GET di
FileSize Byte.
Ricorda che quando dimensioni un array per leggere n byte devi dimensionarlo
x(1 to n) oppure x(n-1), dato che l'option base e' normalmente 0.
Mi pare di non dimenticare nulla se non... Fai un paio di prove con dati
semplici, scrivendo e leggendo direttamente in binario.
Ricorda che se leggi in binario dei file di testo le stringhe saranno
incomprensibili, dato che VB e' internamenteUnicode, percui se vuoi leggere
un file testo da VB aprendolo in modalita' binaria devi applicare una
StrConv/vbUnicode ai dati letti.
Ciaotutti,
Asterix

grazie a Redatim e Alessandro per le risposte tempestive. (addirittura dopo
7 minuti!)