Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di sanny82
    Registrato dal
    Mar 2003
    Messaggi
    689

    [ VB6] Problema srcittura file txt

    Alla fine della riga mi scrive questi caratteri, perchè?

    Es:
      6182992D.pdf
      6182967D.pdf
      6185492D.pdf


    io per scrivere nel file txt uso questo codice:

    codice:
    'Creo un file lista.txt in notepad dove scrivere i risultati
    Open App.Path & "\fileMancanti.txt" For Binary As #3
    Put #3, , pdf & ".pdf" & vbCrLf
    Close#
    una parola è poca e due sono troppe

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Come è definito 'pdf'.
    Se usi la modalità ad accesso diretto ('random' / 'binary')
    vengono scritti in testa al record dei descrittori contenenti
    la lunghezza del record ed altro, in modo da reperirlo
    in modo 'diretto' col l'istruzione complementare 'GET'.
    Questo descrittore è in pratica quello che ti ritrovi in testa
    ad ogni record.

    Ciao,
    Ciao, Brainjar

  3. #3
    Utente di HTML.it L'avatar di sanny82
    Registrato dal
    Mar 2003
    Messaggi
    689
    non ne ho idea....

    io faccio uno split per levare gli spazi in più...

    cosa devo fare allora per non farli scrivere?

    grazie ancora
    una parola è poca e due sono troppe

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per scrivere su un file .txt perchè non usi l'istruzione print#

    codice:
    Dim buffer As Integer
    buffer = FreeFile
    
        Open App.Path & "\fileMancanti.txt" For Append As #buffer
            Print #buffer, pdf & ".pdf"
        Close #buffer
    Ciao,
    Ciao, Brainjar

  5. #5
    prova così:
    codice:
    Open App.Path & "\fileMancanti.txt" For Binary As #3
    print #3 pdf & ".pdf" & chr(13)
    Close #3
    il chr 13 sta per l'invio.

  6. #6
    Utente di HTML.it L'avatar di sanny82
    Registrato dal
    Mar 2003
    Messaggi
    689
    Proprio quello cercavo è perfetto!

    Volevo chiederti una cosa, per eliminare il contenuto invece come faccio, visto che ho natato che se lo lancio una seconda lota non lo sovrascrive ma l'aggiunge nella riga successiva all'ultima?

    Grzie ancora
    una parola è poca e due sono troppe

  7. #7
    non aprirlo come binary (se non sbaglio è come append che aggiunge al file le info che vuoi salvare) ma come Output

    codice:
    Open App.Path & "\fileMancanti.txt" For Output As #3

  8. #8
    Utente di HTML.it L'avatar di sanny82
    Registrato dal
    Mar 2003
    Messaggi
    689
    Però non mi cancella quelle sucessive..

    Nel senso, se la prima volta scrivo 20 righe e dopo 15, mi rimango le ultime 5 vecchie perchè non vengono sovrascritte.

    Non c'è un modo per svuotare tutto il txt prima di andarci a scrivere?

    Grazie
    una parola è poca e due sono troppe

  9. #9
    prova così:

    Open nome_file For Output Shared As #3

    è la seconda ipotesi che mi è venuta in mente.

  10. #10
    Emmm... un po' di cose non tornano. La 'random' non inserisce descrittori in testa ad ogni record, per andare direttamente al record N tramite la GET si calcola il numero di bytes. Se vuoi aprire un file in random, infatti, è buona regola usare la LEN nella open per stabilire la lunghezza del record. In questo caso può essere utile se la variabile PDF ha sempre la stessa lunghezza e con la PUT puoi dire di sovrascrivere sempre il record 1.
    Il fine record invece non è chr(13), ma chr(13) & chr(10). Scrivendo l'istruzione...
    codice:
    print #3 pdf & ".pdf" & chr(13)
    ... si commette un errore, perchè la print in VB6 inserisce già il fine record (o vbCrLf), quindi otterresti...
    "pippo.pdf" & chr(13) & chr(10) & chr(13) (un carattere di troppo)
    ... a meno che l'istruzione print non termini con il punto e virgola, in questo caso non viene aggiunto il vbCrLf.
    In effetti aprendo il file in output ti cancella tutto il contenuto, quindi se lo apri prima di scriverci dentro e lo chiudi subito, otterrai sempre e solo un record, quindi come soluzione può fare al caso tuo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.