chen (Normal User)
Rookie
Messaggi: 54
Iscritto: 27/04/2008
|
Salve a tutti..
se uso per esempio:
Codice sorgente - presumibilmente Visual Basic 6 |
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:
Codice sorgente - presumibilmente Visual Basic 6 |
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!! Ultima modifica effettuata da chen il 30/04/2008 alle 13:40 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
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
|
|
TSP (Ex-Member)
Pro
Messaggi: 99
Iscritto: 17/03/2008
|
Per scrivere un file usa:
Codice sorgente - presumibilmente Delphi |
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:
Codice sorgente - presumibilmente VB.NET |
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
|
dopo potrai aprirlo solo con Binary altrimenti verranno scritti simboli incomprensibili(prova ad aprire il file con notepad e vedrai)
Ultima modifica effettuata da TSP il 30/04/2008 alle 14:00 |
|
chen (Normal User)
Rookie
Messaggi: 54
Iscritto: 27/04/2008
|
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 scusate se sbalgio...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...
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
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 ...
|
|
chen (Normal User)
Rookie
Messaggi: 54
Iscritto: 27/04/2008
|
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):
Codice sorgente - presumibilmente Delphi |
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
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
scusa ma se vuoi copiare un eseguibile usa l'api copyfile.
Comunque puoi fare cosi anche:
Codice sorgente - presumibilmente VB.NET |
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 il 30/04/2008 alle 16:03 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
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
|
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
ok
|
|