Fórum Diretiva $DEFINE não processada em modo local #558936
05/07/2016
0
Saudações galera
Estou com problema relacionado a diretiva {$DEFINE}.
Tenho uma classe que controla comandos SQL e eu defini abaixo do type uma diretiva {$DEFINE MODOSQL} e ao final o {$UNDEF MODOSQL}, como no código a seguir:
E tenho uma classe TClientes da seguinte estrutura:
Porque se chamar um ShowMessage(TControleSQL.GetValores(TClientes.cCodigo)), vai apresentar CL_CODIGO e não CLIENTE.CL_CODIGO, sendo que a diretiva está definida dentro da classe TControleSQL e a função está no intervalo desta definição?
Já dei Build no projeto, limpei e recompilei e nada deu certo.
Eu só consigo apresentar CLIENTE.CL_CODIGO se eu declarar em modo global: Options>Delphi Compiler> Conditional defines, mas eu preciso que seja apenas quando for chamada pela classe e função TControleSQL.GetValores.
Galera eu tinha pensado nesta forma para capturar os valores ora Campo ora Tabela.Campo. Caso tenha alguma outra sugestão será muito bem vinda.
Desde já, obrigado.
Estou com problema relacionado a diretiva {$DEFINE}.
Tenho uma classe que controla comandos SQL e eu defini abaixo do type uma diretiva {$DEFINE MODOSQL} e ao final o {$UNDEF MODOSQL}, como no código a seguir:
unit ControlaSQL;
interface
type
{$DEFINE MODOSQL}
TControleSQL = class
public
class function GetValores(pValor: string): string;
end;
implementation
{ TControleSQL }
class function TControleSQL.GetValores(pValor: string): string;
begin
Result := pValor;
end;
{$UNDEF MODOSQL}
end.
E tenho uma classe TClientes da seguinte estrutura:
TClientes = class
public const
cCodigo = {$IFDEF MODOSQL} 'CLIENTE.CL_CODIGO' {$ELSE} 'CL_CODIGO' {$ENDIF};
cNome = {$IFDEF MODOSQL} 'CLIENTE.CL_NOME' {$ELSE} 'CL_NOME' {$ENDIF};
private
FCodigo: Integer;
FNome : string;
procedure SetCodigo(const Value: Integer);
procedure SetNome(const Value: string);
public
property Codigo: Integer read FCodigo write SetCodigo;
property Nome : string read FNome write SetNome;
end;
Porque se chamar um ShowMessage(TControleSQL.GetValores(TClientes.cCodigo)), vai apresentar CL_CODIGO e não CLIENTE.CL_CODIGO, sendo que a diretiva está definida dentro da classe TControleSQL e a função está no intervalo desta definição?
Já dei Build no projeto, limpei e recompilei e nada deu certo.
Eu só consigo apresentar CLIENTE.CL_CODIGO se eu declarar em modo global: Options>Delphi Compiler> Conditional defines, mas eu preciso que seja apenas quando for chamada pela classe e função TControleSQL.GetValores.
Galera eu tinha pensado nesta forma para capturar os valores ora Campo ora Tabela.Campo. Caso tenha alguma outra sugestão será muito bem vinda.
Desde já, obrigado.
Celismar Pereira
Curtir tópico
+ 1
Responder
Clique aqui para fazer login e interagir na Comunidade :)