Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB6] eliminare righe vuote

    Come da titolo ho una variabile contenente testo e devo eliminare le righe vuote presenti alla fine. (dopo devo scrivere la riga in un file).

    come posso fare?
    avevo pensato una cosa del genere:

    codice:
    var = StrReverse(var)
    var = Replace(var, vbCrLf, vbNullString, 1, 2)
    var = StrReverse(var)
    (le righe in fondo dovrebbero essere due (me ne accorgo uan volta scritot il file).

    oltre a vbCrLf ho provato con vbCr vbLf

    Fatemi sapere se qualcuno di voi sa come risolvere.
    grazie a tutti ciao

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Il ragionamento è giusto se si tratta del carattere vbCrLf:
    codice:
    Var = "abc" & vbCrLf
    
    Var = StrReverse(Var)
    Var = Replace(Var, vbLf, "")
    Var = Replace(Var, vbCr, "")
    Var = StrReverse(Var)
    Se però, come hai riportato, il risultato non è quello voluto, potresti controllare "manualmente" di cosa si tratta:
    codice:
    MsgBox CStr(Asc(Mid(StrReverse(Var), 1, 1)))
    MsgBox CStr(Asc(Mid(StrReverse(Var), 2, 1)))
    Insomma, dipende da come ottieni quelle due righe (se sono righe)
    ... e non usare while wend è una sintassi deprecata

  3. #3
    mettendo:
    var = Replace(var, vbLf, vbNullString, 1, 1)

    elimina una delle due righe vuote, dopo se provo a vedere con un msgbox l'hex della stringa mi dice che non ci sono altre righe vuote, eppure una volta creato il file mi fa una riga vuota (non più due)

    Qualcuno sa perchè?
    ciao a tutti

  4. #4
    Il codice che hai postato
    codice:
    var = StrReverse(var)
    var = Replace(var, vbCrLf, vbNullString, 1, 2)
    var = StrReverse(var)
    non può funzionare! Invertendo l'ordine dei byte il carattere (anzi, i caratteri) VbCrLf non esistono +.
    VbCrLf è composto da 2 caratteri che hanno valore decimale 13-10. Invertendo il file diventano 10-13. E' normale che una riga viene eliminata! Prova a ragionare a righe...
    13-10
    13-10
    ... ma se immagini i byte su un'unica riga (come sono in realtà, le righe sono solo un modo per rappresentare il file), ottieni:
    ... 13-10-13-10 ovvero
    ... VbCrLf-VbCrLf

    Invertendo i caratteri ottieni:
    10-13-10-13 ... ovvero
    10-VbCrLf-13 ...
    Vedi che rimane solo un VbCrLf? Quindi ne elimini uno solo
    Prova a correggere il tuo codice così:
    codice:
    var = StrReverse(var)
    var = Replace(var, Chr(10) & Chr(13), vbNullString, 1, 2) '13 e 10 invertiti
    var = StrReverse(var)
    dovrebbe andare

  5. #5
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Originariamente inviato da LoRdCoStE
    una volta creato il file mi fa una riga vuota

    Qualcuno sa perchè?
    Se hai controllato che non ci sono più caratteri "speciali", si può pensare che la riga finale sia dovuta alla modalità di scrittura del file.
    Scrivendo il file in Append o Output ad esempio viene inserita.
    Cambiando la modalità in Binary si comporta diversamente.
    ... e non usare while wend è una sintassi deprecata

  6. #6
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Scusa, ma perchè non apri il file con il filesystemobject, col metodo readall lo metti tutto dentro una variabile e controlli gli ultimi due caratteri se sono = vbcrlf?
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  7. #7
    Originariamente inviato da Mabi
    Se hai controllato che non ci sono più caratteri "speciali", si può pensare che la riga finale sia dovuta alla modalità di scrittura del file.
    Scrivendo il file in Append o Output ad esempio viene inserita.
    Cambiando la modalità in Binary si comporta diversamente.
    emmmm.... non è così. E' una tua scelta mettere o no il VbCrLf
    Aperndo un file in output se scrivi utilizzando la Print# e alla fine del comando metti il ";" non viene inserito il VbCrLf, cioè

    codice:
    Print #xxx, Stringa   'va a capo
    Print #xxx, Stringa;  'non va a capo

  8. #8
    grazie a tutti, ho risolto.

    Una elle due righe era causata dal metodo di scrittura, ho inserito il punto e virgola dopo il print e ho risolto al prima.

    Per la seconda o eliminato il carattere 10 e il 13 (erano apputno inveritti come dicevate voi)

    Grazie a tutti
    Ciao

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.