Re: [delphi-br] Re: PRFWK - Framework para acesso a dados
2010/5/30 Paulo Coutinho pa...@prsolucoes.com: Alguém testou? Tem alguma sugestão? Não testei, mas vi o código. Se está buscando opiniões, espero que aceite as críticas construtivas abaixo: - Não entendi porque o framework é para acesso a dados. Isso já temos aos montes por aí. - Existem várias classes praticamente sem código; ou elas são desnecessárias ou imcompletas. - Na classe TPRFWK_Gerente (sugiro utilizar nomes bem menores nas classes e units) vc tem atributos do tipo TPRFWK_ClientDataSet e TPRFWK_ADODataSet. Se o framework é para acesso a dados de forma transparente vc não deveria amarrar a forma de conexão; nem todos utilizam ClientDataSet. - unit projeto_teste\UFrmPrincipal.pas possui códigos bem confusos: procedure TFrmPrincipal.alterarItem; begin if (lvItens.ItemIndex -1) then begin gMembro := TPRFWK_Membro.Create; gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption); gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; if (gMembro nil) then begin gMembro.nome := edNome.Text; gGR_Membro.alterar(gMembro); gMembro.Free; end; carregarGrid(); end; end; procedure TFrmPrincipal.excluirItem; begin if (lvItens.ItemIndex -1) then begin gMembro := TPRFWK_Membro.Create; gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption); gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; if (gMembro nil) then begin gGR_Membro.excluir(gMembro); gMembro.Free; end; carregarGrid(); end; end; procedure TFrmPrincipal.inicializar; var lTemp : String; begin //título lTemp := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO', 'titulo', ''); self.Caption := lTemp; //conexão //TSqlConnection ou TAdoConnection gConexao := TPRFWK_Conexao.Create; gConexao.vendorlib := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'vendorlib', ''); gConexao.libraryName := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'libraryname', ''); gConexao.criarConexao( MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'driver', ''), MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'nomeconexao', '') ); gConexao.conectar; end; Sem manual e/ou exemplos claros, fica muito dificil o pessoal começar a utilizar. Marcos Douglas
[delphi-br] Criando Matriz
alguel sabe como eu posso fazer para criar uma matriz em tempo de execução usando valores de duas variaveis integer para linha e coluna. -- Leonardo Carlos Baldino - The Highlander [As partes desta mensagem que não continham texto foram removidas]
RES: [delphi-br] Criando Matriz
Esboce mais ou menos o q você quer fazer. Pode ser um pedaço de código hipotético que ilustre bem sua idéia. Sds. De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leonardo Baldino Enviada em: segunda-feira, 31 de maio de 2010 14:10 Para: Grupo_Delphi Assunto: [delphi-br] Criando Matriz alguel sabe como eu posso fazer para criar uma matriz em tempo de execução usando valores de duas variaveis integer para linha e coluna. -- Leonardo Carlos Baldino - The Highlander [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] Criando Matriz
algo do tipo eu insero em dois edits o numero de colunas e linhas e quando eu clico em um bitbtn eu crio uma matriz em tempo de execução com o numero de linhas e colunas que eu indiquei Em 31 de maio de 2010 15:11, Rubem Rocha rubem.ro...@dtmanaus.com.brescreveu: Esboce mais ou menos o q você quer fazer. Pode ser um pedaço de código hipotético que ilustre bem sua idéia. Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de Leonardo Baldino Enviada em: segunda-feira, 31 de maio de 2010 14:10 Para: Grupo_Delphi Assunto: [delphi-br] Criando Matriz alguel sabe como eu posso fazer para criar uma matriz em tempo de execução usando valores de duas variaveis integer para linha e coluna. -- Leonardo Carlos Baldino - The Highlander [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Leonardo Carlos Baldino - The Highlander [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Criando Matriz
Leonardo, Esse código tem uma procedure que faz o que você precisa: http://pastebin.com/7er6ymyp O nome da procedure é alocarMatriz. []'s Dirlei Dionísio. Novo artigo: Quando utilizar soluções de contorno http://MaisQueBomCodigo.blogspot.com Em Seg, 2010-05-31 às 15:10 -0300, Leonardo Baldino escreveu: alguel sabe como eu posso fazer para criar uma matriz em tempo de execução usando valores de duas variaveis integer para linha e coluna. -- Leonardo Carlos Baldino - The Highlander
RES: [delphi-br] Criando Matriz
Se você está usando arrays de variants, prefira o uso da função VarArrayCreate(). Caso contrário, se você está trabalhando com arrays de tipos de dados primitivos, sugiro que você crie funções especializadas para cada tipo de array que você irá trabalhar. O exemplo abaixo trabalha com vetores e matriz de valores numéricos inteiros. program DynArraySample; {$APPTYPE CONSOLE} uses SysUtils{$IF CompilerVersion = 14.0}, Types{$IFEND}; type {$IF CompilerVersion 14.0} TIntegerDynArray = array of Integer; {$IFEND} TIntegerMultiDynArray = array of TIntegerDynArray; function CreateIntegerArray(const Columns: integer): TIntegerDynArray; overload; begin SetLength(Result, Columns); end; function CreateIntegerArray(const Rows, Columns: integer): TIntegerMultiDynArray; overload; var i: integer; begin SetLength(Result, Rows); for i := Low(Result) to High(Result) do Result[i] := CreateIntegerArray(Columns); end; var i, j: Integer; Vetor: TIntegerDynArray; Matriz: TIntegerMultiDynArray; begin Randomize; Vetor := CreateIntegerArray(3); for i := Low(Vetor) to High(Vetor) do Vetor[i] := Random(100); WriteLn('Mostrando vetor criado ...'); for i := Low(Vetor) to High(Vetor) do WriteLn(Vetor[i]); WriteLn; WriteLn; SetLength(Vetor, 0); Matriz := CreateIntegerArray(3, 4); for i := Low(Matriz) to High(Matriz) do for j := Low(Matriz[i]) to High(Matriz[i]) do Matriz[i, j] := Random(100); WriteLn('Mostrando matriz criada ...'); for i := Low(Matriz) to High(Matriz) do begin for j := Low(Matriz[i]) to High(Matriz[i]) do Write(Matriz[i, j], ' '); WriteLn; end; SetLength(Matriz, 0); WriteLn(Eoln); end. Boa sorte. Sds. -Mensagem original- De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Leonardo Baldino Enviada em: segunda-feira, 31 de maio de 2010 14:19 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Criando Matriz algo do tipo eu insero em dois edits o numero de colunas e linhas e quando eu clico em um bitbtn eu crio uma matriz em tempo de execução com o numero de linhas e colunas que eu indiquei Em 31 de maio de 2010 15:11, Rubem Rocha rubem.ro...@dtmanaus.com.brescreveu: Esboce mais ou menos o q você quer fazer. Pode ser um pedaço de código hipotético que ilustre bem sua idéia. Sds. De: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br [mailto: delphi-br@yahoogrupos.com.br delphi-br%40yahoogrupos.com.br] Em nome de Leonardo Baldino Enviada em: segunda-feira, 31 de maio de 2010 14:10 Para: Grupo_Delphi Assunto: [delphi-br] Criando Matriz alguel sabe como eu posso fazer para criar uma matriz em tempo de execução usando valores de duas variaveis integer para linha e coluna. -- Leonardo Carlos Baldino - The Highlander [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Leonardo Carlos Baldino - The Highlander [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM
[delphi-br] BDE 64bit - -
Pessoal, Fiz a instalação do BDE, no windows 64, mas não tem o drive do Oracle... Alguem sabe como posso incluir o drive do oracle? Ja fiz até a cópia dos arquivos de um windows 32,mas não deu certo.
[delphi-br] Aplicação 100% CPU
Galera... desenvolvi um aplicação com delphi 2010 para cadastro de clienes,fornecedores,materiais e vendas usando banco de dados MySql 5.1 e conexão dbexpress, o problema é que no meu notebook(processador 2 nucleos AMD, 3GB Ram) e meu Desktop(processador semprom 1.8, 512 Ram) o programa roda normal mas no cliente (processador 1.6 e 1.5GB Ram)não roda fica sempre com 100% de CPU e nem abre o programa. Obs: nas minhas máquinas tem o delphi 2010 instalado.
[delphi-br] UserControl
Pessoal, alguém já mexeu com essa suíte? Achei a idéia espetacular, instalei no Delphi 2010, mas ele não cria automaticamente as tabelas, até pq não faz o primeiro login. Então criei na mão as mesmas, mas ele não reconhece a senha do meu usuário de jeito nenhum, nem o usuário e senha do primeiro Login. alguém pode me dar uma mão? Atenciosamente, -- Sérgio Cavalcante [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Web Service - Servidor Linux
Bom dia pessoal, tenho um sistema em que necessitava de um envio de uma solicitacao e recebimento de uma resposta pela Web. Fazia isso por email, com Indy, depois criei um client de email, filtrava as mensagens e processava as respostas. Para melhorar o POG criei um WebService simples, com SOAP, ISAPI, etc ... porem, o servidor que vou utilizar é Linux. Como fazer isso no D7/D2010 ? Obrigado. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] UserControl
Quando usei, eu deixei as tabelas todas default, e ele crio tudo direitinho, qual o banco que vc usa? Em 31 de maio de 2010 10:31, sergio cavalcante sergio.cavalca...@gmail.comescreveu: Pessoal, alguém já mexeu com essa suíte? Achei a idéia espetacular, instalei no Delphi 2010, mas ele não cria automaticamente as tabelas, até pq não faz o primeiro login. Então criei na mão as mesmas, mas ele não reconhece a senha do meu usuário de jeito nenhum, nem o usuário e senha do primeiro Login. alguém pode me dar uma mão? Atenciosamente, -- Sérgio Cavalcante [As partes desta mensagem que não continham texto foram removidas] -- Nazareno Neto Desenvolvedor Delphi e Firebird http://www.delphisistemas.com.br nazarenon...@delphisistemas.com.br nazareno.nobr...@gmail.com [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] UserControl
Oi Nazareno, Obrigado pela resposta. Firebird. Deixei elas default tbm e ele reclamou que a tabela que ele deveria criar não existia. Atenciosamente, -- Sérgio Cavalcante 2010/5/31 Nazareno Neto nazareno.nobr...@gmail.com Quando usei, eu deixei as tabelas todas default, e ele crio tudo direitinho, qual o banco que vc usa? Em 31 de maio de 2010 10:31, sergio cavalcante sergio.cavalca...@gmail.comescreveu: Pessoal, alguém já mexeu com essa suíte? Achei a idéia espetacular, instalei no Delphi 2010, mas ele não cria automaticamente as tabelas, até pq não faz o primeiro login. Então criei na mão as mesmas, mas ele não reconhece a senha do meu usuário de jeito nenhum, nem o usuário e senha do primeiro Login. alguém pode me dar uma mão? Atenciosamente, -- Sérgio Cavalcante [As partes desta mensagem que não continham texto foram removidas] -- Nazareno Neto Desenvolvedor Delphi e Firebird http://www.delphisistemas.com.br nazarenon...@delphisistemas.com.br nazareno.nobr...@gmail.com [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Re: PRFWK - Framework para acesso a dados
Olá, Obrigado pelas criticas, com certeza ajudam muito. Mas vou explicar alguns detalhes. O framework utiliza o padrão DAO ou MODELO/GERENTE, então você não usa diretamente componentes como ado ou dbx, você cria os modelos e o framework se encarrega de montar baseado nas configurações do arquivo INI, embora você até possa acessar o dbx ou ado pelo gerente, mas não recomendo. A transparência do framework permite deixar você livre de qual componente suar, já que estou colocando os 2 padrões do delphi, mas nada impede de você alterar o gerente para usar o UniDac por exemplo. Outra vantagem é você trabalhar com componentes desconectados e liberando da memória o desnecessário, sempre criando e excluindo o objeto quando não usar mais. Outra vantagem é você trabalhar com objetos , utilizando padrões e definindo uma metodologia de desenvolvimento para seus projetos, ao invés de manipular componentes, você vai manipular objetos, como : - cliente.nome - mercadoria.valor - pessoa.data_nascimento - etc... Os códigos não são confusos, apenas IFs para saber se o grid tem item selecionado e depois vem: /// gMembro := TPRFWK_Membro.Create; gMembro.ID := 1; //substitui por um numero gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; //estou dizendo neste bloco que criei um objeto da minha classe de dominio Membro, defini o atributo padrão ID para 1 e usei o gerente para obter este objeto pela chave ID. //por padrão todas os modelos do dominio possuem o atributo ID (pode ser alterado na classe pai dos modelos) /// if (gMembro nil) then begin gMembro.nome := edNome.Text; gGR_Membro.alterar(gMembro); gMembro.Free; end; carregarGrid(); //aqui estou verificando se o valor retornado para meu objeto não está nulo, ou seja, se realmente encontrou o Membro pelo ID dele. Em seguida defino o nome do membro como o texto do edit e uso o gerente para alterá-lo e libero o modelo recebido da memória. Não vi complicação. E em nenhum momento me preocupei com componentes. Essa é a regra. Esqueça esse lance de componente, foque na orientação a objetos. Mais uma classe útil, é usada aqui: /// lTemp := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO','titulo', ''); self.Caption := lTemp; //aqui eu estou usando uma classe do framework para obter do arquivo de configuração o TITULO da aplicação, mas em aplicações que tenho aqui, possuo trocentas configurações pelo INI, então ajuda bastante. /// Mais alguma dúvida? Em 31 de maio de 2010 09:09, Marcos Douglas m...@delfire.net escreveu: 2010/5/30 Paulo Coutinho pa...@prsolucoes.com paulo%40prsolucoes.com: Alguém testou? Tem alguma sugestão? Não testei, mas vi o código. Se está buscando opiniões, espero que aceite as críticas construtivas abaixo: - Não entendi porque o framework é para acesso a dados. Isso já temos aos montes por aí. - Existem várias classes praticamente sem código; ou elas são desnecessárias ou imcompletas. - Na classe TPRFWK_Gerente (sugiro utilizar nomes bem menores nas classes e units) vc tem atributos do tipo TPRFWK_ClientDataSet e TPRFWK_ADODataSet. Se o framework é para acesso a dados de forma transparente vc não deveria amarrar a forma de conexão; nem todos utilizam ClientDataSet. - unit projeto_teste\UFrmPrincipal.pas possui códigos bem confusos: procedure TFrmPrincipal.alterarItem; begin if (lvItens.ItemIndex -1) then begin gMembro := TPRFWK_Membro.Create; gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption); gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; if (gMembro nil) then begin gMembro.nome := edNome.Text; gGR_Membro.alterar(gMembro); gMembro.Free; end; carregarGrid(); end; end; procedure TFrmPrincipal.excluirItem; begin if (lvItens.ItemIndex -1) then begin gMembro := TPRFWK_Membro.Create; gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption); gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; if (gMembro nil) then begin gGR_Membro.excluir(gMembro); gMembro.Free; end; carregarGrid(); end; end; procedure TFrmPrincipal.inicializar; var lTemp : String; begin //título lTemp := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO', 'titulo', ''); self.Caption := lTemp; //conexão //TSqlConnection ou TAdoConnection gConexao := TPRFWK_Conexao.Create; gConexao.vendorlib := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'vendorlib', ''); gConexao.libraryName := MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'libraryname', ''); gConexao.criarConexao( MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO', 'driver', ''),