QUEBRAR STRING A CADA 40 CARACTERES

MICHAELL 10/06/2011 01:36:07
#376373
Ola amigos...

Como posso quebrar uma string a cada 40 caracteres?
DETALHE, nao pode cortar palavras no meio, tem que corta sempre em um espaço anterior


exemplo:

[Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]

tem que ficar assim:

EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE
CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA
ESSE EXEMPLO COMO FICARIA


alguem sabe?
KERPLUNK 10/06/2011 09:10:30
#376378
Resposta escolhida
Veja se isso te atende...

Dim texto As String

texto = [Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA[Ô]

Dim textoquebrado As String
Dim linha As String
Dim textosplit


textosplit = Split(texto, [Ô] [Ô], 40)

For i% = 0 To UBound(textosplit)
If Len(linha) + Len(textosplit(i%)) < 40 Then
linha = linha + textosplit(i%) + [Ô] [Ô]
Else
textoquebrado = textoquebrado + linha + vbNewLine
linha = textosplit(i%) + [Ô] [Ô]
End If
Next i%
textoquebrado = textoquebrado + linha
Text1.Text = textoquebrado

Pra mim text1, tinha:
EXEMPLO DE UM TEXTO QUE DEVE SER
CORTADO A CADA 40 CARACTERES, MAS NAO
PODE CORTAR NO MEIO DAS PALAVRAS, TEM
QUE CORTAR SEMPRE EM UM ESPAÇO
ANTERIOR. VEJA ESSE EXEMPLO COMO
FICARIA

MICHAELL 10/06/2011 09:40:27
#376386
ola amigo...
quase... mas nao deu certo ainda.. veja que estou usando #print
mas esta saindo torto.. veja como estou fazendo

Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit
Dim j As Integer

TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)

For j% = 0 To UBound(TextoSplit)
If Len(Linha) + Len(TextoSplit(j%)) < 40 Then
Linha = Linha + TextoSplit(j%) + [Ô] [Ô]
Else
Print #1, Linha
Linha = TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
MICHAELL 10/06/2011 09:42:58
#376387
na verdade o primeiro paragrafo funciona tranquilo, o problema é nos proximos paragrafos
estou pegando o texto do banco de dados que esta em um campo MEMORANDO... do ACCESS

talvez falte apenas um detalhe


KERPLUNK 10/06/2011 09:45:27
#376388
substitua
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô], 40)
Por
TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])
MARCELO.TREZE 10/06/2011 10:05:44
#376390
tente ai

Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer

TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])

For j% = 0 To UBound(TextoSplit)
If Len(TextoSplit(j%)) > 40 Then
j% = j% - 1
Linha = Linha & TextoSplit(j%) + VbCrLf
Else
Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha
MICHAELL 10/06/2011 10:24:45
#376391
Citação:

:
tente ai

Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer

TextoSplit = Split(TBConfig!TextoFormal, [Ô] [Ô])

For j% = 0 To UBound(TextoSplit)
If Len(TextoSplit(j%)) > 40 Then
j% = j% - 1
Linha = Linha & TextoSplit(j%) + VbCrLf
Else
Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha



amigo, dessa forma nem cortou o texto
KERPLUNK 10/06/2011 10:28:08
#376392
Tem jeito de vc postar o texto inteiro aqui, assim, eu testo pra vc e faço funcionar...
MICHAELL 10/06/2011 10:44:10
#376395
Citação:

:
Tem jeito de vc postar o texto inteiro aqui, assim, eu testo pra vc e faço funcionar...



amigo, estou testando com esse mesmo texto..mas com paragrafos gravado no banco ACCESS em um campo MEMORANDO

texto = [Ô]EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA

EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA

EXEMPLO DE UM TEXTO QUE DEVE SER CORTADO A CADA 40 CARACTERES, MAS NAO PODE CORTAR NO MEIO DAS PALAVRAS, TEM QUE CORTAR SEMPRE EM UM ESPAÇO ANTERIOR. VEJA ESSE EXEMPLO COMO FICARIA
[Ô]
MICHAELL 10/06/2011 11:03:01
#376401
estou quase conseguindo...
o problema parece ser nos paragrafos.. se for um texto continuo funciona normalmente.


MICHAELL 10/06/2011 11:05:56
#376403
estou fazendo assim...

   Dim TextoQuebrado As String
Dim Linha As String
Dim TextoSplit() As String
Dim j As Integer
Dim NovaLinha As String

TextoSplit = Split(Trim(TBConfig!TextoFormal), [Ô] [Ô])

For j% = 0 To UBound(TextoSplit)

If Len(NovaLinha & TextoSplit(j%)) > 40 Then

j% = j% - 1
Linha = Linha + vbCrLf
NovaLinha = [Ô][Ô] [ô] LIMPA

Else

Linha = Linha & TextoSplit(j%) + [Ô] [Ô]
NovaLinha = NovaLinha & TextoSplit(j%) + [Ô] [Ô]
End If
Next j%
Print #1, Linha


atrapalha só quando tem <enter> no banco de dados..
como é representado o <enter> quando vem do banco de dados com campo memorando?
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas