CAPTURANDO DETERMINADO TEXTO DE UMA LINHA

GRAEFF 23/10/2009 09:30:21
#326139
galera estou com uma duvida em interagir com outros programas tipo bloco de notas, eu gostaria de criar um programinha que interagisse com o bloco de notas da seguinte forma tem um texto enorme mas eu gostaria sempre de copiar as mesmas coisas tipo:

tem um texto la:
[nome] bla bla bla bla bla bla bla bla bla bla bla
[endereco] bla bla bla bla bla bla bla
[cep] bla bla bl bla bla bla

eu keria que meu programa copiasse tudo que ha depois do nome porem ignorando as outras instrucoes no caso [endereço] e copiar tb tudo que ha depois do [cep] e salvar em um log.txt da seguinte forma [nome]bla bla bla(tab)[cep]bla bla bla bla, ou seja cada linha contendo nome e cep. Como faco isso?

agradeço a ajuda desde ja
GRAEFF 24/10/2009 16:59:35
#326233
Alguem pra dar um help?
RODRIGOFERRO 26/10/2009 08:12:18
#326269
bom primeiramente aqui eu sempre faço assim, Trabalho com um padrao, seja de tags ou tipos de separador...
se os dados estiverem dispostos igual ao que disse acima, quer dizer por tags sera facil, faça ele ler as linhas e se a linha começar por uma tag ele ira tomar uma ação...
aqui como meus dados estao em cada linha e separados por [Ô]tab[Ô] eu divido a linha por [Ô]tab[Ô] e vou pra galera
Segue meu Exemplo Abaixo



[ô]Declarando
Dim intSelecao_Quantidade As Integer, intImportacao_Item As Integer, intLinha As Integer
Dim strImportacao_Arquivo As String, strImportacao_Linha As String
Dim varImportacao_Campos() As Variant, varImportacao_Bloco As Variant, varImportacao_Item As Variant
Dim varImportacao_Delimitador As Variant, varImportacao_Registro As Variant, varLinha As Variant, varLinhaAtual As Variant

ReDim varImportacao_Campos(3)
lngImportacao_Livre = FreeFile
[ô]Abrindo Arquivo strImportacao_Aquivo que é uma String
Open strImportacao_Arquivo For Input As #lngImportacao_Livre
[ô]Enquanto Houver Linhas ele ira ler
While Not EOF(lngImportacao_Livre)

Line Input #lngImportacao_Livre, strImportacao_Linha
varImportacao_Bloco = Split(strImportacao_Linha, varImportacao_Delimitador)
intImportacao_Item = 0
For Each varImportacao_Item In varImportacao_Bloco

intImportacao_Item = intImportacao_Item + 1
If intImportacao_Item <= 3 Then varImportacao_Campos(intImportacao_Item) = varImportacao_Item

Next
Wend
Close #lngImportacao_Livre
[ô]Dentro do While ele ira ler uma Linha por vez, por isso coloque as ação que ele ira tomar a cada linha dentro do While...


Bom veja se entende... se nao entender pergunte que tentarei explicar... Abraços
e Se ajudou me Pontue =]
HUGOSSOUZA 26/10/2009 10:24:34
#326284
Resposta escolhida
Uma dica para você separar os valores:
Esse arquivo tem algum padrão?
Se estiver tudo em uma string você pode fazer assim:

[txt-color=#74DF00][ô]Definição das Variaveis[/txt-color]
Dim vlTexto As String
Dim vlPos1 As Integer
Dim vlPos2 As Integer
Dim vlResultado As String

[txt-color=#5FB404][ô]Texto a ser comparado[/txt-color]
vlTexto = [Ô][nome] bla bla bla bla bla bla bla bla bla bla bla1[endereco] bla bla bla bla bla bla bla2[cep] bla bla bl bla bla bla3[Ô]

[txt-color=#4B8A08][ô]pega a posição que inicia a tag nome[/txt-color]
vlPos1 = InStr(1, vlTexto, [Ô][Nome][Ô])
[txt-color=#4B8A08][ô]pega a posição que inicia a tag endereço[/txt-color]
vlPos2 = InStr(1, vlTexto, [Ô][endereco][Ô])
[txt-color=#4B8A08][ô]Pega o texto da posição inicial da tag nome até a posição inicial da tag endereço - 1 e salva em um variavel[/txt-color]
vlResultado = Mid(vlTexto, vlPos1 + 1, vlPos2 - 1)

[txt-color=#4B8A08][ô]pega a posição que inicia a tag cep[/txt-color]
vlPos1 = InStr(1, vlTexto, [Ô][cep][Ô])
[txt-color=#4B8A08][ô]Salva o conteudo a partir da tag cep até o final do texto[/txt-color]
vlResultado = vlResultado & Mid(vlTexto, InStr(1, vlTexto, [Ô][cep][Ô]), Len(vlTexto))

MsgBox vlResultado



O interessante é se esse arquivo tivesse algum padrão para a leitura
GRAEFF 27/10/2009 22:02:34
#326393
Mas galera, meu programa nao precisa interagir com o outro? Tipo nao tenho que declarar API e tal?? eu to declarando o seguinte:

Private Declare Function FindWindow Lib [Ô]user32[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib [Ô]user32[Ô] Alias [Ô]FindWindowExA[Ô] (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Function GetMyWindow() as long


[ô]Variables
Dim lParent as long
Dim lChild(1 to 6) as long


[ô]Get Parent Window
lParent = FindWindow([Ô]TMainForm[Ô], [Ô]texto do titulo da janela do programa[Ô])
[ô]Get Child Window(s)
lChild(1) = FindWindowEx(lParent, 0, [Ô]MDIClient[Ô], [Ô][Ô])
lChild(2) = FindWindowEx(lChild(1), 0, [Ô]TfrmQuizChannel[Ô], [Ô]texto do titulo da janela do programa[Ô])
lChild(3) = FindWindowEx(lChild(2), 0, [Ô]TPanel[Ô], [Ô][Ô])
lChild(4) = FindWindowEx(lChild(3), 0, [Ô]TPanel[Ô], [Ô][Ô])
lChild(5) = FindWindowEx(lChild(4), 0, [Ô]TPanel[Ô], [Ô][Ô])
lChild(6) = FindWindowEx(lChild(5), 0, [Ô]TRichEdit98[Ô], [Ô][Ô])


GetMyWindow = lChild(6)


End Function

essas informacoes que tenho do outro programa como vou acoplar ao meu pra poder copiar tudo que digitam la??? tipo eh melhor ir por parte independente do que eu queira copiar... como faço pra copiar tudo com intervalo de 1 em 1 minuto?
HUGOSSOUZA 28/10/2009 08:41:24
#326410
GRAEFF, qual o objetivo do seu programa?

Da forma que eu expliquei você pode pegar um arquivo que ja foi salvo no formato txt, abrir pelo VB e separar as informações que você precisa.


GRAEFF 28/10/2009 09:26:57
#326416
Hugo, eu preciso capturar de um chat tipo um log, nao precisa ter interação com o outro programa?? eh isso que to tentando fazer... aquilo que postei ai em cima eh o handle e tal so nao sei passar isso pro form de modo a copiar toda a area do chat
GRAEFF 29/10/2009 10:18:25
#326499
Obrigado a todos consegui resolver o problema!
Tópico encerrado , respostas não são mais permitidas