PDA

View Full Version : [VB6] problema salvataggio file da più stringhe


formix
25-08-2006, 14:45
Buongiorno a tutti, scrivo quì perchè sono disperato sulla creazione di un file!



il mio problema è creare un file *.m7m (ovvero un file con firma digitale e marcatura temporale) ora questo file (s/mime) è composto da 5 parti ovvero



1 - intestazione e dati del file firmato

2 - file firmato (e crittografato)

3 - dati del timestamping

4 - timestamping

5 - stringa di chiusura





ora io preparo le mie 5 stringhe ed in particolare la 1 la 3 e la 5 scritte a manina in 3 variabili string

mentre le altre due le ricavo prendendo il testo dai file nel seguente modo :



' -------- Metodo di Load del file
Sub LoadFile(sFileName As String, sBuffer As String)

Dim abBinaryData() As Byte
Dim intFile

abBinaryData = sBuffer
intFile = FreeFile()

ReDim abBinaryData(FileLen(sFileName))
Open sFileName For Binary As #intFile
Get #intFile, , abBinaryData
Close #intFile

sBuffer = abBinaryData

End Sub



e quindi avrò i dati nella stringa sBuffer



il mio problema è che :

inserendo tutte e 5 me stringhe concatenate nel file risultante esce solo casino.

vado per passi viste tutte le prove che ho fatto :



inserisco l'intestazione - tutto OK



inserisco intestazione e file firmato - mi trovo l'intestazione non formattata ma tutta su una riga con uno spazio aggiunto dopo ogni carattere e subito di segiuto il file firmato



inserisco intestazione, file firmato e seconda parte dei dati - come sopra con in coda la 2° parte dei dati anch'essa non formattata



inserisco intestazione, file firmato, seconda parte dei dati e timestamping-

mi ritrovo l'intestazione formattata in seguito solo caratteri che non centrano nulla, ovvero una serie di quadratini (come quelli uasti per gli spazi o i CrLf) e null'altro



ultima opzione con il file completo delle 5 parti, come sopra



per salvare il file uso :



' -------- Metodo di Salvataggio del file Sub SaveFile(sFileName As String, sBuffer As String)

Dim abBinaryData() As Byte
Dim intFile

abBinaryData = sBuffer
intFile = FreeFile()
Open sFileName For Binary As #intFile
Put #intFile, , abBinaryData
Close #intFile

End Sub



ora le ho pensate tutte, la cosa più ovvia mi sembra quella che abbiano dei formati differenti le varie stringhe, ma se è davvero così come faccio a saperlo??

o ancora come faccio a portarle tutte nello stesso formato??



se qualcuno mi saprebbe aiutare ne sarei davvero grato, uso da pochissimo VB6 e ci sto impazzendo con questi file m7m (se qualcuno ha altri metodi più semplici x farli asrebbe bellissimo)



insomma dovrei ottere un file tutto formattato e con i blocchi giusti e non con caratteri a caso.





grazie mille a tutti in anticipo



Marco

Marco Giunio Silano
25-08-2006, 17:10
:uh:
sarà che ho letto svogliatamente, ma non ho mica capito... :what:

okay
25-08-2006, 17:50
Buongiorno a tutti, scrivo quì perchè sono disperato sulla creazione di un file!



il mio problema è creare un file *.m7m (ovvero un file con firma digitale e marcatura temporale) ora questo file (s/mime) è composto da 5 parti ovvero



1 - intestazione e dati del file firmato

2 - file firmato (e crittografato)

3 - dati del timestamping

4 - timestamping

5 - stringa di chiusura





ora io preparo le mie 5 stringhe ed in particolare la 1 la 3 e la 5 scritte a manina in 3 variabili string

mentre le altre due le ricavo prendendo il testo dai file nel seguente modo :



' -------- Metodo di Load del file
Sub LoadFile(sFileName As String, sBuffer As String)

Dim abBinaryData() As Byte
Dim intFile

abBinaryData = sBuffer
intFile = FreeFile()

ReDim abBinaryData(FileLen(sFileName))
Open sFileName For Binary As #intFile
Get #intFile, , abBinaryData
Close #intFile

sBuffer = abBinaryData

End Sub



e quindi avrò i dati nella stringa sBuffer



il mio problema è che :

inserendo tutte e 5 me stringhe concatenate nel file risultante esce solo casino.

vado per passi viste tutte le prove che ho fatto :



inserisco l'intestazione - tutto OK



inserisco intestazione e file firmato - mi trovo l'intestazione non formattata ma tutta su una riga con uno spazio aggiunto dopo ogni carattere e subito di segiuto il file firmato



inserisco intestazione, file firmato e seconda parte dei dati - come sopra con in coda la 2° parte dei dati anch'essa non formattata



inserisco intestazione, file firmato, seconda parte dei dati e timestamping-

mi ritrovo l'intestazione formattata in seguito solo caratteri che non centrano nulla, ovvero una serie di quadratini (come quelli uasti per gli spazi o i CrLf) e null'altro



ultima opzione con il file completo delle 5 parti, come sopra



per salvare il file uso :



' -------- Metodo di Salvataggio del file Sub SaveFile(sFileName As String, sBuffer As String)

Dim abBinaryData() As Byte
Dim intFile

abBinaryData = sBuffer
intFile = FreeFile()
Open sFileName For Binary As #intFile
Put #intFile, , abBinaryData
Close #intFile

End Sub



ora le ho pensate tutte, la cosa più ovvia mi sembra quella che abbiano dei formati differenti le varie stringhe, ma se è davvero così come faccio a saperlo??

o ancora come faccio a portarle tutte nello stesso formato??



se qualcuno mi saprebbe aiutare ne sarei davvero grato, uso da pochissimo VB6 e ci sto impazzendo con questi file m7m (se qualcuno ha altri metodi più semplici x farli asrebbe bellissimo)



insomma dovrei ottere un file tutto formattato e con i blocchi giusti e non con caratteri a caso.





grazie mille a tutti in anticipo



Marco


ma qull'estensione del file .m7m è tua? il salvataggio è di tua proprietà?

oppure è un salvataggio proprietario di terzi, perchè se è di terzi, e anche conoscendo le parti usate, mai riuscirai a salvare il files non conoscendo la compressione e scrittura dei blocchi di quel files.

Immagina di salvare un formato .mp3 proprietario di terze parti nel modo che usi tu un file .mp3 non lo salverai mai nella giusta compressione e dati appunto dell'mp3. L'mp3 è un linguaggio proprietario di 3 parti.

Per salvare in .mp3 ci sono delle routine sia per salvare che leggere, ora legate anche al sistema operativo per concessione del proprietario dei files compressi mp3 all'OS dove gira. l'OS per leggere e scrivere ha scritto anche delle API dedicate all'mp3 così anche per .wav.

slo questo:

abBinaryData = sBuffer
intFile = FreeFile()
Open sFileName For Binary As #intFile
Put #intFile, , abBinaryData
Close #intFile

... non basta per salvare o leggere quella estensione di un filmato compresso appunto .m7m di terzi a meno che non fai te un tuo proprio formato tuo proprietario con blocchi che tu conosci ecc ecc.


a meno che non abbia capito cosa vuoi fare

formix
25-08-2006, 19:23
m7m è un estensione introdotta da infocamere per identificare un file con firma digitale a cui è stata apposta una marcatura temporale .

cosi come p7m è il formato del solo file firmato digitalmente.

per il p7m non ho nessunissimo problema a salvarlo con le routine che ho messo e viene riconosciuto, quindi non capisco perchè anche l'm7m non debba venire, visto che in giro vi sono 200 tool che lo fanno e siccome non vi è l'intenzione di acquistarne uno lo devo fare io!

il prblema sta nella concatenazione delle varie stringhe che unite una dietro l'altra non danno il risultato desiderato, ma si modificano i caratteri, e ciò a mio avviso non è normale!!

mai nessno ha avuto a che fare con le firme digitali????