PDA

Visualizza versione completa : Convertire file binari in file di testo


axell
04-09-2003, 23.16.25
sapete dirmi se e come è possibile covertire file binari del vecchio VB3, in file di testo?

ciao

LoryOne
05-09-2003, 09.12.44
In file ASCII ?

axell
05-09-2003, 19.07.26
no, propio in file di testo .txt

sai come fare?

ciao

Cucciolo
06-09-2003, 18.31.46
protresti provare a convertirlo in ex e poi con edit pad in .txt

axell
06-09-2003, 20.06.18
Originariamente inviato da Cucciolo
protresti provare a convertirlo in ex e poi con edit pad in .txt

non credo che l'edit pad possa convertire un file .exe in .txt
almeno che io sappia...

tu hai mai provato?

LoryOne
06-09-2003, 23.18.42
Guarda, la prima cosa che mi viene in mente è rinominare il .exe in .txt :D e voilà.

Qualunque file è in formato binario, non esistono files che non lo siano anche se hanno estensioni tipo .txt, .bat, ecc.

I files in ASCII altro non sono che sequenze di caratteri tutti stampabili e nessuno interpretabile.
Se un file viene nominato .txt è solo per far capire all'utente che al suo interno contiene caratteri comprensibili (lettere e punteggiatura) dall'uomo.

Il PC non fa differenza nell'aprirli ma solo nell'interpretarli.

Se vuoi ricreare un file tipo un .exe o un .com in formato .txt, non devi fare altro che

1) Preparare un buffer che contenga il/i carttere/i che vuoi leggere
2) Aprire il file sorgente in lettura
3) Aprire il file destinazione in scrittura
4) Leggere il file sorgente sequenzialmente fino a riempire il buffer
5) Scrivere nel file destinazione il buffer riempito
6) Ripetere le operazioni 4-5 fino al raggiungimento della fine del file sorgente.

Il codice in VB potrebbe essere questo:

Dim S As String

S=Chr$(0) 'Buffer da 1 carattere
'Per far prima puoi fare S=Space(32000), ossia buffer da 32Kb ma attento alle dimensioni del file in .TXT
Open "C:\Command.COM" For Binary Access Read Lock Write As 1
Open "C:\Command.TXT" For Binary Access Write Lock Read As 2
While Not Eof(1)
Get #1,,S
Put #2,,S
Wend
Reset


Ciao :)

axell
07-09-2003, 13.51.39
Grande!:)
Grazie LoryOne lo provo subito.

ti do maggiori info su cosa devo fare, ho dei file .frm del vecchio vb3 che devo far leggere dal vb6, ma per farlo bisogna prima convertirli in file .txt.

Cmq ti lascio un link di un sito dove trovi spiegazioni + dettagliate sull'argomento.



http://www.gridlinx.com/vb3.htm

Fast-M
15-09-2003, 15.54.46
Ma non è che per caso il tuo scopo iniziale era quello di semplicemente aprire i vecchi file sorgenti vb3, con il nuovo vb?
Perchè se il tuo scopo era questo, allora dovevi togliere soltanto la formattazione del vecchio vb3 in modo da permettere al nuovo vb di potere compilare il sorgente.
Ma in genere i VB per fare questo, hanno integrate delle funzioni di importazione/conversione dalle vecchie versioni dei sorgenti o comunque ci sono programmi scaricabili che convertono nei vari formati e che sono in genere rilasciati da microsoft stessa.
Se invece i vecchi file vb3 sono stati già compilati in un eseguibile(non ricordo se il vb3 già compilava, ma mi sembra di no), allora trasformando il .exe in file di testo non concludi niente, ma avrai solo una sequenza senza significato di simboli che non sono ovviamente decodificabili dall'ASCII e quindi non puoi vederli in formato testo.
Per rispondere a LoryOne farei una considerazione:
Lory, è ovvio che tutto è binario a livello macchina, perchè in ram puoi solo memorizzare bit, mica patate!:D
Quindi è una cosa ovvia che non ha molto senso specificare.
Quindi è ovvio che se tutto è binario deve essere il sistema operativo a stabilire cosa fare di un file che viene aperto dall'utente e a questo servono proprio le estenzioni: .txt o .exe o .xls ecc.
Cioè non è vero che l'estensione serve solo all'utente a fargli capire che tipo di file è quello, assolutamente.
L'estensione ha un significato principalmente per il sistema operativo che grazie a questa già sa cosa fare di un file che viene lanciato e nel caso l'estensione non coincide con il reale tipo di file (che in genere è specificato nell'header binario del file stesso), cioè con il suo reale protocollo per cui è stato scritto, allora da un messaggio di errore e non apre il file.
Ovviamente se il file ha un formato proprietario di un programma, il sistema operativo lo passa a questo programma facendo tutto in automatico e lanciando il programma che elaborerà quel file.
Se il file è invece un .exe cioè un eseguibile, il sistema operativo lo passa alla cpu, perchè in questo caso il file è già un insieme di byte-code eseguibili dalla cpu e cioè istruzioni x86 (nel caso di cpu intel) e non ha bisogno di alcun programma per essere eseguito, ma solo del sistema operativo stesso che opera sulla cpu.
Attenzione ragazzi, pensate prima di dire certe cose con tale disinvoltura.:)

LoryOne
15-09-2003, 16.42.05
Beh ma io che ho detto di male ? :D

Fast-M
15-09-2003, 17.06.41
Originariamente inviato da LoryOne
Se un file viene nominato .txt è solo per far capire all'utente che al suo interno contiene caratteri comprensibili (lettere e punteggiatura) dall'uomo.

Non è una cosa sbagliata quella che hai detto, ma potrebbe far pensare che le estensioni servono solo a questo, mentre invece questo è uno scopo secondario e di conseguenza.
Il loro scopo principale e per il sistema operativo che stabilisce cosa farne o a quale programma passarli.
:)

pholcus
15-09-2003, 17.15.51
Cioè non è vero che l'estensione serve solo all'utente a fargli capire che tipo di file è quello, assolutamente.
L'estensione ha un significato principalmente per il sistema operativo che grazie a questa già sa cosa fare di un file che viene lanciato e nel caso l'estensione non coincide con il reale tipo di file (che in genere è specificato nell'header binario del file stesso), cioè con il suo reale protocollo per cui è stato scritto, allora da un messaggio di errore e non apre il file.
Ovviamente se il file ha un formato proprietario di un programma, il sistema operativo lo passa a questo programma facendo tutto in automatico e lanciando il programma che elaborerà quel file.
Se il file è invece un .exe cioè un eseguibile, il sistema operativo lo passa alla cpu, perchè in questo caso il file è già un insieme di byte-code eseguibili dalla cpu e cioè istruzioni x86 (nel caso di cpu intel) e non ha bisogno di alcun programma per essere eseguito, ma solo del sistema operativo stesso che opera sulla cpu.


Forse sotto winzozz, anche se ho i miei dubbi (non mi ricordo) , perche' sotto linux non e' affatto cosi..tant'è che sotto linux e' consuetudine non dare estensione ai file di testo e agli eseguibili..

LoryOne
15-09-2003, 18.45.47
Mah, ne sotto Windows ne sotto DOS.
E' possibile far eseguire un file .txt (che in realtà è .com) da un .exe.
Questo perchè MS-DOS carica il Command.COM per mostrarvi i prompt del DOS e darvi la possibilità di eseguire i comandi.

Il fatto che da c:\> io non possa lanciare un .txt è perchè l'interprete dei comandi non me lo consente.
Daltronde, se non lanciate il command.COM non potete eseguire nessun programma.

In Windows il discorso è ancor più semplice, in quanto è il S.O. a lanciare il programma adatto alla gestione del file con quella data estensione, cosa che potete modificare a vostro piacimento. ;)