Oppure

Loading
30/04/08 11:39
chen
Salve a tutti..
se uso per esempio:
Open App.Path & "\ciao.txt" For Binary As #1
print #1,"CIAO"
close #1

quando lo eseguo mi da l'errore "Bad file mode"..sapete aiutarmi?..il mio intento era scrivere in ciao.txt CIAO..poi se per esempio apro:
Open App.Path & "\ciao.txt" For Binary As #1
text1.text= ??
close #1

cosa dovrei sostituire ai ?? per far si che il contenuto di ciao.txt venga caricato nella text?..li so gli altri tipi di comandi per caricare i file di testo...o per scrivere dentro un file..ma vorrei provare cosi sempre se possibile...GRAZIE!!:k:
Ultima modifica effettuata da chen 30/04/08 11:40
aaa
30/04/08 11:45
gantonio
Devi aprire il file in Output

Open "C:\file.txt" For Output As #1
Print #1, "Ciao"
Close #1

e in Input per leggere

Dim s As String
Open "C:\file.txt" For Input As #1
Line Input #1, s
Text1.Text = s
Close #1
aaa
30/04/08 11:53
TSP
Per scrivere un file usa:

Dim numeroFile, LunghDato As Integer, Dato As String
numeroFile = FreeFile
Open "C:\esempio.txt" For Binary Access Write Lock Read Write As #numeroFile
'assegna un valore alla variabile stringa
Dato = "esempio"
'determina la lunghezza della variabile
LunghDato = Len(Dato)
'inserisce prima la lunghezza del dato...
Put #numeroFile, , LunghDato
'e poi il dato stesso
Put #numeroFile, , Dato
Close #numeroFile


per leggerlo:

Dim numeroFile, LunghDato As Integer, Dato As 
numeroFile = FreeFile
Open "C:\esempio.txt" For Binary Access Read Lock Read Write As #numeroFile
'legge la lunghezza della stringa
Get #numeroFile, , LunghDato
'inizializza la variabile LungDato
Dato = Space$(LunghDato)
'recupera la stringa di testo
Get #numeroFile, , Dato
Close #numeroFile
MsgBox Dato

:k:

dopo potrai aprirlo solo con Binary altrimenti verranno scritti simboli incomprensibili(prova ad aprire il file con notepad e vedrai)

:k:
Ultima modifica effettuata da TSP 30/04/08 12:00
aaa
30/04/08 12:16
chen
grazie..vi volevo proprio a questo punto...per capire come funzionava..avevo in mente di creare una piccola applicazione che apriva un file per esempio winzip.exe(funzionante) in una text..e che poi alla pressione di un'altro pulsante mi salvi il contenuto della text in un percorso con un nome + .exe...ma nn cosi semplice il mio scopo e che poi il programma funzioni..senno facevo un filecopy..nn so se mi spiego..come se per esempio si apre con notepad un file .exe poi si risalva con un nome+.exe il file creato nn funzionera...credo perche si perdono dei caratteri unicode :dscusate se sbalgio:d...il file lo devo aprire con FOR BINARY o e poi basta scrivere un file con For Output?scusate se nn riesco a far capire cio che intendo fare per capire queste funzioni:d...
aaa
30/04/08 12:31
gantonio
In effetti non ti spieghi molto bene ... soprattutto non capisco a cosa ti serva tutto cio' ... che scopo ha ... ???

Comunque, un file eseguibile lo apri sia per leggere che per scrivere con Binary ...

Quindi

Open "C:\file.exe" For Binary As #1

Per leggere i dati usi l'istruzione

Get #

e per scrivere l'istruzione

Put #

NON puoi visualizzare il contenuto di un file in una textbox perche', essendo in binario, non tutti i caratteri ASCII sarebbero visualizzabili (l'unicode non c'entra nulla in questo caso ...).

Devi lavorare unicamente in memoria ... la Get # la utilizzerai per leggere i dati in un array di byte ...
aaa
30/04/08 13:07
chen
scusa nn e che mi potresti fare un esempio???su google ho trovato solo la sintassi ma nn mi e stata tanto di aiuto..
cmq x adesso ripeto il mio scopo e di creare un applicazione che carica un file nn necessariamente in una text..poi crei un file contenente tutto quello che e stato caricato e lo salvi in una destinazione da me scelta..e che poi funzioni il file...dato che nn sono tanto bravo a farmi capire provo a vare un esempio(nn so se sono giusti i metodi che uso ma e per far capire):


Open App.Path & "\Filefinale.exe" For Output As #1
Open App.Path & "\Fileoriginale.exe" For Binary As #2
'vorrei che caricasse il contenuto del Fileoriginale.exe e che lo scrive nel filefinale.exe e che dopo che l'operazione è finita il filefinale.exe funzionasse.
'e come se facesse una copia del fileoriginale.exe..
close #2
close #1

spero che abbiate capito adesso
aaa
30/04/08 13:52
Overflow
scusa ma se vuoi copiare un eseguibile usa l'api copyfile.
Comunque puoi fare cosi anche:
Dim c As Byte

Open "C:\file.exe" For Binary As 1
Open "C:\copydelfile.exe" For Binary As 2
While Not EOF(1)
    Get #1, , c
    Put #2, , c
Wend


Ultima modifica effettuata da Overflow 30/04/08 14:03
aaa
30/04/08 18:37
gantonio
Non dimenticare di chiudere i file con Close ...

E comunque, non e' il caso di copiare byte per byte ... sarebbe lentissimo ...

Utilizza un vettore di byte (come ti dicevo)

Dim b() As Byte
Open "C:\file1.exe" For Binary As #1
Open "C:\file2.exe" For Binary As #2
ReDim b(1 To LOF(1))
Get #1, , b
Put #2, , b
Close

aaa