[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
Re: [delphi-br] acesso variado a campo de record
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
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
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
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 ...
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 ...
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
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
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
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 ...
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
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
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
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
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
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
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]
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]
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
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
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
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
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
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
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
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
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
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
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.