Newsgroup: it.comp.lang.visual-basic
Titolo: Andare a capo conservando le parole intere

Forse chiedo troppo...
esiste quancosa di pronto in rete, che consente avendo una variabile stringa 
di inseire un vBcr ogni tot caratteri in modo da avare tanti "a capo" che 
perň non tronchino le parole?
Cioč vorrei che le singole righe non fossero piů lunghe ad es, di 60 
caratteri.
Mi sono messo da solo a fare un funzione simile con Split, MID, LEFT, ecc... 
ma non ne vengono fuori!
Ringrazio tutti in anticipo.

 Cioè vorrei che le singole righe non fossero più lunghe ad es, di 60


"LupoNero"

questo l'ho fatto ora al volo. non c'e' controllo d'errore, e per 
semplicita' e riscontro immediato usa due textbox, ma funzionicchia. a te 
metterlo a punto.
su un form oltre ai textbox metti due command, e incolla il codice.
ciao, a.
Option Explicit
Dim s As String, a() As String, j As Long
Private Sub Command1_Click()
    If Clipboard.GetFormat(vbCFText) Then Text1 = 
Clipboard.GetText(vbCFText)
End Sub
Private Sub Command2_Click()
    If Trim(Text1) = "" Then Beep: Exit Sub
    a = Split(Text1, " ")
    For j = LBound(a) To UBound(a)
        s = s & a(j) & " "
        If Len(Trim(s)) >= 30 Then
            Text2 = Text2 & Trim(s) & vbNewLine
            s = ""
            Text2.SelStart = Len(Text2)
            DoEvents
        End If
    Next
End Sub

 ecc... ma non ne vengono fuori!
Direi che la strada della funzione Split non è praticabile (almeno con 
semplicità) a meno che i tuoi separatori di parola non siano 
esclusivamente spazi, o un qualunque altro segno di interpunzione.
Con Left e Right temo sia la medesima solfa.
Una delle strade è questa:
con un ciclo for (dato che presumo costante la lunghezza della stringa) 
mi scorro i caratteri uno ad uno,
in una variabile mi inserisco un checkpoint di sottostringa,
ogni volta che incontro un segno di interpunzione verifico se la 
lunghezza della stringa tra il checkpoint e la posizione attuale è 
minore di 60 (o di quello che ti serve) se si proseguo, altrimenti 
concateno la sottostringa (con il carattere vbcrlf) ad una variabile 
appoggio.
ciao
stefano

 esclusivamente spazi, o un qualunque altro segno di interpunzione.
oops... vista continua a impallare le connessioni, quindi ho la rete a 
sprazzi, e non sapendo che split non fosse praticabile, l'ho praticata :)
ineffettido'perscontatocheiltestodadividereunqualcheseparatorecel'abbia :)
ciao, a.

 ineffettido'perscontatocheiltestodadividereunqualcheseparatorecel'abbia :)
:-)
forse mi sono spiegato male.
ho visto la tua soluzione e usi split con separatore " ",
e andrebbe benissimo se fossimo sicuri sia quello e basta.
Però potrei anche scrivere una frase del tipo:
"il cielo è blu sopra le nuvole,ma i pooh non mi piacciono",
quindi come separatore abbiamo "," e " ", potrebbe andar bene uguale ma 
anche no.
io farei una cosa del genere (non l'ho verificata) ma magari è solo una 
cervellotica fantasia:
*******************************
Dim iCheckPointStart As Long, iCheckPointEnd As Long, iScorri As Long
Dim sStringa As String, sCharInterp As String
  sCharInterp = ".! $%&?_-:,;"
     iCheckPointStart = 1
     iCheckPointEnd = 1
     For iScorri = 1 To Len(Text1.Text)
         If InStr(sCharInterp, Mid$(Text1.Text, iScorri, 1)) = 0 Then
             If Len(Mid$(Text1.Text, iCheckPointStart, iScorri - 
iCheckPointStart)) >= 60 Then
                 sStringa = sStringa & IIf(sStringa = "", "", vbCrLf) & 
Mid$(Text1.Text, iCheckPointStart, iCheckPointEnd - iCheckPointStart + 1)
                 iCheckPointStart = iCheckPointEnd
             End If
         Else
             iCheckPointEnd = iScorri
         End If
     Next iScorri
     sStringa = sStringa & vbCrLf & Mid$(Text1.Text, iCheckPointStart)
*******************************
ciao
stefano

 lunghezza di stringa ottenuta con il commando Len.
Ciao Federico,
e dai, un po' di impegno. Che ti costa mettere la tua risposta sotto la
domanda a cui stai rispondendo?
Magari tagliando anche le parti superflue.
ciao
stefano

 
  :-)
forse mi sono spiegato male.
ho visto la tua soluzione e usi split con separatore " ",
e andrebbe benissimo se fossimo sicuri sia quello e basta.
Perň potrei anche scrivere una frase del tipo:
"il cielo č blu sopra le nuvole,ma i pooh non mi piacciono",
quindi come separatore abbiamo "," e " ", potrebbe andar bene uguale ma 
anche no.
io farei una cosa del genere (non l'ho verificata) ma magari č solo una 
cervellotica fantasia:
*******************************
Dim iCheckPointStart As Long, iCheckPointEnd As Long, iScorri As Long
Dim sStringa As String, sCharInterp As String
  sCharInterp = ".! $%&?_-:,;"
     iCheckPointStart = 1
     iCheckPointEnd = 1
     For iScorri = 1 To Len(Text1.Text)
         If InStr(sCharInterp, Mid$(Text1.Text, iScorri, 1)) = 0 Then
             If Len(Mid$(Text1.Text, iCheckPointStart, iScorri - 
iCheckPointStart)) >= 60 Then
                 sStringa = sStringa & IIf(sStringa = "", "", vbCrLf) & 
Mid$(Text1.Text, iCheckPointStart, iCheckPointEnd - iCheckPointStart + 1)
                 iCheckPointStart = iCheckPointEnd
             End If
         Else
             iCheckPointEnd = iScorri
         End If
     Next iScorri
     sStringa = sStringa & vbCrLf & Mid$(Text1.Text, iCheckPointStart)
*******************************
ciao
stefano
p.s.
scusa l'eventuale duplicazione ma interbusiness ogni tanto mi sega 
qualche invio.

 invio.
Scusatemi se vi rispondo solo ora, ma ho avuto problemi con internet e non 
ho potuto leggere le vostre risposte, e pertanto sono stato costretto a 
impegnarmi per fare qualcosa.
Sono contento che vi siate impegnati anche voi :-)) ma sinceramente speravo 
ci fosse del codice già pronto senza farvi lavorare :-(.
Ho buttato giù il seguente codice che, anche se brutto, sembra funzionare. 
Il suo compito è quello di inserire una "@" ad ogni interruzione di riga. 
Poi tratterò la "@" con un'altra funzione per altre operazioni che non stò 
qui a descrivere.
Spero possa essere utile per qualcun altro.
Function DividiStringa(StringaIniziale As String, NCaratteriMax As Integer)
    NCaratteriStringa = NCaratteriMax
    NStringa = 0
    ParolaPrec = Split(StringaIniziale, " ")(NStringa)
    NStringa = NStringa + 1
    If NStringa <= UBound(Split(StringaIniziale, " ")) Then
        ParolaSuc = Split(StringaIniziale, " ")(NStringa)
    Else
        ParolaSuc = ""
    End If
    If Len(ParolaPrec & ParolaSuc) < NCaratteriStringa Then
        PezzoDiStringa = ParolaPrec & " " & ParolaSuc
    Else
        PezzoDiStringa = PezzoDiStringa & "@"
        NStringa = NStringa - 1
        NCaratteriStringa = NCaratteriMax + Len(PezzoDiStringa)
    End If
    NStringa = NStringa + 1
    While ParolaSuc <> ""
        If NStringa <= UBound(Split(StringaIniziale, " ")) Then
            ParolaSuc = Split(StringaIniziale, " ")(NStringa)
        Else
            ParolaSuc = ""
        End If
        If Len(PezzoDiStringa & " " & ParolaSuc) < NCaratteriStringa Then
            If Right(PezzoDiStringa, 1) = "@" Then
                PezzoDiStringa = PezzoDiStringa & ParolaSuc
            Else
                PezzoDiStringa = PezzoDiStringa & " " & ParolaSuc
            End If
        Else
            PezzoDiStringa = PezzoDiStringa & "@"
            NStringa = NStringa - 1
            NCaratteriStringa = NCaratteriMax + Len(PezzoDiStringa)
        End If
        NStringa = NStringa + 1
    Wend
    DividiStringa = PezzoDiStringa
End Function 

 anche no.
ti eri spiegato benissimo. e' quello che intendevo con 'mettere a punto'. 
solo chi l'ha chiesto sa cosa passera' alla funzione.
d'altronde, la casistica rischia di essere infinita. la virgola senza spazio 
dopo e' considerato errore dattilografico, ma se gliene metti uno  anche 
prima puo' il mio codice la considera parola a se'. l'apostrofo italiano i 
pc non lo considerano mai, e se fai ctrl+sx il cursore va all'inizio di 
"l'albero" come di "o'leary".
senza averla provata, la tua soluzione sembra piu' flessibile. la mia era la 
piu' rapida con un testo impaginato normalmente. ma, appunto, tutta da 
verificare.
ciao, a.
ps - quando usavo interbusiness di solito mettevo il timeout del server a 3' 
perche' in effetti ha spesso risposte incongrue.

 a 3' perche' in effetti ha spesso risposte incongrue.
ottima idea, in effetti è un po' snervante, a volte le inserisce quasi 
subito, altre volte ci mette un po', altre ancora non me li considera 
proprio.
grazie
ciao
stefano

 proprio.
addendum.
il timeout lo impostavi su outlook-express,
io uso thunderbird e non l'ho trovato.
Mi faccio un po' di ricerche sperando che sia una "funzione" presente
ciao
stefano

 Spero possa essere utile per qualcun altro.
Un piccolo consiglio,
nella tua funzione non ho visto le dichiarazioni delle variabli.
A meno che non le abbia cancellate prima di postare il codice,
i casi sono due,
- non usi Option Explicit
- usi variabili globali
nel primo caso ti consiglierei di utilizzarlo assolutamente, ti 
risparmierai (primo o poi) lunghe sessioni di debug.
nel secondo caso ti consiglieri un uso un po' più attento delle 
variabili globali, potenziali portatrici di casini (in questo caso non 
sono necessarie, è sufficiente dichiararle tutte all'interno della funzione)
ciao
stefano

 il timeout lo impostavi su outlook-express,
si', e ora in winmail. ottimi programmi.
mi spiace, ma non conosco tb. puoi sentire su
it-alt.comp.software.mozilla
parlano spesso di tb.
ciao, a.

 parlano spesso di tb.
Grazie.
Ho cercato anche winmail, ma è shareware giusto?
Thunderbird mi piace, soprattutto per il filtro antispam integrato; in 
ufficio soprattutto mi è indispensabile con le oltre 100 mail quotiane 
di spazzatura, con OE stavo impazzendo.
ciao
stefano

 Mi faccio un po' di ricerche sperando che sia una "funzione" presente
Strumenti-->Opzioni-->Avanzate-->Generali-->Timeout connessione.
Bye, G. 

Paperino ha scritto:

Innanzitutto grazie per l'interessamento,
ho controllato quello che mi hai indicato ma non ho trovato nulla (ho la 
versione 2.0.0.6)
Sul tab "Rete e spazio su disco" c'è il timeout ma si riferisce alla 
connessione di thunderbird a internet e non alla spedizione del 
messaggio sul newsgroup.
sempre nel tab generale, però, nell' "editor di configurazione" ho 
trovato la voce mailnews.tcptimeout, potrebbe essere questa?
Chiedo e non provo perchè il problema ce l'ho in ufficio (interbusiness) 
mentre a casa ho tiscali e la pubblicazione è immediata.
grazie 1000
ciao
stefano

 stefano
ho scritto male io. windows mail e' l'oe di vista. antispam integrato, 
lievemente diversa la gestione mittenti bloccati/attendibili, archiviazione 
come singoli .eml/nws al posto dei dbx, e allo stesso modo singoli file 
.contact al posto della wab (un po' come i preferiti di ie).
a me piace, ma mi piaceva anche oe. invece non mi sembra un capolavoro ie7, 
a parte che a uguali tab aperti usa il doppio di ram/swap di ff.
ciao, a. 

 ha scritto nel messaggio 
news:471c91ac$0$17942$4faf...@reader1.news.tin.it...

do while Stringa<>""
     StringaMax60 = Left(Stringa,InStrRev(Stringa," ",61))
     StringaConRitornoACapo=StringaMax60 & VbCrLf
     Stringa=Replace(Stringa,StringaMax60,"",1,1)
Loop
Bisogna lavorarci su perche' ci sono degli errori. Vedi se come idea ti puo' 
essere utile.

 ie7, a parte che a uguali tab aperti usa il doppio di ram/swap di ff.
mah, IE7 lo uso piů per abitudine che per altro, firefox ce l'ho 
installato ma non lo uso granchč. non avevo mai notato la differente 
occupazione di memoria,
starň attento, magari č la volta buona che passo scientemente a ff.
ciao
stefano

 starò attento, magari è la volta buona che passo scientemente a ff.
ie7 l'ho usato in pratica solo il primo giorno, per scaricare firefox :)
il test della memoria l'ho fatto un paio di volte, con taskman aperto. e' 
che ormai mi sono abituato a ff e alla sua filosofia. ie lo uso per 2-3 siti 
con activex o exchange web.
ciao, a.

 - usi variabili globali
Hai perfettamente ragione, ma per colpa della fretta nel modulo non ho messo 
il Option Explicit e quindi non ho dichiarato le variabili.
Ti assicuro comunque che è mia abitudine usarlo.
Grazie.
Ciao.

 maggior parte dei pc che ho in lan, ma e' grazioso :)
:-)
penso sarà un gadget che mi affretterò a disabilitare, figurati che uso 
Xp stile Win2000
, niente pulsanti "pupacchiosi", manu di avvio classico, niente effetti 
particolari.
ecchecevoifà, sarò vecchio. ;-)
ciao
stefano

 Ti assicuro comunque che è mia abitudine usarlo.
Figurati, mi sono permesso di darti il consiglio solo perchè quando 
inziai capitò anche a me e passai un bel po' di tempo in debug per una 
fesseria.
:-)
ciao e buon lavoro.
stefano

 mentre a casa ho tiscali e la pubblicazione č immediata.
Vabbe', IB ha storicamente sempre sofferto di questo problema :-(.
In questi giorni poi pare abbiano anche altri tipi di problemi sulla
rete, almeno cosě mi dicono.
Bye, G. 

"Stefano Ferrari" ha scritto nel messaggio

Allora siamo in due. Il mio XP sembra W95 :-)
E già che ci sono: FF rispetto a IE7 è un'altro passo.
Bye, G. 

 rete, almeno così mi dicono.
Allegria.
grazie per l'interessamento
ciao
stefano

 Allora siamo in due. Il mio XP sembra W95 :-)
:-))))

 Perchč?
http://kb.mozillazine.org/Timeout_on_dual_core
Bug report 307527:
https://bugzilla.mozilla.org/show_bug.cgi?id=307527
Bye, G. 

 
https://bugzilla.mozilla.org/show_bug.cgi?id=307527
Grazie, gentilissimo.
ciao
stefano

"Paperino" <non...@lo.dico.invalid> ha scritto nel messaggio 
news:ffligr$35m$1...@registered.motzarella.org...


 Allora siamo in due. Il mio XP sembra W95 :-)
anni di studio sugli indirizzi separati per tenere la macchina stabile, 
buttati al vento :P

 ecchecevoifà, sarò vecchio. ;-)
non so tu, noi eravamo splendidi 40enni, mo' siamo anche piu' splendidi. 
splendenti! :)
aero lo tolgo quando volio la macchina piu' stabile. i punti critici sono, 
finore:
- (in questo pc hp) la tastiera (*). ha i pulsantini ma fa vomitare.
- connesioni di rete. vanno e vengono. mail buffo e che quando spariscono 
qualcosa continuaad andare beata. prima riavviavo, adesso come al solito mi 
siedo sulla riva del fiume e aspetto che riappaiano, cosa che in genere 
fanno. il piu' e' la lan di casa, che si perde, e senza dominio fatica a 
risorgere.
- aero  non e' stabilissimo, non e' che spinga al crash, ma incasina. crash 
in effetti praticamente zero.
- quel cazzo di start - chiudi sessione - sospendi. SEMPRE sospendi, 
qualunque cosa tu abbia fatto o voglia fare. ma se a redmond si facessero i 
loro? m'e' toccato settare il bios a "riparti quando torna la corrente".
(*) comepuoi notare e usare per studiare una funzione che riporti questo 
thread in topic :)
ciao, a.

 Intanto puoi aggiornarla alla 2.0.0.8 :-)
tu poi
X-Newsreader: Microsoft Outlook Express 6.00.2900.3138
potresti addirittura passarci,  a thunderbird :PP

"andrea palazzi" ha scritto nel messaggio

Ma tu credi ancora a quello che c'č scritto nei miei headers ? :-)
Bye, G.

 Ma tu credi ancora a quello che c'č scritto nei miei headers ? :-)
<boston legal>
    ehm, sono un tuo grande amico, ma di certo piu' che a te :PP
</> 

 </>
LOL. Ma li hai guardati bene, per esempio quelli del post di prima ?
(no, questi no, ho appena rimesso tutto a posto e mi scoccerebbe
ricambiarli :-PPP)
Bye, G. 

 thread in topic :)
ah, siamo andati in OT?
Scusa pensavo stessimo raccogliendo campioni di stringhe per poi testare 
  la funzione di cui sopra. :-)
ciao
stefano

 LOL. Ma li hai guardati bene, per esempio quelli del post di prima ?
rotfl
X-Newsreader: PiccolissimoSoffice GuardaFuori Espresso 6.00.2900.3138... o 
quasi ;-)

 oggi un po' tristemente riesumato dal Elio e la sua band.
www.pagine70.com
Bye, G. 

 Pivellino :-P
mhhhhh,
immagino che tu faccia parte dell'ormai mitica e -a dire il vero- 
fin'ora ineguagliata infornata del 1960.
:D
ciao
stefano