Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224

    [VB6] File di testo e vbTab

    Buongiorno a tutti...

    devo leggere un file *.txt con Visual Basic 6.0. Questo file di testo è strutturato in questo modo:

    codice:
    Nome Cognome SIGLA1 NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome SIGLA1 SIGLA2 NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome SIGLA1 SIGLA2 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome SIGLA1 NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome SIGLA1 NUMERO1 NUMERO2 NUMERO3 NUMERO4
    In pratica le righe sono quasi uguali...quasi perchè in alcuni nominativi ci sono 2 sigle ed in altri una sigla. Tutte le parole o numeri sono divisi da uno spazio. Questo file di testo devo infine rinominarlo in file di exel *.xls, ma prima però devo effettuare delle sostituizioni per adattarlo all'*.xls. Queste sostituiranno gli spazi con dei vbTab. Questo dovrebbe essere il risultato:

    codice:
    Nome Cognome        SIGLA1        NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome        SIGLA1 SIGLA2        NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome        SIGLA1 SIGLA2        NUMERO2 NUMERO3 NUMERO4
    Nome Cognome        SIGLA1        NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Nome Cognome        SIGLA1        NUMERO1 NUMERO2 NUMERO3 NUMERO4
    Il problema è che questo risultato non può essere riprodotto con un semplice Replace perchè il primo spazio deve saltarlo e lo spazio tra una sigla e l'altra deve saltarlo (in alcune righe c'è solo una sigla). Tutte le sigle sono testuali.

    Io avevo provato così:
    codice:
    Replace(Testo, " ", vbTab)
    ...risultati pessimi dato che mi sotituisce tutti gli spazi.

    Poi ho pensato di fare così:
    Se è il primo spazio allora non sostituire
    Se è il terzo spazio e il carattere successivo non è numerico allora non sostituire
    Altrimenti sostituisci tutti gli spazi
    ...non riesco minimamente a creare questo controllo!!!

    Spero che abbiate capito anche se non mi sono espressa benissimo.

  2. #2
    io espanderei prima di tutto ogni riga in un vettore per riconoscere il numero di elementi con

    A=split(VarRigaLetta," ")

    così avrai una cella per ogni campo della riga letta,
    esempio A(0)=Nome, A(1)=cognome...

    poi S sarà la riga da passare al file destinatario

    codice:
    S=A(0) &  " " & A(1) 'nome e cognome
    if ubound(s)=6 then
      'una sola sigla
      s=s & a(2) & vbtab & a(3) & vbtab & a(4) & vbtab & a(5) & vbtab & a(6)
    else
      '2 sigle
      s=s & a(2) & " " & a(3) & vbtab & a(4) & vbtab & a(5) & vbtab & a(6) & vbtab & a(7)
    endif
    o qualcosa di simile. Prova

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Le domande su Visual Basic vanno postate nell'apposito subforum. Ho spostato la discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224
    Grazie x la risposta MDM. Ho messo giù questo codice...

    codice:
    Set objFile = objFso.OpenTextFile(strFileName, ForReading, True, TristateTrue)
    strNewFile = Replace(Text1.Text, "  ", " ")
    arrFile = Split(objFile.ReadLine, " ")
    ...ma mi da errore sull'array. L'errore è questo:

    codice:
    Input oltre la fine del file

  5. #5
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224
    Problema risolto...chiunque abbia bisogno della soluzione mi contatti pure!!

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.