2010-08-06 4 views
0

J'ai un objet Com, configurer/créer/travailler à partir d'un DataModule.Erreur d'application Delphi avec Ole dans une DLL

La création/l'exécution/la libération du module de données à partir d'une application ne pose aucun problème.

mais en mettant le module de données dans une DLL fonctionne bien la première fois, en exécutant l'objet com etc. mais après quelques appels sans redémarrer l'application, cette erreur apparaît.

Error Message image http://darkaxi0m.name/so/errormessage.GIF

Il y a un peu de prix de code dans l'application, donc je ne peux pas poster tout, j'ai essayé MadExcept dans l'application et dll, sans chance. Les pauses IDE à un point qui ne semble pas beaucoup d'aide ...

alt text http://darkaxi0m.name/so/cpubreak.gif

c'est le code qui gère la DataModule, la même fonction est utilisée dans l'application et la dll dans les deux tests

function GetAmount(Amount : integer; var Info: PChar): integer; stdcall; 
var 
    tempInfo: string; 
    workerDM : TworkerDM; 
begin 
    Result := 0;  
    workerDM := TworkerDM.Create(nil); 
    try  
     tempInfo:= Info; 
     Result := workerDM.GetAmount(Amount, tempInfo); 
     StrPCopy(Info, tempInfo); 
    finally 
     workerDM.Free; 
    end; 
end; 

je voudrais blâmer l'objet Ole, mais il fonctionne très bien de la dll

Je suis à une perte de penser même où commencer à chercher.

Répondre

0

Je ne crois pas que cette question puisse recevoir de réponse. Le projet a été rogné et l'objet qui génère l'erreur n'est plus utilisé.

Mes Supprimer Les demandes sont restées sans réponse.

Donc c'est maintenant ma réponse.

1

Dans le finally, vous appelez Free, mais vous devez appeler workerDM.Free.

+0

désolé qui a été victime de copier/coller et de formatage pour stackoverflow –

+0

@Christopher: pas de problème; Je suis tombé sur beaucoup de code réel qui était mauvais de cette façon, causant très difficile de trouver des bugs. Sympa que ton code n'en souffre pas. –

Questions connexes