Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Open App.Path &...........
Forum - Visual Basic 6 - Open App.Path &...........

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 13:39
Mercoledì, 30/04/2008
Salve a tutti..
se uso per esempio:
Codice sorgente - presumibilmente Visual Basic 6

  1. Open App.Path & "\ciao.txt" For Binary As #1
  2. print #1,"CIAO"
  3. 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

  1. Open App.Path & "\ciao.txt" For Binary As #1
  2. text1.text= ??
  3. 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 il 30/04/2008 alle 13:40
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 13:45
Mercoledì, 30/04/2008
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

PM Quote
Avatar
TSP (Ex-Member)
Pro


Messaggi: 99
Iscritto: 17/03/2008

Segnala al moderatore
Postato alle 13:53
Mercoledì, 30/04/2008
Per scrivere un file usa:

Codice sorgente - presumibilmente Delphi

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



per leggerlo:

Codice sorgente - presumibilmente VB.NET

  1. Dim numeroFile, LunghDato As Integer, Dato As
  2. numeroFile = FreeFile
  3. Open "C:\esempio.txt" For Binary Access Read Lock Read Write As #numeroFile
  4. 'legge la lunghezza della stringa
  5. Get #numeroFile, , LunghDato
  6. 'inizializza la variabile LungDato
  7. Dato = Space$(LunghDato)
  8. 'recupera la stringa di testo
  9. Get #numeroFile, , Dato
  10. Close #numeroFile
  11. 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 il 30/04/2008 alle 14:00
PM Quote
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 14:16
Mercoledì, 30/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  :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...

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:31
Mercoledì, 30/04/2008
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 ...

PM Quote
Avatar
chen (Normal User)
Rookie


Messaggi: 54
Iscritto: 27/04/2008

Segnala al moderatore
Postato alle 15:07
Mercoledì, 30/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

  1. Open App.Path & "\Filefinale.exe" For Output As #1
  2. Open App.Path & "\Fileoriginale.exe" For Binary As #2
  3. '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.
  4. 'e come se facesse una copia del fileoriginale.exe..
  5. close #2
  6. close #1


spero che abbiate capito adesso

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 15:52
Mercoledì, 30/04/2008
scusa ma se vuoi copiare un eseguibile usa l'api copyfile.
Comunque puoi fare cosi anche:
Codice sorgente - presumibilmente VB.NET

  1. Dim c As Byte
  2.  
  3. Open "C:\file.exe" For Binary As 1
  4. Open "C:\copydelfile.exe" For Binary As 2
  5. While Not EOF(1)
  6.     Get #1, , c
  7.     Put #2, , c
  8. Wend


Ultima modifica effettuata da Overflow il 30/04/2008 alle 16:03
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 20:37
Mercoledì, 30/04/2008
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)

Testo quotato


    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



PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 20:59
Mercoledì, 30/04/2008
ok:k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo