Página 1 de 1

Erro na função AT()

Enviado: 27 Jan 2013 14:44
por Mario Mesquita
Boa tarde amigos!

Estou com problema em uma rotina em que preciso fazer uma busca em uma string.

Para qualquer clippeiro, a função AT() não é novidade.

Mas ao compilar o programa aparece a mensagem:

"Incorrect number of arguments in A".

Sendo que eu, por fim, reproduzi uma linha de exemplo de um guia do Harbour e dá a mesma coisa.

Não compila. Se fosse um erro de execução, mas na compilação...

Se alguem já passou por isso, desde já agradeço a ajuda.

Sds,
Mario.

Erro na função AT()

Enviado: 27 Jan 2013 20:32
por Mario Mesquita
Estou testando uma rotina para abrir e ler um arquivo TXT, mas tá tudo dando errado.

Agora o MEMOREAD() não abre o arquivo.

No caso do AT(), troquei por RAT(). Compilou, mas não sei se vai funcionar pq ele não "puxa" o arquivo para a variável...

Será que é o Harbour?

Erro na função AT()

Enviado: 28 Jan 2013 08:06
por Pablo César
Olá Mario, com certeza não há problema algum na inclusão das funções AT() e RAT() nem no MemoRead(). Para podermos dar uma resposta mais acertada, caberia você disponibilizar o seu código fonte para analisá-lo. Tudo depende do que você precisa, por quê o uso do AT(), qual é a necessidade (dê exemplo).

Erro na função AT()

Enviado: 28 Jan 2013 10:16
por Mario Mesquita
Bom dia, Pablo.

Na verdade, o AT() só funciona com dois parametros. Tipo: xPosIni := AT( "<",xLn)

Eu estava passando mais dois parametros. Talvez seja porque eu esteja usando um tutorial do xHarbour e lá a função AT() tem quatro parametros.

Pode ser isso? Se for, é estranho, pois achei um tutorial on line que tem os 4 parametros...

Aproveitando: Não dá pra usar a função MEMOEDIT? Tentei, mas não faz nada. Aí usei RICHEDIT da MiniGui. Deu certo, mas estou penando pra quebrar as linhas para que fiquem dentro da janela de edição.

E de preferencia sem modificar o arquivo texto original colocando CR e LF...

Abraço,
Mario.

Erro na função AT()

Enviado: 28 Jan 2013 10:24
por Jairo Maia
Olá Mário,

Substitua as funções AT() e RAT() (são idênticas), pelas funções Hb_At() e Hb_Rat(), e a função MemoRead() por Hb_MemoRead().

Com MiniGui realmente a função AT() retorna este erro.

Erro na função AT()

Enviado: 28 Jan 2013 10:34
por Pablo César
Mario Mesquita escreveu:Bom dia, Pablo.

Na verdade, o AT() só funciona com dois parametros. Tipo: xPosIni := AT( "<",xLn)

Eu estava passando mais dois parametros. Talvez seja porque eu esteja usando um tutorial do xHarbour e lá a função AT() tem quatro parametros.

Pode ser isso? Se for, é estranho, pois achei um tutorial on line que tem os 4 parametros...
Bom dia Mario. No Harbour também possui 4 parâmetros, os quais o terceiro e quarto parâmetros são opcionais. No Harbour Reference Guide do nosso colega Giovanni Di Maria explica. Veja em: http://www.elektrosoft.it/tutorials/Har ... ide.htm#AT. Note os dois ultimos parâmetros, mesmos que opcionais, quando informados deverão ser do tipo numéricos (veja o primeiro caracter de cada parâmetro indicando o tipo).
Aproveitando: Não dá pra usar a função MEMOEDIT? Tentei, mas não faz nada. Aí usei RICHEDIT da MiniGui. Deu certo, mas estou penando pra quebrar as linhas para que fiquem dentro da janela de edição.
Sim o MemoEdit existe no Harbour consequentemente em HMG, Minigui e outras bibliotecas gráficas. Só não entendo o quê não deu certo pra você, pois sem código, não dá pra deduzir.
E de preferencia sem modificar o arquivo texto original colocando CR e LF...
Normalmente todo texto com mais de uma linha possui um quebra de linha (CRLF). Não entendi a sua colocação.

Erro na função AT()

Enviado: 28 Jan 2013 10:38
por Pablo César
Esclarecendo...
Jairo Maia escreveu:Substitua as funções AT() e RAT() (são idênticas), pelas funções Hb_At() e Hb_Rat(), e a função MemoRead() por Hb_MemoRead().
Ahhh sim é para utilizar 3 e/ou 4 parâmetro, sim ! O correto nesse caso é utilizar Hb_At() e Hb_Rat()
Com MiniGui realmente a função AT() retorna este erro.
Retorna erro quando colocado 3 e/ou quarto parâmetro. Isso porque as funções AT() e RAT() comportam-se exatamente como é em Clipper, isto é apenas aceitam dois parâmetros. Daí o erro, pois não corresponde a passagem de parâmetros pelo compilador HMG/Minigui, no entanto com Hb_At() e Hb_Rat() os parâmetros 3 e 4 tornam-se opcionais.

Erro na função AT()

Enviado: 28 Jan 2013 12:58
por Mario Mesquita
Jairo e Pablo, boa tarde.

Pois é. AT() e RAT() não suportam os 3º e 4º ´parametros. O guia que tenho do (x)Harbour não tem referencia a HB_AT() e HB_RAT().

Eu achei ontem o Guia on line do DeMaria, mas juro que tambem não vi referencia a essas duas funções...

O HMG e o Harbour são muito bons, mas carecem de documentação boa para consulta e/ou dúvidas. Que bom que a galera aqui dá uma ajuda.

Sobre as quebras de pagina, Pablo, eu recebo os arquivos em .TXT bruto sem CR-LF. Resolvi colocando as quebras para permitir a leitura dos mesmos. O problema era que eu não podia deixa-los nos TXTs pois tenho que devolve-los como recebi nesse aspecto, pois eles vão virar HTML ou algo do tipo em um site. Mas para isso coloquei um RUN para o NotePad e deixei o RICHEDIT apenas para leitura.

Já quebrou o galho.

Agora quero ver uma forma legal de fazer substituição de texto nesses arquivos. Com as funções tradicionais do clipper não tem mistério, vamos ver se não levo mais uma canseira dessas, rs.

Obrigado pela ajuda, pessoal!

Abraço,
Mario.