TEM ERRO NO MEU CODIGO?

PAYDANA 25/06/2013 00:50:34
#425172
Public Function RemoveLinha(Buscar As String, Campo As Variant) As String

Dim Mtz As Variant
Dim i As Long
Dim aux As String

Mtz = Split(Campo, vbCrLf)

For i = 0 To UBound(Mtz)
If InStr(Mtz(i), Buscar) = 0 Then
aux = aux & Mtz(i) & vbCrLf
End If
Next

RemoveLinha = aux

End Function

Eu uso este codigo (não me lembro mais onde consegui)

O poblema é que eu mando ele retirar uma linha do RichTextBox1 que contenho por exemplo x e ele acaba rancando também linhas que tem y.

Quem puder de uma analisada nele por favor e me explique o erro.
MARCELO.TREZE 25/06/2013 12:24:32
#425191
Resposta escolhida
parece estar tudo certo porém quando vc declara uma campo como variant você diz a ele que ele pode ser qualquer coisa, ou seja se colocar um numero ele vira Inteiro, se colocar uma palavra ele vira string, e assim vai, talvez isto esteja gerando o erro ao criar o split, então tente o seguinte

Public Function RemoveLinha(Buscar As String, [txt-color=#0000f0]Campo As String[/txt-color]) As String

[txt-color=#0000f0] Dim Mtz() As String[/txt-color]
Dim i As Long
Dim aux As String

Mtz = Split(Campo, vbCrLf)

For i = 0 To UBound(Mtz)
If InStr(Mtz(i), Buscar) = 0 Then
aux = aux & Mtz(i) & vbCrLf
End If
Next

RemoveLinha = aux

End Function


faça um teste com a alteração acima sugerida
PAYDANA 26/06/2013 01:19:43
#425213
Mesmo erro

eu uso assim:

Remover = [Ô]01030710111314181925[Ô]
Dim Str1 As String
For Z = 1 To Len(Trim(Remover)) Step 2
Str1 = Mid(Trim((Remover)), Z, 2)
RichTextBox1.Text = RemoveLinha(Str1, RichTextBox1.Text)
Next

Ja tentei manualmente e da a mesma coisa

Manualmente que digo e mandando remover 01 depois 03 depois 07 assim por diante
MARCELO.TREZE 26/06/2013 09:39:34
#425223
tem como vc postar o arquivo texto pelo menos parte do arquivo, para ver o que exatamente o que pode estar ocorrendo.
PAYDANA 26/06/2013 11:37:52
#425240
01 02 03 04 05 09 10 11 12 13 17 18 19 21 23
01 02 03 04 05 09 10 11 12 13 17 18 19 21 24
01 02 03 04 05 09 10 11 12 13 17 18 19 22 23
01 02 03 04 05 09 10 11 12 13 17 18 19 22 24
01 02 03 04 05 09 10 11 12 13 17 18 19 23 24
01 02 03 04 05 09 10 11 12 13 17 18 20 21 22
01 02 03 04 05 09 10 11 12 13 17 18 20 21 23
01 02 03 04 05 09 10 11 12 13 17 18 20 21 24
01 02 03 04 05 09 10 11 12 13 17 18 20 22 23

coloquei os numeros com espaços justamente pra não ter confusão do tipo 0102 virar 01 10 02 ou 0203 virar 02 20 03

não sei se tem alguma importância mais o richetbox tem 175616 linhas
MARCELO.TREZE 26/06/2013 12:07:40
#425242
bom eu fiz um teste aqui com a seguinte modificação e funcionou de boa, veja

Public Function RemoveLinha(Buscar As String, rtb As RichTextBox) As String
Dim Mtz() As String
Dim i As Long
Dim aux As String

Mtz = Split(rtb.Text, vbCrLf)

For i = 0 To UBound(Mtz)
If InStr(Mtz(i), Buscar) = 0 Then
aux = aux & Mtz(i) & vbCrLf
End If
Next

RemoveLinha = aux

End Function


Private Sub Command1_Click()
RichTextBox1.Text = RemoveLinha(Text1.Text, RichTextBox1)
End Sub

PAYDANA 26/06/2013 12:37:22
#425246
Num deu, deve se algun pau no RichTextBox1.... Não fas sentido
TO tentando encontrar algun site pra te mandar o arquivo completo pra você ver que não to pirando

o arquivo tem mais de 5mb
MARCELO.TREZE 26/06/2013 13:32:55
#425250
Qual erro ele apresenta?
PAYDANA 29/06/2013 23:43:43
#425377
A mano acho que e erro meu mesmo em pensar que a linha estava no arquivo e nao esta

Estou com outro probleminha. Por eu estar trabalhando com mais de 170 mil linhas dentro do RichTextBox1ele demora pra remover as linhas que são mais de 99% do total. Sera que tem uma forma de fazer isto mais rápido?


Tópico encerrado , respostas não são mais permitidas