Ricardo

Bom dia.

Acho que descobri o problema com o access violation.

Voce falou que tem um form que cria um datamodule com o acesso aos
dados, e quando voce o fechar e tiver outra instancia do form aberto,
vai destruir o datamodule que tb esta sendo utilizado pelo outro form
(outra instancia) ai ao fechar esta segunda instancia, vai tentar
finalizar o datamodule já destruido....(access violatio)...(não sei se
consegui me espressar direito...rs..)

Sobre o que voce faz em um form acontece no outro, provavelmente voce
esta utilizando um datasource no form ligado em um dataset no
datamodule, quando voce movimenta os dados em um datasource, esta
movimentacao se propaga tb no dataset...e ai se tiver outra instancia do
mesmo form, com o datasouce no mesmo dataset...vai mesmo se
movimentar...Se voce quiser fazer um teste para provar isto, adicione um
dataset em um form e ligue a ele dois datasources, e um grid a cada
datasource, rode a aplicacao, se voce navegar em um grid, o outro vai
automaticamente mover-se tb....

Entao acho que necessáriamente este problema não se trata de um erro,
apenas reveja a sua logica,
Complementando, acho entao que não tem haver como voce criou os forms
(com mencionei na primeira msg), achei que fosse outro comportamento...

Sobre carregar todos os bpls no inicio da aplicacao.
Eu carrego todos, já fiz alguns testes com 200 bpls, (4,10 forms
cada)(de um trabalhao pra fazer o teste..rs...), mas não tive nenhum
problema...é so não esquecer forms abertos antes de descarregar os bpls,
e liberar toda a memoria que voce alocou com uma ou outra coisa
(objeto)(se deu um create em algo...chame ao menos um destroy no fim).

Não esqueca das secoes Initilization/Finalization

So pra esclarecer, eu uso um sistema dinamico, semelhante ao
delphi...pra voce ter uma ideia o exe tem 12k, tudo é feito por bpl, no
exe, carrego uma bpl (que chamo de principal) e que se encarrega de
fazer o resto, podendo adicionar e remover outros bpls em run-time.

Atenc.
Elazar


-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
Em nome de Ricardo Lima Mariz
Enviada em: quarta-feira, 7 de junho de 2006 10:07
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Qual melhor forma de trabalhar com pacotes?


Certo, o problema que faz em um e apare em outro é o seguinte, tenho
nesse pacote um formulario e um datamodulo, quando da um show no
formulário ele cria
o datamodulo, o datamodulo contem os componentes de acesso a dados,
nesse formulario tem um DBGrid que lista todos registros, ai quando eu
abro dois formularios ao mesmo tempo e navego entre os registros do
DBGrid o outro formulario aberto também muda a posição no DBGrid, tipo
se eu for no primeiro formulario para o ultimo registro,  o outro
formulário que ta aberto também vai pro ultimo registro.

Entendeu o que ta acontece?

Eles são a mesma instancia, se eu fechar um formulário e depois tenta
fechar o outro da erro de access violation, devido ao fato de ser a
mesma instancia e o objeto não está mais em memoria.

Vou mudar a forma de criação dos formularios pra vê se vai fazer
diferença.

Você me falou que carrega todos os pacotes no inicio do programa, isso
não sobrecarrega a memória?




----- Original Message ----- 
  From: Yahoo 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Tuesday, June 06, 2006 3:09 PM
  Subject: RES: [delphi-br] Qual melhor forma de trabalhar com pacotes?



  Ricardo;

  Boa tarde;

  Eu sempre carrego todos no inicio da aplicacao, e descarrego ao final.

  Teria como esplicar melhor o caso de quando faz alguma coisa em um
  acontece no outro????
  Em todo caso problema de uma coisa acontecer em outro form...(não sei
se
  entendi direito) não acontece comigo; Mas acredito que o problema
possa
  estar aqui; 

  "with TComponentClass(AClass).Create(Application) as TCustomForm Do
  Show"

  Voce tem alguma outra metodo para criar o form? Tente outro...."so pra
  alivio de consciencia".
  "Application.CreateForm( Classe, Form)"

  Eu tenho os metodos que dao um create nos form dentro do proprio bpl,
  bastando apenas uma chamada ao procedimento...e o form é criado, me
  retornando um ponteiro ao form onde a aplicação 'EXE' pode
manipula-lo.



  Atenc.
  Elazar


  -----Mensagem original-----
  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
  Em nome de Ricardo Lima Mariz
  Enviada em: terça-feira, 6 de junho de 2006 14:38
  Para: delphi-br@yahoogrupos.com.br
  Assunto: [delphi-br] Qual melhor forma de trabalhar com pacotes?



  Olá a todos! estou modularizando um novo sistema que estamos
  desenvolvendo, minha duvida e com relação a como trabalhar com os
pacoes
  carregar/descarregar, estou utilziando uma função para carregar e dar
um
  show no form.

  Faço dessa forma

    procedure TForm2.Segurana1Click(Sender: TObject);
    Var
      AClass    : TPersistentClass;
      intLoadOk : Integer;
    begin
       intLoadOk := LoadPackage(ExtractFilePath(Application.ExeName)+
  'Seguranca.bpl');
       If intLoadOk<>0 Then
       Begin
          AClass := GetClass('TfrmPerfilConfig');
          If AClass <> nil Then
            with TComponentClass(AClass).Create(Application) as
  TCustomForm Do
              Show
          Else
             ShowMessage('Classe não econtrada...');
       End;
    end;

    Ai vem as duvidas, em quem ponto devo descarregar o pacote da
memória?

    Outra coisa se eu abrir o mesmo formulária mais de uma vez, eles
ficam
  como se fossem o mesmo formulário e tudo que faço em um acontece no
  outro, ai eu fecho o primeiro quando vou fechar o segundo da acess
  violation por que ja foi fechando quando fechei o primeiro, alguem tem
  ideial do que pode ser isso?

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




              
  _______________________________________________________ 
  Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz. 
  http://mail.yahoo.com.br/ 
   

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

 


                
_______________________________________________________ 
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e 
anti-spam realmente eficaz. 
http://mail.yahoo.com.br/


-- 
<<<<< 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:
    [EMAIL PROTECTED]
 
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:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a