Re: [delphi-br] Ajuda array dinamico DLL
Muito obrigado pela sugestão! Vai ser de grande valia. From: Rubem Nascimento da Rocha To: delphi-br Sent: Wed, January 13, 2010 1:56:15 PM Subject: RE: [delphi-br] Ajuda array dinamico DLL Se pensa em migrar pra C#, a melhor coisa a fazer é fazer essa DLL do tipo COM. Vai faciliar mais ainda. Sds. To: delphi...@yahoogrup os.com.br From: evaldoavelar@ yahoo.com. br Date: Wed, 13 Jan 2010 07:49:28 -0800 Subject: Re: [delphi-br] Ajuda array dinamico DLL Obrigado, mas preciso usar dll por causa de uma futura migração para C#. _ _ __ From: Rubem Nascimento da Rocha To: delphi-br Sent: Wed, January 13, 2010 12:05:20 PM Subject: RE: [delphi-br] Ajuda array dinamico DLL Quando utilizamos arrays dinâmicos do Delphi como parâmetros em funções de uma DLL, estes são tratados como ponteiros. Seu eu fosse vc, empacotaria essa sua rotina utilitária em um package. Com o package, você poderá declarar funções e rotinas que possam lidar tranquilamente tanto com arrays dinâmicos como com tipos de dados customizados criados por vc. Boa sorte. _ _ _ _ _ _ Sabia que você tem 25Gb de armazenamento grátis na web? Conheça o Skydrive agora. http://www.windowsl ive.com.br/ public/product. aspx/view/ 5?ocid=CRM- WindowsLive: produtoSkyDrive: Tagline:WLCRM: On:WL:pt- BR:SkyDrive [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] Ajuda array dinamico DLL
Se pensa em migrar pra C#, a melhor coisa a fazer é fazer essa DLL do tipo COM. Vai faciliar mais ainda. Sds. To: delphi-br@yahoogrupos.com.br From: evaldoave...@yahoo.com.br Date: Wed, 13 Jan 2010 07:49:28 -0800 Subject: Re: [delphi-br] Ajuda array dinamico DLL Obrigado, mas preciso usar dll por causa de uma futura migração para C#. From: Rubem Nascimento da Rocha To: delphi-br Sent: Wed, January 13, 2010 12:05:20 PM Subject: RE: [delphi-br] Ajuda array dinamico DLL Quando utilizamos arrays dinâmicos do Delphi como parâmetros em funções de uma DLL, estes são tratados como ponteiros. Seu eu fosse vc, empacotaria essa sua rotina utilitária em um package. Com o package, você poderá declarar funções e rotinas que possam lidar tranquilamente tanto com arrays dinâmicos como com tipos de dados customizados criados por vc. Boa sorte. _ Sabia que você tem 25Gb de armazenamento grátis na web? Conheça o Skydrive agora. http://www.windowslive.com.br/public/product.aspx/view/5?ocid=CRM-WindowsLive:produtoSkyDrive:Tagline:WLCRM:On:WL:pt-BR:SkyDrive [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Ajuda array dinamico DLL
Deu certinho com WideStrings! Muito obrigado! From: Evaldo To: delphi-br@yahoogrupos.com.br Sent: Wed, January 13, 2010 1:50:17 PM Subject: Re: [delphi-br] Ajuda array dinamico DLL Obrigado! vou tentar isso. _ _ __ From: Willian Jhonnes L. dos Santos To: delphi...@yahoogrup os.com.br Sent: Wed, January 13, 2010 1:09:41 PM Subject: Re: [delphi-br] Ajuda array dinamico DLL Olá, Evaldo... > > TMenuDLL = record > AssinaturaFuncao: string; > NomeDLL: string; > Caption: string; > end; > > > Bem, pra começar, que tal você trocar essas Strings por WideStrings? ?? Variáveis do tipo String realmente dão problemas em DLLs... [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] Ajuda array dinamico DLL
Obrigado! vou tentar isso. From: Willian Jhonnes L. dos Santos To: delphi-br@yahoogrupos.com.br Sent: Wed, January 13, 2010 1:09:41 PM Subject: Re: [delphi-br] Ajuda array dinamico DLL Olá, Evaldo... > > TMenuDLL = record > AssinaturaFuncao: string; > NomeDLL: string; > Caption: string; > end; > > > Bem, pra começar, que tal você trocar essas Strings por WideStrings? ?? Variáveis do tipo String realmente dão problemas em DLLs... [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Ajuda array dinamico DLL
Obrigado, mas preciso usar dll por causa de uma futura migração para C#. From: Rubem Nascimento da Rocha To: delphi-br Sent: Wed, January 13, 2010 12:05:20 PM Subject: RE: [delphi-br] Ajuda array dinamico DLL Quando utilizamos arrays dinâmicos do Delphi como parâmetros em funções de uma DLL, estes são tratados como ponteiros. Seu eu fosse vc, empacotaria essa sua rotina utilitária em um package. Com o package, você poderá declarar funções e rotinas que possam lidar tranquilamente tanto com arrays dinâmicos como com tipos de dados customizados criados por vc. Boa sorte. [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Ajuda array dinamico DLL
Olá, Evaldo... > > TMenuDLL = record > AssinaturaFuncao: string; > NomeDLL: string; > Caption: string; > end; > > > Bem, pra começar, que tal você trocar essas Strings por WideStrings??? Variáveis do tipo String realmente dão problemas em DLLs... -- --- Att.: Willian Jhonnes L. dos Santos Analista/Desenvolvedor Object/Free Pascal willianjhon...@yahoo.com.br --- Seja livre. Use Linux. Grupo de Usuários GNU/Linux de São José dos Pinhais Linux user number 449753 --- Powered by Slackware Linux 12.2 Kernel 2.6.27.8-i686-core2 --- [As partes desta mensagem que não continham texto foram removidas]
RE: [delphi-br] Ajuda array dinamico DLL
Quando utilizamos arrays dinâmicos do Delphi como parâmetros em funções de uma DLL, estes são tratados como ponteiros. Seu eu fosse vc, empacotaria essa sua rotina utilitária em um package. Com o package, você poderá declarar funções e rotinas que possam lidar tranquilamente tanto com arrays dinâmicos como com tipos de dados customizados criados por vc. Boa sorte. Sds. To: delphi-br@yahoogrupos.com.br From: evaldoave...@yahoo.com.br Date: Wed, 13 Jan 2010 05:50:45 -0800 Subject: [delphi-br] Ajuda array dinamico DLL Bom dia! Estou com problemas em uma função de uma dll que estou criando. A função recebe um array dinamico de um tipo de dado. De acordo com a quantidade de informação, a dll altera o tamanho e preenche o array. Na aplicação pego o array e passo para outra função preencher preencher um item de um Mainmenu. consigo acessar e usar os dados do array que a dll alterou sem erros. Mas depois, quando a aplicação já carregou, quando eu clico no item que adicionei para o main menu a aplicação da um acess vilation. Percebi que se eu não acesso nenhuma posicição do array que veio da dll, dentro da função, o erro não ocorre. Por exemplo : procedure TForm1.ADDToMenu(var Lista: TListaMenuDLL); begin if length(Lista) <= 0 then exit; Menu.caption := lista[i].caption //ocorre erro depois que a aplicação foi carregada end; procedure TForm1.ADDToMenu(var Lista: TListaMenuDLL); begin if length(Lista) <= 0 then exit; Menu.caption :='Teste' //sem erro end; Pesquisando, descobrir que se a dll aloca memória, ela também destrói. Eu mantenho a dll na memória enquanto eu monto menu, só depois ela é liberada. Mas eu não estou mais apontando para o array que a dll alocou, então o erro nao deveria ocorrer. Função da dll que me retorna o que preciso: procedure MenuDLL(var Lista: TListaMenuDLL); stdcall ; var Item : TMenuDLL; begin item := TMenuDLL.Create('DLL','FunçõesCliente'); item.Caption := 'DLL Funções de Clientes'; SetLength( Lista ,( length(lista)+1) ); Lista[length(lista)-1] := (item); item := TMenuDLL.Create('DLL','CadastroCliente'); item.Caption := 'Cadastro de Cliente'; SetLength(Lista,length(lista)+1 ); Lista[length(lista)-1] := (item); end; //Array type TListaMenuDLL = array of TMenuDLL; //Tipo de dado TMenuDLL = record AssinaturaFuncao: string; NomeDLL: string; Caption: string; end; uso o delphi 2007 Se aguém puder dar alguma sugestão, Obrigado! _ Deixe seu computador compatível com a sua vida. Clique para conhecer o Windows 7! http://www.microsoft.com/brasil/windows7/default.html?WT.mc_id=1539 [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Ajuda array dinamico DLL
Bom dia! Estou com problemas em uma função de uma dll que estou criando. A função recebe um array dinamico de um tipo de dado. De acordo com a quantidade de informação, a dll altera o tamanho e preenche o array. Na aplicação pego o array e passo para outra função preencher preencher um item de um Mainmenu. consigo acessar e usar os dados do array que a dll alterou sem erros. Mas depois, quando a aplicação já carregou, quando eu clico no item que adicionei para o main menu a aplicação da um acess vilation. Percebi que se eu não acesso nenhuma posicição do array que veio da dll, dentro da função, o erro não ocorre. Por exemplo : procedure TForm1.ADDToMenu(var Lista: TListaMenuDLL); begin if length(Lista) <= 0 then exit; Menu.caption := lista[i].caption //ocorre erro depois que a aplicação foi carregada end; procedure TForm1.ADDToMenu(var Lista: TListaMenuDLL); begin if length(Lista) <= 0 then exit; Menu.caption :='Teste' //sem erro end; Pesquisando, descobrir que se a dll aloca memória, ela também destrói. Eu mantenho a dll na memória enquanto eu monto menu, só depois ela é liberada. Mas eu não estou mais apontando para o array que a dll alocou, então o erro nao deveria ocorrer. Função da dll que me retorna o que preciso: procedure MenuDLL(var Lista: TListaMenuDLL); stdcall ; var Item : TMenuDLL; begin item := TMenuDLL.Create('DLL','FunçõesCliente'); item.Caption := 'DLL Funções de Clientes'; SetLength( Lista ,( length(lista)+1) ); Lista[length(lista)-1] := (item); item := TMenuDLL.Create('DLL','CadastroCliente'); item.Caption := 'Cadastro de Cliente'; SetLength(Lista,length(lista)+1 ); Lista[length(lista)-1] := (item); end; //Array type TListaMenuDLL = array of TMenuDLL; //Tipo de dado TMenuDLL = record AssinaturaFuncao: string; NomeDLL: string; Caption: string; end; uso o delphi 2007 Se aguém puder dar alguma sugestão, Obrigado! [As partes desta mensagem que não continham texto foram removidas]