Página 1 de 1

isnil e isnumber

Enviado: 28 Jan 2009 09:35
por shinock
Bom dia,

A quem puder me ajudar estou tentando compilar um codigo que peguei na internet quando mando linkar a aplicação com blinker ou rtlink, o linkeditor me retorna dois error:

BLINKER : 1115 : PRG2.OBJ : 'ISNUMBER' : UNRESOLVED EXTERNAL
BLINKER : 1115 : PRG3.OBJ : 'ISNIL' : UNRESOLVED EXTERNAL

Compilei a aplicação da seguinte forma:

clipper prg1
clipper prg2
clipper prg3
clipper mod2
blinker fi prg1 fi prg2 fi prg3 fi mod2

Procurei por essa função nos quatro prgs, mas em nenhum existe encontrei varias chamadas para essas funções mas não as funções; e pelo que pude perceber isnumber é um tipo de função de validação numerica, procurei informações na internet sobre os dois nomes e muito pouca coisa com claresa encontrei; A pergunta que tenho a lhe fazer e a seguinte, Essa duas funções fazem parte do clipper?

Não instalei as atualizações do clipper 5.3 que foi usado na tentativa de compilar a aplicação.

Desde ja antecipo agradecimentos a todos que puder ajudar

Re: isnil e isnumber

Enviado: 28 Jan 2009 10:18
por alaminojunior
Bom dia.
Procurando aqui no NG do Clipper 5.3b (atualizado), não encontrei estas funções. Ela deve fazer parte de alguma lib de terceiros.
Verifique aí se não existe, alguma lib que faça parte do projeto, e adicione ela.

Código: Selecionar todos

clipper prg1
clipper prg2
clipper prg3
clipper mod2
blinker fi prg1 fi prg2 fi prg3 fi mod2 lib minhalib, outralib

Re: isnil e isnumber

Enviado: 28 Jan 2009 10:33
por Maligno
Na verdade ISNIL() e ISNUMBER() não são funções, mas comandos do próprio Clipper, definidos no arquivo COMMON.H, que deve ser incluído no fonte onde são utilizados. Daí o erro do linker será resolvido. Esse arquivo provavelmente deve estar na pasta INCLUDE do seu Clipper. Veja lá.

Dica: quando informar aquivos para o linker, use apenas FI arq1,arq2,arq3 ao invés de FI arq1 FI arq2 FI arq3. Dá no mesmo. O mesmo vale para LIB.

Re: isnil e isnumber

Enviado: 28 Jan 2009 13:01
por alxsts
Uma pequena correção: o nome do arquivo é Common.CH.

Se voce não tiver este arquivo, copie o código abaixo e salve com o nome COMMON.CH. Normalmente fica em C:\Clipper5\Include.

[]´s
AlxSts

Código: Selecionar todos

/***
*
*  Common.ch
*
*  Commonly used definitions
*
*  Copyright (c) 1993, Computer Associates International, Inc.
*  All rights reserved.
*
*/

#define TRUE  .T.
#define FALSE .F.
#define YES   .T.
#define NO    .F.

#translate ISNIL( <v1> )         => ( <v1> == NIL )
#translate ISARRAY( <v1> )       => ( valtype( <v1> ) == "A" )
#translate ISBLOCK( <v1> )       => ( valtype( <v1> ) == "B" )
#translate ISCHARACTER( <v1> )   => ( valtype( <v1> ) == "C" )
#translate ISDATE( <v1> )        => ( valtype( <v1> ) == "D" )
#translate ISLOGICAL( <v1> )     => ( valtype( <v1> ) == "L" )
#translate ISMEMO( <v1> )        => ( valtype( <v1> ) == "M" )
#translate ISNUMBER( <v1> )      => ( valtype( <v1> ) == "N" )
#translate ISOBJECT( <v1> )      => ( valtype( <v1> ) == "O" )

#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ]                        ;
          =>                                                            ;
          IF <v1> == NIL ; <v1> := <x1> ; END                           ;
          [; IF <vn> == NIL ; <vn> := <xn> ; END ]

#command UPDATE <v1> IF <exp> TO <v2> ;
         =>                           ;
         IF <exp> ; <v1> := <v2> ; END

Re: isnil e isnumber

Enviado: 28 Jan 2009 13:05
por Maligno
Uma pequena correção: o nome do arquivo é Common.CH.
Ops! Verdade. É que estou trabalhando só com C e C++ agora. Confundi as bolas.

Mas o tal arquivo existe na instalação padrão do Clipper. Se o colega não o tiver, muito melhor seria reinstalar o Clipper todo, pois se este arquivo estiver faltando, não será difícil que falte mais algum. A reinstalação pode, futuramente, evitar dores-de-cabeça do tipo.

Re: isnil e isnumber

Enviado: 28 Jan 2009 17:53
por alxsts
Imaginei... .h são os headers para as linguagens C e C++.

Creio que o colega realmente não conhecia a existencia desse arquivo. Mas, o Maligno tem razão: se não tiver o arquivo, é melhor reinstalar o Clipper todo.

Em tempo: bem vindo ao Fórum Shinock.

[]´s
AlxSts

Re: isnil e isnumber

Enviado: 03 Fev 2009 10:55
por Stanis Luksys
Acho que poderia resolver com uma função tipo essa:
function isnumber(x)
return (type(x)=="N")

Re: isnil e isnumber

Enviado: 03 Fev 2009 15:05
por shinock
Agradeço a todos que contribuiram para exclarecer minhas duvidas.