Newsgroup: it.comp.lang.visual-basic
Titolo: [?] La FUNZIONE non FUNZIONA :) (Abbastanza lungo)

Ciao a tutti
Ho di nuovo un problema con la funzione che dovrebbe inserire del
testo ogni tot caratteri. Ho adottato una soluzione diversa da quella
prima suggerita, perciň mi scuso con Domenico Statuto.
Allora, in un file .BAS.
Function ContaEInserisci(NumeroDiCaratteriDaContare As Integer,_
PuntoDiPartenza, FileDiTesto, StringaDaInserire, FileDiDestinazione_
As  String)
        Dim Buffer As String
        Dim Buffer2 As String
        Dim ndx As Integer
        Dim TestoDaTrovare As String
        Dim cont As Integer
        Dim a As Integer
 
        TestoDaTrovare = Chr(32)
        cont = 2
 
        Buffer = String(FileLen(FileDiTesto), 32)
 
        Open FileDiTesto For Binary As #1
            Get #1, , Buffer
 
            a = InStr(1, Buffer, PuntoDiPartenza)
            ndx = InStr(a + NumeroDiCaratteriDaContare, Buffer,_
TestoDaTrovare)
 
            Buffer2 = Mid$(Buffer, 1, ndx + 1)
            Buffer2 = Buffer2 + StringaDaInserire
            Buffer2 = Buffer2 + Mid$(Buffer, ndx + 1)
 
           For cont = 2 To 10
            ndx = InStr(a + NumeroDiCaratteriDaContare * cont,_
Buffer2, TestoDaTrovare)
            Buffer2 = Mid$(Buffer2, 1, ndx + 1)
            Buffer2 = Buffer2 + StringaDaInserire
            Buffer2 = Buffer2 + Mid$(Buffer2, ndx + 1)
           Next cont
 
        Close #1
 
        If Dir(FileDiDestinazione) <> "" Then
            Kill FileDiDestinazione
        End If
        Open FileDiDestinazione For Binary As #1
            Put #1, , Buffer2
        Close #1
End Function
Poi, nel form:
Private Sub Command1_Click()
    ContaEInserisci 10, "<-->", "d:\testo.txt", "####",_
"d:\testo2.txt"
    Unload Me
End Sub
e un file chiamato testo1.txt contenente:
aaa bbb ccc <--> ddd eee fff ggg hhh iii lll mmm nnn ooo ppp qqq rrr
sss ttt uuu vvv zzz
aaa bbb ccc ddd eee fff ggg hhh iii lll mmm nnn ooo ppp qqq rrr sss
ttt uuu vvv zzz
Provate ad avviare il programma e vedrete cosa succede. Non riesco
proprio a capire il perchč. 
Dovrebbe, ogni 10 caratteri + i caratteri che servono per arrivare
allo spazio piů vicino (chr(32)) scrivere "####".
Mi scuso per la luinghezza del messaggio e spero in un vostro aiuto:_
č tutto oggi che mi danno con questa funzione.......
Grazie in anticipo.
ByeZ!
Alkondor
Togliere NOSPAM per rispondere in e-mail

Alko, ho provato a capire quello che volevi fare nella tua Function,
giuro che ci ho provato... forse hai fatto qualche confusione fra
Buffer e Buffer2, usandole una per l'altra...
Hai provato mai a usare qualche commento ? Ti aiuta anche a
capire quello che fai, oltre a farlo capire agli altri.
Se ho capito bene quello che vuoi fare, anche leggendo l'altro mex,
potresti provare a usarla come l'ho riscritta, riunendo il codice tuo
e quello di Domenico Statuto:
________________________
Function ContaEInserisciNew(NumeroDiCaratteriDaContare As Integer, _
            PuntoDiPartenza As String, FileDiTesto As String, StringaDaInserire _
            As String, FileDiDestinazione As String)
    Dim BufIngresso As String
    Dim BufUscita As String
    Dim PuntatoreIniziale As Long
    Dim Carattere As String
    Dim Contatore As Long
    Dim TestoDaTrovare As String
    TestoDaTrovare = Chr(32) ' spazio
    BufIngresso = String(FileLen(FileDiTesto), 32)
    ' crei un buffer della stessa lunghezza del file
    Open FileDiTesto For Binary As #1 ' apri il file
    Get #1, , BufIngresso ' e metti il testo nel buffer
    Close 1 ' chiudi il file di ingresso che non ti serve piů
    PuntatoreIniziale = InStr(BufIngresso, PuntoDiPartenza)
    ' trova il marcatore del punto di partenza
    BufUscita = Left$(BufIngresso, PuntatoreIniziale - 1)
    ' e metti la prima parte della stringa nel buffer di uscita
    ' attenzione, se vuoi rimettere nell'uscita anche il testo
    ' di PuntoDiPartenza, la riga diventa cosě:
    '    BufUscita = Left$(BufIngresso, PuntatoreIniziale _
         + Len(PuntoDiPartenza))
    ' oppure spossta sopra la riga qui sotto
    PuntatoreIniziale = PuntatoreIniziale + Len(PuntoDiPartenza)
    ' escludi dalla ricerca la stringa di controllo
    For Contatore = PuntatoreIniziale To Len(BufIngresso)
        ' a partire dal tuo punto d'ingresso
        Carattere = Mid(BufIngresso, Contatore, 1)
        ' prendi un carattere
        If Carattere = TestoDaTrovare Then
            BufUscita = BufUscita & StringaDaInserire
            ' se č uno spazio aggiungi la tua stringa
        Else
            '         BufUscita = BufUscita & Carattere
        End If
        BufUscita = BufUscita & Carattere
        ' in ogni caso aggiungi il carattere alla stringa
        ' se non vuoi riaggiungere gli spazi, togli questa riga
        ' da qui e attiva quella che sta nell'Else
    Next Contatore ' controlla il prossimo carattere
    If Dir(FileDiDestinazione) <> "" Then
        Kill FileDiDestinazione
    End If
    Open FileDiDestinazione For Output As #1
    Print #1, BufUscita;
    Close #1
End Function
_________________________
SPERO che fosse quello che volevi...
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

 Togliere NOSPAM per rispondere in e-mail
--
By matteo(olè)
Mail to: 
ori...@libero.it
 
vuoiunscinquant...@yahoo.it

Ciao raga!
Lo so,. quella funzione è un macello unico, e l'ho riscritta tutta!!!
Ora funziona, ma non ho capito perchè ho risolto il problema in quel
modo........ 
In pratica la funzione doveva trovare il punto di partenza, da quel
punto doveva contare tot, e da li spostarsi fino allo spazio più
vicino e, quindi, doveva inserire una stringa; poi ancora e ancora.
Lo so, è una cosa strana e difficile da capire (magari non da fare,
per voi esperti.....)
Comunque vorrei ringraziarvi tutti.
