[delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Alencar - Philler Informatica
Senhores, estou precisando acessar campos de um record,
atraves do parametro da funcao.

+/- assim:

TDados = record
codigo: integer;
nome: String[50];
data:   TDateTime;
   
end;

var
  meusDados: TDados;

function getValue(campo: String): variant;
begin
   result := meusDados.campo;
end;

Onde o parametro contem o nome do campo que preciso consultar.
Algo como FieldByName(campo)...

Alguma possibilidade disto?

Grato


Alencar
-- 
---
Philler Informatica Ltda
Jose Alencar Philereno
 ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Eric D.
Troque o tipo de STRING para o SEUTIPO (TDados no caso). Então vc pode acessar 
o field do record normalmente no result de sua função.

[]'s

Eric D. - Desenvolvimento e Soluções de Tecnologia 
[EMAIL PROTECTED] 
Talk is cheap, show me the code... 
  - Original Message - 
  From: Alencar - Philler Informatica 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, December 27, 2006 10:13 AM
  Subject: [delphi-br] acesso variado a campo de record


  Senhores, estou precisando acessar campos de um record,
  atraves do parametro da funcao.

  +/- assim:

  TDados = record
  codigo: integer;
  nome: String[50];
  data: TDateTime;
  
  end;

  var
  meusDados: TDados;

  function getValue(campo: String): variant;
  begin
  result := meusDados.campo;
  end;

  Onde o parametro contem o nome do campo que preciso consultar.
  Algo como FieldByName(campo)...

  Alguma possibilidade disto?

  Grato

  Alencar
  -- 
  ---
  Philler Informatica Ltda
  Jose Alencar Philereno
  ICQ 13458351
  Messenger/Skype (voz): alencar

  Feliz aquele que transfere o que sabe
  e aprende o que ensina Cora Coralina


   

[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] Fortes Report Versão BDS 2006 Download e Treinamentos

2006-12-27 Por tôpico Bruno Lichot
Galera,

Estou postando no meu link de downloads a versão compilada do Fortes 
Report para BDS 2006 que tenho usado comercialmente sem problemas. Esta 
compilado, é so instalar o BPL da pasta bin.

O código fonte esta junto.

Eis o link: http://cc.codegear.com/Author/795118

Lembrando que em janeiro, começa o primeiro dos dois módulos de 
treinamento que ministrarei em São Paulo pela DigiData 
Brasil(www.digidatabrasil.com.br). Neste primeiro modulo será 
apresentado de forma pratica o desenvolvimento Client/Server com 
DataSnap, DBExpress, Criação de Graficos, Relatorios com Fortes Report, 
tratamento de Erros, Técnicas de Interfaces e mais...

o modulo dois sera especifico de controle de dados avançado com DataSnap 
e multicamadas e aplicações Web.

Alem e claro dos famosos treinamentos on-line para aqueles que não estão 
em SP Capital, que ocorrem como os presenciais só que pela internet.

No mais estou as ordens para o que for necessário

Abraços

Bruno Lichot


RE: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Rubem Nascimento da Rocha
Sem chance! Isso que vc quer fazer não existe em Object Pascal, simplesmente 
ele(o Object Pascal) não suporta esse tipo de interpretação. Se ele fosse 
interpretado ou pseudo-compilado como o Clipper, isso até poderia ser 
possível. O que vc está querendo fazer é algo semelhante à famigerada 
macro-substituição existente no Clipper. O que vc pode fazer é, ao invés de 
usar record declarar esse registro como uma classe, e cada campo seria 
colocada na seção published. Depois, fazendo uso de rotinas RTTI para 
recuperar os valores dos campos(que agora seriam atributos).

Para os que não sabem, RTTI significa Run-Time Type Information. É um 
sub-conjunto de rotinas existente dentro do Object Pascal que ajudam a obter 
informações de classes, métodos e eventos em tmepo de execução a respeito de 
objetos. Essas rotinas estão contidas na unit TypInfo. A própria VCL faz uso 
dessas rotinas para, por exemplo, obter os valores de tipos enumerados a 
serem listados em forma de combobox no Object Inspector.

Sua missão: pesquise a respeito dessas rotinas dessa unit e aí vc poderá 
criar uma função para o que vc realmente quer fazer. O Google e o AltaVista 
estão aí para isso. Uma outra dica seria procurar citações sobre um 
excelente livro que aborda muito bem o uso da RTTI, chamado 'Delphi In a 
Nutshell', de Ray Lischner. A dica para pescar o peixe foi dada, agora o 
resto é com você, pesque-o!

Sds.


From: Alencar - Philler Informatica [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: [delphi-br] acesso variado a campo de record
Date: Wed, 27 Dec 2006 11:13:54 -0200

Senhores, estou precisando acessar campos de um record,
atraves do parametro da funcao.

+/- assim:

TDados = record
 codigo: integer;
 nome: String[50];
 data:   TDateTime;

end;

var
   meusDados: TDados;

function getValue(campo: String): variant;
begin
result := meusDados.campo;
end;

Onde o parametro contem o nome do campo que preciso consultar.
Algo como FieldByName(campo)...

Alguma possibilidade disto?

Grato


Alencar
--
---
 Philler Informatica Ltda
 Jose Alencar Philereno
  ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina

_
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br



Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Alencar - Philler Informatica
On 12/27/06, Eric D. [EMAIL PROTECTED] wrote:
 Troque o tipo de STRING para o SEUTIPO (TDados no caso). Então vc pode 
 acessar o field do record normalmente no result de sua função.

 []'s

 Eric D. - Desenvolvimento e Soluções de Tecnologia

Eric, acho que eu nao me fiz entender.
No parametro da funcao, é passado o nome do campo que contem o valor
a ser retornado, entende?

A chamada seria assim:

getValue('data'): retorna o valor do campo data
getValue('codigo'):  retorna o valor do campo codigo

Alencar

---
Philler Informatica Ltda
Jose Alencar Philereno
 ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


[delphi-br] Help em Interfaces ...

2006-12-27 Por tôpico anderson
E ai galera, seguinte. Estou querendo implementar algumas features no meu
sistema e estou precisando manipular uma coleção de objetos com um TList por
exemplo e em determinados momentos percorrer esta lista executando métodos
destes objetos pelas interfaces que implementam. Por exemplo. Supondo que eu
tenha a Interface A, e um monte de objetos que  implementam esta interface
que tem o método DoSomething. Em algum momento do meu código eu gostaria de
correr esta lista de Objetos (que pode ser de qualuqer tipo, desde que
implemente a Interface A) e executar seu método DoSomething sem nem me
importar de que tipo é o objeto, chamando o método somente pela interface
que implementa. Alguém tem um código similiar ou dica de como fazer ???

 

Anderson



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Help em Interfaces ...

2006-12-27 Por tôpico Joao Morais
anderson wrote:

 E ai galera, seguinte. Estou querendo implementar algumas features no meu
 sistema e estou precisando manipular uma coleção de objetos com um TList por
 exemplo e em determinados momentos percorrer esta lista executando métodos
 destes objetos pelas interfaces que implementam. Por exemplo. Supondo que eu
 tenha a Interface A, e um monte de objetos que  implementam esta interface
 que tem o método DoSomething. Em algum momento do meu código eu gostaria de
 correr esta lista de Objetos (que pode ser de qualuqer tipo, desde que
 implemente a Interface A) e executar seu método DoSomething sem nem me
 importar de que tipo é o objeto, chamando o método somente pela interface
 que implementa. Alguém tem um código similiar ou dica de como fazer ???

Você pode fazer um wrapper para um TInterfaceList, colocar métodos 
Add(ISuaInterface) em seu wrapper, dentro dele fazer um cast dos itens 
para ISuaInterface, e então chamar o método.

Não sou fã de interface e não conheço bem sua sintaxe, talvez você 
precise fazer um cast ou modificá-lo em um canto ou outro, mas a 
estrutura fica mais ou menos assim:

TIntfAWrapper = class()
private
   FList: IInterfaceList;
public
   constructor Create;
   function Add(AItem: IIntfA): Integer;
   procedure Execute;
end;

function TIntfAWrapper.Add(AItem: IIntfA): Integer;
begin
   FList.Add(AItem);
end;

constructor TIntfAWrapper.Create;
begin
   inherited;
   FList := TInterfaceList.Create;
end;

procedure TIntfAWrapper.Execute;
var
   I: Integer;
begin
   for I := 0 to Pred(FList.Count) do
 (FList as IIntfA).Execute;
end;

--
João Morais


[delphi-br] MySQL Com DBExpress

2006-12-27 Por tôpico Plinio Cesar Pavin
Olá Pessoal, estou dando manutenção numa aplicação desenvolvida com 
Delphi 7 + mySQL (4.00) usando DBExpress (Driver da MicroOlap), porém 
o cliente precisa atualizar o BD para a versão 5.0. Ao fazer isso, o 
driver da MicroOlap começa apresentar uma série de erros nos campos 
numéricos. 

Em resumo, estou aceitando sugestões: 
Fazer o cliente comprar o driver atualizado da MicroOlap ?
Fazer o cliente comprar o driver CoreLab ?
Abandonar de vez o DBExpress ?
Abandonar de vez o mySQL ?

Um dos maiores problemas é que a aplicação tem componentes de acesso 
em cada form, ou seja, quem desenvolveu não utilizou um datamodule 
para centralizar os componentes de acesso.Assim, se resolver abandonar 
o DBExpress, vou ter que percorrer todos os forms da aplicação 
substituindo os componentes.

Gostaria de saber de vocês, se isso acontece com outros bancos, ou 
realmente o Delphi não acompanhou a evolução somente do mySQL. Por 
exemplo: o BDS 2006 conecta normalmente com o SQL Server 2005 Express 
Edition, usando DBExpress ? 

Estou realmente perdido, pois tenho alguns projetos para iniciar, e 
ainda não decidi qual banco de dados e componente de acesso utilizar. 
já que tenho medo de futuramente cair no mesmo problema (o componente 
não acompanhar a evolução do BD).

Um abraço a todos e um FELIZ 2007 !

Plinio Cesar Pavin




[delphi-br] Sair do grupo

2006-12-27 Por tôpico anderson roberto
Gostaria de sair do grupo.
  Sem mais .
  Grato.

 __
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Sair do grupo

2006-12-27 Por tôpico Eric D.
Basta clicar no link Sair do grupo no final da mensagem ou escolher a opção 
Sair do grupo no seu home do yahoogrupos.

[]'s

Eric D. - Desenvolvimento e Soluções de Tecnologia 
[EMAIL PROTECTED] 
Talk is cheap, show me the code... 
  - Original Message - 
  From: anderson roberto 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, December 27, 2006 12:35 PM
  Subject: [delphi-br] Sair do grupo


  Gostaria de sair do grupo.
  Sem mais .
  Grato.

  __
  Fale com seus amigos de graça com o novo Yahoo! Messenger 
  http://br.messenger.yahoo.com/ 

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]



RES: [delphi-br] Help em Interfaces ...

2006-12-27 Por tôpico anderson
Funcionou como uma luva, valeu mesmo, a única coisa que tive que mudar foi o
tipo de TypeCast como segue abaixo

 

Antes:

 

for I := 0 to Pred(FList.Count) do
(FList as IIntfA).Execute;

 

Depois:

 

for I := 0 to Pred(FList.Count) do IIntfA (FList[I]).Execute;

 

Muito Obrigado,

 

Anderson

 

  _  

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Joao Morais
Enviada em: quarta-feira, 27 de dezembro de 2006 11:22
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Help em Interfaces ...

 

anderson wrote:

 E ai galera, seguinte. Estou querendo implementar algumas features no meu
 sistema e estou precisando manipular uma coleção de objetos com um TList
por
 exemplo e em determinados momentos percorrer esta lista executando métodos
 destes objetos pelas interfaces que implementam. Por exemplo. Supondo que
eu
 tenha a Interface A, e um monte de objetos que implementam esta interface
 que tem o método DoSomething. Em algum momento do meu código eu gostaria
de
 correr esta lista de Objetos (que pode ser de qualuqer tipo, desde que
 implemente a Interface A) e executar seu método DoSomething sem nem me
 importar de que tipo é o objeto, chamando o método somente pela interface
 que implementa. Alguém tem um código similiar ou dica de como fazer ???

Você pode fazer um wrapper para um TInterfaceList, colocar métodos 
Add(ISuaInterface) em seu wrapper, dentro dele fazer um cast dos itens 
para ISuaInterface, e então chamar o método.

Não sou fã de interface e não conheço bem sua sintaxe, talvez você 
precise fazer um cast ou modificá-lo em um canto ou outro, mas a 
estrutura fica mais ou menos assim:

TIntfAWrapper = class()
private
FList: IInterfaceList;
public
constructor Create;
function Add(AItem: IIntfA): Integer;
procedure Execute;
end;

function TIntfAWrapper.Add(AItem: IIntfA): Integer;
begin
FList.Add(AItem);
end;

constructor TIntfAWrapper.Create;
begin
inherited;
FList := TInterfaceList.Create;
end;

procedure TIntfAWrapper.Execute;
var
I: Integer;
begin
for I := 0 to Pred(FList.Count) do
(FList as IIntfA).Execute;
end;

--
João Morais

 



[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Andre Veloso de Mesquita
Acho que você está no caminho da OO...

Para que implementar métodos para acessar um record se você pode criar um 
objeto?!

dá uma olhada nisso:

type
  Str50 = String[50];
  TDados = class(TObject)
  private
FCodigo: Integer;
FNome: Str50;
FData: TDateTime;
procedure setCodigo(const Value: Integer);
procedure setData(const Value: TDateTime);
procedure setNome(const Value: Str50);
  published
property Codigo : Integer   read FCodigo write setCodigo;
property Nome   : Str50 read FNome   write setNome;
property Data   : TDateTime read FData   write setData;
  end;


implementation

{ TDados }

procedure TDados.setCodigo(const Value: Integer);
begin
  FCodigo := Value;
end;

procedure TDados.setData(const Value: TDateTime);
begin
  FData := Value;
end;

procedure TDados.setNome(const Value: Str50);
begin
  FNome := Value;
end;

end.

- Original Message - 
From: Alencar - Philler Informatica [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, December 27, 2006 11:37 AM
Subject: Re: [delphi-br] acesso variado a campo de record


On 12/27/06, Eric D. [EMAIL PROTECTED] wrote:
 Troque o tipo de STRING para o SEUTIPO (TDados no caso). Então vc pode 
 acessar o field do record normalmente no result de sua função.

 []'s

 Eric D. - Desenvolvimento e Soluções de Tecnologia

Eric, acho que eu nao me fiz entender.
No parametro da funcao, é passado o nome do campo que contem o valor
a ser retornado, entende?

A chamada seria assim:

getValue('data'): retorna o valor do campo data
getValue('codigo'):  retorna o valor do campo codigo

Alencar

---
Philler Informatica Ltda
Jose Alencar Philereno
 ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Links do Yahoo! Grupos




Re: [delphi-br] MySQL Com DBExpress

2006-12-27 Por tôpico Luiz Escobar
Bom EU uso MySQL 5.xx com o MyDAC da www.clab.com.br e não mudo por nada nesse 
mundo, pelo menos até sair algo melhor que ele, que na minha opnião é o 
melhor... hehehehe

Luiz Escobar
Analista/Desenvolvedor:
WEB - HTML/JavaScript/PHP/MySQL 
WINDOWS - Delphi/MyDAC/ASSEMBLER/MySQL/xBase
DOS - Clipper/Assembler xBase
SERVIDORES - NetWare4.11, LINUX-REDHAT9, WINDOWS-2k
LINUX - LAZARUS/Kylix/MySQL;
http://www.megasistema.com.br


  - Original Message - 
  From: Plinio Cesar Pavin 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, December 27, 2006 12:27 PM
  Subject: [delphi-br] MySQL Com DBExpress


  Olá Pessoal, estou dando manutenção numa aplicação desenvolvida com 
  Delphi 7 + mySQL (4.00) usando DBExpress (Driver da MicroOlap), porém 
  o cliente precisa atualizar o BD para a versão 5.0. Ao fazer isso, o 
  driver da MicroOlap começa apresentar uma série de erros nos campos 
  numéricos. 

  Em resumo, estou aceitando sugestões: 
  Fazer o cliente comprar o driver atualizado da MicroOlap ?
  Fazer o cliente comprar o driver CoreLab ?
  Abandonar de vez o DBExpress ?
  Abandonar de vez o mySQL ?

  Um dos maiores problemas é que a aplicação tem componentes de acesso 
  em cada form, ou seja, quem desenvolveu não utilizou um datamodule 
  para centralizar os componentes de acesso.Assim, se resolver abandonar 
  o DBExpress, vou ter que percorrer todos os forms da aplicação 
  substituindo os componentes.

  Gostaria de saber de vocês, se isso acontece com outros bancos, ou 
  realmente o Delphi não acompanhou a evolução somente do mySQL. Por 
  exemplo: o BDS 2006 conecta normalmente com o SQL Server 2005 Express 
  Edition, usando DBExpress ? 

  Estou realmente perdido, pois tenho alguns projetos para iniciar, e 
  ainda não decidi qual banco de dados e componente de acesso utilizar. 
  já que tenho medo de futuramente cair no mesmo problema (o componente 
  não acompanhar a evolução do BD).

  Um abraço a todos e um FELIZ 2007 !

  Plinio Cesar Pavin



   

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Rubem Nascimento da Rocha

Na trave, André! Sugiro que vc leia a resposta que eu mandei pra lista sobre 
esse assunto. Sds.

From: Andre Veloso de Mesquita [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: [delphi-br] acesso variado a campo de record
Date: Wed, 27 Dec 2006 14:08:13 -0200

Acho que você está no caminho da OO...

Para que implementar métodos para acessar um record se você pode criar um
objeto?!

dá uma olhada nisso:

type
   Str50 = String[50];
   TDados = class(TObject)
   private
 FCodigo: Integer;
 FNome: Str50;
 FData: TDateTime;
 procedure setCodigo(const Value: Integer);
 procedure setData(const Value: TDateTime);
 procedure setNome(const Value: Str50);
   published
 property Codigo : Integer   read FCodigo write setCodigo;
 property Nome   : Str50 read FNome   write setNome;
 property Data   : TDateTime read FData   write setData;
   end;


implementation

{ TDados }

procedure TDados.setCodigo(const Value: Integer);
begin
   FCodigo := Value;
end;

procedure TDados.setData(const Value: TDateTime);
begin
   FData := Value;
end;

procedure TDados.setNome(const Value: Str50);
begin
   FNome := Value;
end;

end.

- Original Message -
From: Alencar - Philler Informatica [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, December 27, 2006 11:37 AM
Subject: Re: [delphi-br] acesso variado a campo de record


On 12/27/06, Eric D. [EMAIL PROTECTED] wrote:
  Troque o tipo de STRING para o SEUTIPO (TDados no caso). Então vc pode
  acessar o field do record normalmente no result de sua função.
 
  []'s
 
  Eric D. - Desenvolvimento e Soluções de Tecnologia

Eric, acho que eu nao me fiz entender.
No parametro da funcao, é passado o nome do campo que contem o valor
a ser retornado, entende?

A chamada seria assim:

getValue('data'): retorna o valor do campo data
getValue('codigo'):  retorna o valor do campo codigo

Alencar

---
 Philler Informatica Ltda
 Jose Alencar Philereno
  ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


--
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Links do Yahoo! Grupos



_
MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br



Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Alencar - Philler Informatica
On 12/27/06, Andre Veloso de Mesquita [EMAIL PROTECTED] wrote:
 Acho que você está no caminho da OO...

 Para que implementar métodos para acessar um record se você pode criar um
 objeto?!

Andre, a estrutura do tipo record se faz necessaria, no meu caso, para troca de
dados entre aplicacoes, atraves de mapeamento de memoria.
Mas mesmo assim, gostei da ideia de uma classe encapsulando toda a manipu-
lacao dos dados do record carregando-os nos atributos da classe.

Vou pender para este lado, a nao ser que algum dos amigos tenha alguma ideia
a somar.

Grato a todos.

Alencar
---
Philler Informatica Ltda
Jose Alencar Philereno
 ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


Re: [delphi-br] acesso variado a campo de record

2006-12-27 Por tôpico Andre Veloso de Mesquita
Só acrescentando...

A estrutura que montei, por definição em Design Patterns, é conhecida como 
DTO (Data Transition Object).

Nos meus sistemas atuais, uso o DTO como a definição de dados, mas uso 
também o DAO (Data Access Object) para acessar os dados [É nessas classes 
onde ficam os SQLs, AssignFile's, etc], o CTLR (Controller) para permissões, 
o BS (Business Service) onde está toda a regra de negócios e um singleton 
chamado PM (Persistence Manager) que gerencia toda a parte transacional. 
Aproveitei a idéia do singleton e criei também um objeto chamada TUsuario 
que carrega os dados correntes do mesmo. É bem interessante.

[ ]'s

- Original Message - 
From: Alencar - Philler Informatica [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, December 27, 2006 2:50 PM
Subject: Re: [delphi-br] acesso variado a campo de record


On 12/27/06, Andre Veloso de Mesquita [EMAIL PROTECTED] wrote:
 Acho que você está no caminho da OO...

 Para que implementar métodos para acessar um record se você pode criar 
 um
 objeto?!

Andre, a estrutura do tipo record se faz necessaria, no meu caso, para troca 
de
dados entre aplicacoes, atraves de mapeamento de memoria.
Mas mesmo assim, gostei da ideia de uma classe encapsulando toda a manipu-
lacao dos dados do record carregando-os nos atributos da classe.

Vou pender para este lado, a nao ser que algum dos amigos tenha alguma ideia
a somar.

Grato a todos.

Alencar
---
Philler Informatica Ltda
Jose Alencar Philereno
 ICQ 13458351
Messenger/Skype (voz): alencar

Feliz aquele que transfere o que sabe
e aprende o que ensina Cora Coralina


-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Links do Yahoo! Grupos




Re: [delphi-br] Quero sair do grupo

2006-12-27 Por tôpico Valfrid-Ly Silva Couto
Pedido atendido

eduardobolela [EMAIL PROTECTED] escreveu: Solicito a retirada do meu nome, 
deste grupo.
Nem mais, muito obrigado.



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Links do Yahoo! Grupos

 



Valfrid-Ly Silva Couto
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
ICQ 15114646
 __
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] Paleta de Cores Importantes TBitmap - Substituir Cores [URGENTE]

2006-12-27 Por tôpico benn alle
Camaradas, 

Estou desenvolvento um software para o meu mestrado e nele preciso saber quais 
as cores que estão sendo usadas em um bitmap. Achei várias rotinas na internet, 
mais nenhuma funcionou. Depois de descobrir quais as cores que estão sendo 
usadas (que são chamadas de importantes) eu preciso substituir a cor do bitmap 
por outra.
Atualmente eu estou varrendo o bitmap pixel a pixel e carregando um array 
TColor. Porém isto fica muuiiooo lento por que os bitmaps são 
grandes. Os Bitmaps que eu estou usando são de 16 e 256 cores.
A rotina que eu achei que quase funcionou, pois dá algumas informações como 
largura, altura profundidade, tamanho,...e teóricamente a quantidade de cores 
totais e a quantidade de cores importantes é a que segue abaixo deste texto, 
porém ela está retornando as cores importantes como 0 e além de saber quantas 
são preciso saber quais são. Camaradas preciso muito disto para fazer o meu 
programa. Desde já agradeço. 


Para rodar é necessário:2 TMemo, 1 TOpenPictureDialog, 1 TImage e um TButton 
para disparar a trolha.

procedure TForm1.Button1Click(Sender: TObject);
var f: file;  idstr:string[2];  Bitmap : TBitmap; y, i, rowlength : integer;
pb : Pointer;
begin
   if OpenPictureDialog1.Execute then
  begin
 AssignFile(f, OpenPictureDialog1.FileName);
 Reset(f, 1);  idstr := '';
 {a bitmap file starts with the id 'BM'}
 BlockRead(f, AChar, 1, amt);
 idstr := Achar;
 BlockRead(f, Achar, 1, amt);
 idstr := idstr + Achar;
 If idstr  'BM' then
begin
   MessageDlg('The file is not a valid bitmap', mterror, [mbok],0);
   CloseFile(f);
   Exit;
end
 {end if};
 {read the file header info}
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfFileSize := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfReserved := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfBitMapDataOffset := Alongint;
 {read the bitmap info header}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biSize := Alongint; {size of header itself}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biWidth := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biHeight :=  Alongint;
 Blockread(f, AWord, 2, amt);
 BitmapInfoHeader.biPlanes := Aword;
 Blockread(f, AWord, 2, amt);
 BitmapInfoHeader.biBitCount := Aword;  {bits per pixel}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biCompression := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biSizeImage := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biXPelsPerMeter := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biYPelsPerMeter := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biClrUsed := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biClrImportant := Alongint;
 Bitmap := TBitmap.Create;
 Bitmap.Width := BitmapInfoHeader.biWidth ;
 Bitmap.Height := BitmapInfoHeader.biHeight ;
 case BitMapInfoHeader.biBitCount of
1  : Bitmap.PixelFormat := pf1bit;
4  : Bitmap.PixelFormat := pf4bit;
8  : Bitmap.PixelFormat := pf8bit;
15 : Bitmap.PixelFormat := pf15bit;
16 : Bitmap.PixelFormat := pf16bit;
24 : Bitmap.PixelFormat := pf24bit;
32 : Bitmap.PixelFormat := pf32bit;
{   : XORBitmap.PixelFormat := pfCustom;}
end;

{get the color palette}
 If BitmapInfoHeader.biClrUsed = 256 then
begin
   palcount := BitmapInfoHeader.biClrUsed ;
   GetMem(BMPalette, sizeof(TLogPalette)
   + sizeof(TPaletteEntry)
   * palcount);
   BMPalette.palVersion := $300;
   BMPalette.palNumEntries := palcount;
   {reading in a RGB table red first
results in a backwards colored bitmap
   and so this code  reads in the blue first}
   for i := 0 to palcount - 1 do
  begin
 BlockRead(f, BlueByte, 1, Amt);
 BlockRead(f, GreenByte, 1, Amt);
 BlockRead(f, RedByte, 1, Amt);
 BlockRead(f, AByte, 1, Amt); {The flag byte}
 BMPalette.palPalEntry[i].peBlue := BlueByte;
 BMPalette.palPalEntry[i].peGreen := GreenByte;
 BMPalette.palPalEntry[i].peRed := RedByte;
 BMPalette.palPalEntry[i].peFlags := Abyte;
  end
   {end for};
   BMhPalette := CreatePalette(BMPalette^);
   If 

Re: [delphi-br] Paleta de Cores Importantes TBitmap - Substituir Cores [URGENTE]

2006-12-27 Por tôpico Valfrid-Ly Silva Couto
Olha, 

Eu não sei se você já tentou algo parecido, mas, não seria mais fácil carregar 
a imagem diretamente em um objeto do tipo TBitmap e usar os métodos dele para 
conseguir as informações?!

benn alle [EMAIL PROTECTED] escreveu: Camaradas, 

Estou desenvolvento um software para o meu mestrado e nele preciso saber quais 
as cores que estão sendo usadas em um bitmap. Achei várias rotinas na internet, 
mais nenhuma funcionou. Depois de descobrir quais as cores que estão sendo 
usadas (que são chamadas de importantes) eu preciso substituir a cor do bitmap 
por outra.
Atualmente eu estou varrendo o bitmap pixel a pixel e carregando um array 
TColor. Porém isto fica muuiiooo lento por que os bitmaps são 
grandes. Os Bitmaps que eu estou usando são de 16 e 256 cores.
A rotina que eu achei que quase funcionou, pois dá algumas informações como 
largura, altura profundidade, tamanho,...e teóricamente a quantidade de cores 
totais e a quantidade de cores importantes é a que segue abaixo deste texto, 
porém ela está retornando as cores importantes como 0 e além de saber quantas 
são preciso saber quais são. Camaradas preciso muito disto para fazer o meu 
programa. Desde já agradeço. 


Para rodar é necessário:2 TMemo, 1 TOpenPictureDialog, 1 TImage e um TButton 
para disparar a trolha.

procedure TForm1.Button1Click(Sender: TObject);
var f: file;  idstr:string[2];  Bitmap : TBitmap; y, i, rowlength : integer;
pb : Pointer;
begin
   if OpenPictureDialog1.Execute then
  begin
 AssignFile(f, OpenPictureDialog1.FileName);
 Reset(f, 1);  idstr := '';
 {a bitmap file starts with the id 'BM'}
 BlockRead(f, AChar, 1, amt);
 idstr := Achar;
 BlockRead(f, Achar, 1, amt);
 idstr := idstr + Achar;
 If idstr  'BM' then
begin
   MessageDlg('The file is not a valid bitmap', mterror, [mbok],0);
   CloseFile(f);
   Exit;
end
 {end if};
 {read the file header info}
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfFileSize := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfReserved := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapFileHeader.bmfBitMapDataOffset := Alongint;
 {read the bitmap info header}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biSize := Alongint; {size of header itself}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biWidth := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biHeight :=  Alongint;
 Blockread(f, AWord, 2, amt);
 BitmapInfoHeader.biPlanes := Aword;
 Blockread(f, AWord, 2, amt);
 BitmapInfoHeader.biBitCount := Aword;  {bits per pixel}
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biCompression := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biSizeImage := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biXPelsPerMeter := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biYPelsPerMeter := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biClrUsed := Alongint;
 BlockRead(f, Alongint, 4, amt);
 BitmapInfoHeader.biClrImportant := Alongint;
 Bitmap := TBitmap.Create;
 Bitmap.Width := BitmapInfoHeader.biWidth ;
 Bitmap.Height := BitmapInfoHeader.biHeight ;
 case BitMapInfoHeader.biBitCount of
1  : Bitmap.PixelFormat := pf1bit;
4  : Bitmap.PixelFormat := pf4bit;
8  : Bitmap.PixelFormat := pf8bit;
15 : Bitmap.PixelFormat := pf15bit;
16 : Bitmap.PixelFormat := pf16bit;
24 : Bitmap.PixelFormat := pf24bit;
32 : Bitmap.PixelFormat := pf32bit;
{   : XORBitmap.PixelFormat := pfCustom;}
end;

{get the color palette}
 If BitmapInfoHeader.biClrUsed = 256 then
begin
   palcount := BitmapInfoHeader.biClrUsed ;
   GetMem(BMPalette, sizeof(TLogPalette)
   + sizeof(TPaletteEntry)
   * palcount);
   BMPalette.palVersion := $300;
   BMPalette.palNumEntries := palcount;
   {reading in a RGB table red first
results in a backwards colored bitmap
   and so this code  reads in the blue first}
   for i := 0 to palcount - 1 do
  begin
 BlockRead(f, BlueByte, 1, Amt);
 BlockRead(f, GreenByte, 1, Amt);
 BlockRead(f, RedByte, 1, Amt);
 BlockRead(f, AByte, 1, Amt); {The flag byte}
 BMPalette.palPalEntry[i].peBlue := BlueByte;
 BMPalette.palPalEntry[i].peGreen := GreenByte;
 

[delphi-br] Parser SQL

2006-12-27 Por tôpico Andre Veloso de Mesquita
Alguém aí conhece algum componente do tipo Parser para SQL.

Explicando:

Eu quero que o cliente possa ir clicando (ou preenchendo) um edit da 
seguinte forma, por exemplo:

('justiça' ou 'delegacia') não 'abuso' e $mento

onde ele monte o comando SQL:

select * from artigo where
(texto = 'justiça' ou texto = 'delegacia') and texto  'abuso and texto 
like '%mento'

Se alguém já viu isso por aí, avise-me por favor... reinventar a roda custa 
tempo.

[ ]'s



Re: [delphi-br] Parser SQL

2006-12-27 Por tôpico Thiago Menon
Cara acho q o problema q vc esta dendo deve ser com o '
coloque '' para ficar um ' dentro da string;

espero ter ajudado

Andre Veloso de Mesquita escreveu:

Alguém aí conhece algum componente do tipo Parser para SQL.

Explicando:

Eu quero que o cliente possa ir clicando (ou preenchendo) um edit da 
seguinte forma, por exemplo:

('justiça' ou 'delegacia') não 'abuso' e $mento

onde ele monte o comando SQL:

select * from artigo where
(texto = 'justiça' ou texto = 'delegacia') and texto  'abuso and texto 
like '%mento'

Se alguém já viu isso por aí, avise-me por favor... reinventar a roda custa 
tempo.

[ ]'s



  



[delphi-br] DBRadioGroup

2006-12-27 Por tôpico Claudiney Cogo - Listas
Boa tarde a todos...

Venho mais uma vez solicitar a ajuda do amigos aqui da lista.

Estou há um tempo com um problema e já procurei por todos os lados a respeito e 
não encontrei, inclusive nas mensagens antigas da lista. Já vi outras pessoas 
questionando a respeito do mesmo assunto, porém sem respostas ainda.

A questão é a seguinte: na minha tabela tenho a coluna SEXO. Coloquei na tela 
um componente DBRadioGroup para isso e criei dois itens: Masculino e Feminino. 
Também defini os values como Masculino e Feminino (também já fiz com M e F). No 
momento que crio ou altero um novo registro tudo funciona perfeitamente. Os 
valores são inserido na minha tabela e quando navego por ela o radiogroup 
mostra tudo correto. Porém quando abandono este cadastro (saio eliminando o 
form com free e colocando a tabela com status false) e volto novamente a ele 
(criando novamente o form com create e colocando a tabela com status true) o 
radiogroup não me apresenta mais os valores correspondentes, apesar de eles 
existirem corretamente na tabela. Sei que deve ser alguma bobeira da minha 
parte, mas até agora não consegui descobrir o que é. Já substituí o componente 
pelo DBRadioPanel da JVCL e acontece a mesma coisa. Porém colocando um DBEdit 
para mostrar o valor do campo, este me mostra certinho o que está na tabela. 
Alguém poderia me dar um luz do que está acontecendo? Onde estou errando? Ou 
informar algum lugar onde eu possa pesquisar mais alguma coisa, pois no google 
não encontrei nada específico e nas mensagens do delphi-br também não existem 
respostas sobre isso. E pelo que percebi, muita gente usa este componente sem 
problema nenhum.

Obrigado a todos antecipadamente.
Claudiney

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] DBRadioGroup

2006-12-27 Por tôpico Claudiney Cogo - Listas
Salve galera...

Aos 45 do segundo tempo, depois que mandei a mensagem, consegui encontrar o 
problema.
A falha na verdade é na definição do campo no banco de dados. Como optei por 
guardar a string inteira (masculino ou feminino), defini uma coluna com 10 
posições. A falha foi que criei esta coluna como CHAR, o que fazia com que o 
banco guardasse os espaços do fim também. Com isso, nunca seria igual ao valor 
definido no componente. Alterei no banco para VARCHAR e ficou ok.

Obrigado pela atenção e desculpem a falha técnica... rs
Claudiney.

  - Original Message - 
  From: Claudiney Cogo - Listas 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Wednesday, December 27, 2006 5:25 PM
  Subject: [delphi-br] DBRadioGroup


  Boa tarde a todos...

  Venho mais uma vez solicitar a ajuda do amigos aqui da lista.

  Estou há um tempo com um problema e já procurei por todos os lados a respeito 
e não encontrei, inclusive nas mensagens antigas da lista. Já vi outras pessoas 
questionando a respeito do mesmo assunto, porém sem respostas ainda.

  A questão é a seguinte: na minha tabela tenho a coluna SEXO. Coloquei na tela 
um componente DBRadioGroup para isso e criei dois itens: Masculino e Feminino. 
Também defini os values como Masculino e Feminino (também já fiz com M e F). No 
momento que crio ou altero um novo registro tudo funciona perfeitamente. Os 
valores são inserido na minha tabela e quando navego por ela o radiogroup 
mostra tudo correto. Porém quando abandono este cadastro (saio eliminando o 
form com free e colocando a tabela com status false) e volto novamente a ele 
(criando novamente o form com create e colocando a tabela com status true) o 
radiogroup não me apresenta mais os valores correspondentes, apesar de eles 
existirem corretamente na tabela. Sei que deve ser alguma bobeira da minha 
parte, mas até agora não consegui descobrir o que é. Já substituí o componente 
pelo DBRadioPanel da JVCL e acontece a mesma coisa. Porém colocando um DBEdit 
para mostrar o valor do campo, este me mostra certinho o que está na tabela. 
Alguém poderia me dar um luz do que está acontecendo? Onde estou errando? Ou 
informar algum lugar onde eu possa pesquisar mais alguma coisa, pois no google 
não encontrei nada específico e nas mensagens do delphi-br também não existem 
respostas sobre isso. E pelo que percebi, muita gente usa este componente sem 
problema nenhum.

  Obrigado a todos antecipadamente.
  Claudiney

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] DBRadioGroup

2006-12-27 Por tôpico Rubem Nascimento da Rocha
Sem grilo, Claudiney! Pelo menos vc fez algo que muitos que passam pela 
listas de Delphi não fazem, só perguntam, recebem a resposta e não passam um 
feedback pra lista se a coisa teve sucesso, explicando a técnica usada pra 
enriquecer mais a lista. Continue assim. Sds.


From: Claudiney Cogo - Listas [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: [delphi-br] DBRadioGroup
Date: Wed, 27 Dec 2006 17:54:47 -0200

Salve galera...

Aos 45 do segundo tempo, depois que mandei a mensagem, consegui encontrar o 
problema.
A falha na verdade é na definição do campo no banco de dados. Como optei 
por guardar a string inteira (masculino ou feminino), defini uma coluna com 
10 posições. A falha foi que criei esta coluna como CHAR, o que fazia com 
que o banco guardasse os espaços do fim também. Com isso, nunca seria igual 
ao valor definido no componente. Alterei no banco para VARCHAR e ficou ok.

Obrigado pela atenção e desculpem a falha técnica... rs
Claudiney.

   - Original Message -
   From: Claudiney Cogo - Listas
   To: delphi-br@yahoogrupos.com.br
   Sent: Wednesday, December 27, 2006 5:25 PM
   Subject: [delphi-br] DBRadioGroup


   Boa tarde a todos...

   Venho mais uma vez solicitar a ajuda do amigos aqui da lista.

   Estou há um tempo com um problema e já procurei por todos os lados a 
respeito e não encontrei, inclusive nas mensagens antigas da lista. Já vi 
outras pessoas questionando a respeito do mesmo assunto, porém sem 
respostas ainda.

   A questão é a seguinte: na minha tabela tenho a coluna SEXO. Coloquei na 
tela um componente DBRadioGroup para isso e criei dois itens: Masculino e 
Feminino. Também defini os values como Masculino e Feminino (também já fiz 
com M e F). No momento que crio ou altero um novo registro tudo funciona 
perfeitamente. Os valores são inserido na minha tabela e quando navego por 
ela o radiogroup mostra tudo correto. Porém quando abandono este cadastro 
(saio eliminando o form com free e colocando a tabela com status false) e 
volto novamente a ele (criando novamente o form com create e colocando a 
tabela com status true) o radiogroup não me apresenta mais os valores 
correspondentes, apesar de eles existirem corretamente na tabela. Sei que 
deve ser alguma bobeira da minha parte, mas até agora não consegui 
descobrir o que é. Já substituí o componente pelo DBRadioPanel da JVCL e 
acontece a mesma coisa. Porém colocando um DBEdit para mostrar o valor do 
campo, este me mostra certinho o que está na tabela. Alguém poderia me dar 
um luz do que está acontecendo? Onde estou errando? Ou informar algum lugar 
onde eu possa pesquisar mais alguma coisa, pois no google não encontrei 
nada específico e nas mensagens do delphi-br também não existem respostas 
sobre isso. E pelo que percebi, muita gente usa este componente sem 
problema nenhum.

   Obrigado a todos antecipadamente.
   Claudiney

   [As partes desta mensagem que não continham texto foram removidas]





[As partes desta mensagem que não continham texto foram removidas]


_
MSN Hotmail, o maior webmail do Brasil. http://www.hotmail.com



Re: [delphi-br] Parser SQL

2006-12-27 Por tôpico Lawer_Al


Lawer_Al escreveu:
 Kra ainda nao vi isso.

 Tenho como palpite seria voce jogar isso num TQuery e efetuar um 
 PREPARE e caso lhe retorne um erro vc
 sabe que aquela instrucao nao está correta.




[delphi-br] Apresentação

2006-12-27 Por tôpico chsistemas2

Olá colegas do grupo, 

meu nome Carlos Henrique, sou formado em análise de sistemas. Atuo 
como analista de sistemas / suporte. 
Gostaria de poder estar participando com vocês nos estudos de Delphi 
programação, solucionando questões, tirando dúvidas ... 

Atenciosamente, 
Carlos Henrique 
Analista de sistemas



Res: [delphi-br] DBRadioGroup

2006-12-27 Por tôpico BrancoRP2000
Realmente... RETORNO (feedback) para a lista é imprescindível. Espero q TODOS 
façam assim. Parabens!
 
-
BRANCORP2000
http://brancorp2000.blogspot.com
MSN: [EMAIL PROTECTED]



- Mensagem original 
De: Rubem Nascimento da Rocha [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 27 de Dezembro de 2006 17:40:05
Assunto: Re: [delphi-br] DBRadioGroup

Sem grilo, Claudiney! Pelo menos vc fez algo que muitos que passam pela 
listas de Delphi não fazem, só perguntam, recebem a resposta e não passam um 
feedback pra lista se a coisa teve sucesso, explicando a técnica usada pra 
enriquecer mais a lista. Continue assim. Sds.. 


__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] Re: Parser SQL

2006-12-27 Por tôpico mrbar2000
Cara, acho que estes 2 links vai te ajudar. 
Terá que fazer algumas adaptações mas funcionará:
http://www.felix-colibri.com/papers/db/sql_parser/sql_parser.html
http://www.felix-colibri.com/papers/colibri_utilities/the_coliget_search_engine/the_coliget_search_engine.html
Assim que estiver pronto não esqueça de me mandar uma cópia!



[delphi-br] RICHEDIT - ALINHAMENTO JUSTIFICADO

2006-12-27 Por tôpico ksio2005
Estou precisando imprimir um texto que se encontra em um RichEdit com 
alinhamento justificado.
Tentei usar um componente disponivel na web, mas ele, em alguns 
momentos, quebra linha errado. Tipo ele quebra numeros com digitos 
no '-'.
Então gostaria de saber se alguem tem solução pra esse problema, já 
dei uma pesquisada e não achei onde conseguir isso.

agradeço desde já a atenção.

Cássio.