Emanuele ha scritto:

ciao Emanuele
Cosa significa ricostruire la riga di output?

Beh, da quel che avevo capito hai un file con "n" righe che devi
raggruppare secondo un certo ordine per costruire quella che mi è venuto
in mente di chiamare "riga di output"...tutto qui! ;-)

Il file di input è un database con un campo per riga,
ma ogni riga ha un codice che consente di identificarli.
Il codice è composto da una @ seguita da lettere (es @V), che consente di identificare il campo.
Lo scopo è quello di trasformare il fil di input in un file.csv

Ciò che devo fare è questo:
- Togliere i "fine riga" a tutte le righe
- rimetterlo solo a quelle che ad inizio riga hanno il codice @V
- eliminare tutto ciò che c'è tra @ e lo spazio successivo, in modo da avere la @ (senza il codice vero e proprio) come separatore di campo.

Pensi sia fattibile?

...
In questo modo non hai bisogno di creare una matrice di quelle
dimensioni. ;-)

Però devo salvare il file di output ad ogni riga... o no!

Nel caso dell'array penso vada salvato solo alla fine... ma per il
momento sono riuscito solo ad accumulare errori.

Se hai qualche dritta è la benvenuta


Ti consiglierei per prima cosa di non usare le funzioni
"LoadDataFromFile" e "SaveDataToFile" tal quali, ma di copiartele dentro
alla sub che vuoi creare ed usare i loro comandi per facilitarti la vita.

Pare che qual codice richiami altri moduli della libreria tools...
creando pasticci...

Tanto alla fine, tralasciando quel che serve per "iniziare" e "finire"
le parti importanti sono "oInputStream.ReadLine" in "LoadDataFromFile"
con cui leggi una singola linea del file, mentre con
"oOutputStream.WriteString(DataList(i) & sCRLF)" scrivi una riga in un file.

In pratica dovresti aprire i due file, poi usare "oInputStream.ReadLine"
per leggere dal file di partenza, quando hai trovato quello che vuoi
scrivere nel file usi "oOutputStream.WriteString(QuelCheDeviScrivere &
sCRLF)" per scrivere una riga nel nuovo file.

Un po' criptico?... :-)
Si! :-)

Nel file di testo allegato c'è un po' di codice...non l'ho provato, l'ho
scritto un po' ad occhio (o meglio recuperato ed assemblato dalle due
funzioni di cui sopra) e quindi non assicuro che funzioni...in più,
ovviamente, manca tutto quello che devi farci tu con il file. ;-)

Rimandiamolo a dopo... sempre ti sembri fattibile!

Anche perchè continuo ad avere problemi con "il prima"... :-)

Ho provato il codice che hai allegato... ma c'è qualcosa che non va nei cicli di while al fondo... e che al momento non ho ancora ben quagliato!

O forse non ho quagliato cosa infilare in tuttoquellocheserve... o altro...
Sostanzialmente non sono all'altezza di manipolare queste cose... e sono tentato di lasciar perdere...

Non posso raddrizzare tutte le storture distributive dei listini prezzi italiani....

Sono anche stupito che nessuno abbia ancora postato del codice realmente funzionante capace di leggere le righe di un file e poi di riscriverle...

Ma se vogliamo ancora provare Reicollo il tuo codice aggiungendo commenti e modifiche:

Sub esempioLoadSaveFile
Dim FileChannel as Integer ' serve a qualcosa?
Dim oInputFile as Object
Dim oOutputStream as Object
Dim oStreamString as Object
Dim oUcb as Object
Dim sCRLF as String
Dim oInputStream as Object
Dim oUcb as Object
Dim oOutputFile as Object
Dim sLineaDaScrivere as string

        pathfile = "c:\prova.txt"
        pathfile2 = "c:\prova2.txt"
        pathfile =converttourl(pathfile)
        pathfile2 =converttourl(pathfile2)

        sCRLF = CHR(13) & CHR(10) 'Serve per andare a capo
'Apre il file da cui devi leggere
        oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
        If oUcb.Exists(FilePath) Then
                oInputStream =          
createUnoService("com.sun.star.io.TextInputStream")
                oInputFile = oUcb.OpenFileReadWrite(FilePath)
                oInputStream.SetInputStream(oInputFile.GetInputStream)
        End If

'Apre il file in cui devi scrivere
        oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
        oOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
        If oUcb.Exists(FilePath) Then
                oUcb.Kill(FilePath)
                oOutputFile = oUcb.OpenFileReadWrite(FilePath)
                oOutputStream.SetOutputStream(oOutputFile.GetOutputStream)
        End If
'#########################################################
        While Not oInputStream.IsEOF 'SI BLOCCA QUI!
' VARIABILE NON IMPOSTATA...

                'Do questo credo fosse un refuso
                        'Qui ci fai quel che devi in qualche modo
                        'E metti tutto, ad esempio, in sLineaDaScrivere
                While LettoTuttoQuelloCheServe '?????
                        slineadascrivere=
                        LettoTuttoQuelloCheServe & " pippo"
                        'MANIPOLAZIONE TERRA TERRA.. TANTO PER PROVARE
                        oOutputStream.WriteString(
                        LettoTuttoQuelloCheServe_ & sCRLF)
                WEND
        Wend

        oOutputStream.CloseOutput()
        oInputStream.CloseInput()
End Sub

ciao
Bart

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a