> Il codice @V identifica l'inizio di un nuovo record.
Dalla tua mail precedente avevo capito il contrario, cioè che @V
indicasse la riga finale.
Allora bisogna modificare qualcosina...
Ti faccio la descrizione con i cambiamenti...spero non si incasini più
di quello che è già.
>> Do While Not oInputStream.IsEOF sLineaDaScrivere = "" Do sLineaLetta
>> = oInputStream.ReadLine sLineaDaScrivere = sLineaDaScrivere & "@" &
>> right(sLineaLetta, len(sLineaLetta) - 2) Loop While Not
>> (Left(sLineaLetta, 2) = "@V")
>>
>> oOutputStream.WriteString(sLineaDaScrivere & sCRLF) Loop
> (Ovviamente qui è ancora più criptico... ma anche prelevandolo
> dall'allegato lo capisco poco...)
Se ti appare così, in effetti è un po' difficile da capire...
Schematicamente:
'Questa variabile serve ad evitare una prima linea bianca nel file di output
bIsFirstLine = True 'Aggiunta ora
'inizia il ciclo e lo ripete fino a quando non
'arriva alla fine del file IsEOF = Is End Of File
Do While Not oInputStream.IsEOF
'legge una riga del file di "input"
sLineaLetta = oInputStream.ReadLine
'Verifica se c'è il segno d'inizio record "@V"
If (Left(sLineaLetta, 2) = "@V") Then
'se c'è questo segno nella riga che è appena stata letta allora
'se la varibile bIsFirstLine è vera *NON* scrivo nel file di output
If Not bIsFirstLine Then _
oOutputStream.WriteString(sLineaDaScrivere & sCRLF)
'cambia valore a bIsFirstLine in questo modo nei prossimi
'passaggi scriverà sempre nel file di output, vedi sopra
bIsFirstLine = False
'Come detto sopra, questa è la riga che contiene il simbolo di
'inizio record, quindi bisogna iniziare un "nuova" sLineaDaScrivere
'con all'interno solo questa riga
sLineaDaScrivere = right(sLineaLetta, len(sLineaLetta) - 2)
'Ora vediamo cosa fare se all'inizio della riga *letta*
'*non* c'è "@V" e quindi non è il primo record
Else
'Aggiungiamo a sLineaDaScrivere la riga che è appena stata letta
sLineaDaScrivere = sLineaDaScrivere & "@" & right(sLineaLetta,
len(sLineaLetta) - 2)
'Chiudiamo l'If
End If
'Chiudiamo il ciclo
Loop
'Scriviamo l'ultima riga che è ancora in sospeso
oOutputStream.WriteString(sLineaDaScrivere & sCRLF)
'Chiudiamo i file e la sub
oOutputStream.CloseOutput()
oInputStream.CloseInput()
End Sub
Attenzione perché con il simbolo dell'euro ha qualche problema, ricordo
di aver avuto problemi simili e Paolo mi aveva suggerito di aggiungere
una riga come questa:
oInputStream.Encoding = "Latin-9"
la puoi mettere appena *dopo*:
oInputStream = createUnoService("com.sun.star.io.TextInputStream")
aggiungendo anche la riga:
oOutputStream.Encoding = "Latin-9"
*dopo* la riga:
oOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
a me funziona correttamente.
> Potresti mettere questa parte del codice in una forma più "didattica" ?
Spero possa andare così.
Ciao!
Emanuele.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]