Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1186 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Instanciation d objets OLE ca ne marche que dans l unite principale ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Instanciation d objets OLE ca ne marche que dans l unite principale ?

n°509510
KrzAramis
Help Me
Posté le 07-09-2003 à 10:54:27  profilanswer
 

Bonjour à tous,
 
Comme me l ont recommande moulte fois antp et zion je suis en train de reorganiser mon programme pour que il y est le moins de traitements possible dans l unité de ma form. Je réecris donc ces traitement (ici génération de fichiers) dans une autre unité que j appele de la manière suivante:

Code :
  1. var s : string; //return path to the file
  2. begin
  3.   s := MonObjet.CetteFonction
  4. end;


Lorsque j utilisais la serie d'instructions qui me donnait le fichier ces instructions possèdaient la ligne suivante:

Code :
  1. XMLFile1 := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;
  2.   //etc.


 
et ca marche impeccable. Or je refais cette serie d instructions dans une autre unité donc et la ca plante méchant à la ligne ci dessus. Avant que vous me le fassiez remarqué, oui j ai ajouté ComObj à mes uses.
 
Le projet compile mais lors de l erreur delphi pointe sur cette ligne (c est la premiere de la fonction). et le message d erreur est le suisvant:
"Access Violation at address 004066FB etc.."
 
bon c est quoi mon erreur ? car si je pouvais faire marcher ce truc je vais pouvoir economiser pas mal de lignes alors HELP!
 
Merci  
 
@++


Message édité par KrzAramis le 07-09-2003 à 10:55:18
mood
Publicité
Posté le 07-09-2003 à 10:54:27  profilanswer
 

n°509514
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 11:08:36  profilanswer
 

il plante sur le create ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509518
KrzAramis
Help Me
Posté le 07-09-2003 à 11:17:59  profilanswer
 

Apparemment oui !
puisque c est la premier ligne ...
 
C est quoi docteur ?
 
@++

n°509522
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 11:23:11  profilanswer
 

aucune idée :/
c'est bien sur le create et pas sur l'appel de fonction de ton objet ?


Message édité par antp le 07-09-2003 à 11:23:32

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509525
KrzAramis
Help Me
Posté le 07-09-2003 à 11:31:10  profilanswer
 

ah bon?
ben ce que je fais c est que j ecris la fonction avec tous les parametres puis je copie / colle dans mon unit principale et j ajuste les parametres.
je fais passer qq Array of String mais il n y pas de taille definie ? j ai bien essayer de le coder dans la definition de la fonction mais il ne veut pas :/
 
 
@++

n°509526
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 11:32:07  profilanswer
 

:??: je pige pas ce que tu me dis là, c'est quoi le rapport avec ma question ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509529
KrzAramis
Help Me
Posté le 07-09-2003 à 11:43:27  profilanswer
 

ben je suis quasiment sur que c est pas sur l appel de la fonction car le nombre de parametres est correct. deplus j ai ecrit une autre procedure dans mon objet et ca marche bien.
Deplus quand je fais du pas a pas l erreur se declanche sur cette ligne.
J espere avoir ete plus clair. Sinon comment verifier que c est pas l appel qui foire ?
 
@+

n°509531
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 11:48:01  profilanswer
 

Si c'était un problème de param ça compilerait pas :o
Je parlais de, pas exemple, "mon objet" qui serait nil ou avec une valeur bidon (genre on a fait un free)
 
bah si en pas à pas tu arrives à rentrer dans la fonction ça devrait être bon... à moins que ce XMLFile1 soit un attribut de l'objet dans lequel tu es, et que justement cet objet pointe vers n'importe quoi...
si tu fais juste le CreateOle sans l'assigner, ça plante pareil ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509535
KrzAramis
Help Me
Posté le 07-09-2003 à 11:55:45  profilanswer
 

ben j ai vire le XMLFile1 et le "as ..." et ca marche. Enfin pour cette ligne! car forcement j ai besoin de XMLFile1 dans la suite de mon programme forcement comme c est pas assigné ca plante.
une fois que j ai fait CreateObject je peux le recuperer qq part pour pouvoir m en servir ??
 
@++

n°509541
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 12:35:12  profilanswer
 

donc ça veut dire que XMLFile1 n'est pas valide... c'est quoi ? un attribut d'un objet ? Ça veut dire que l'objet n'a pas été créé


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 07-09-2003 à 12:35:12  profilanswer
 

n°509560
KrzAramis
Help Me
Posté le 07-09-2003 à 13:41:58  profilanswer
 

Non c est une variable declarer dans ma section public et qui est de type IXMLDOMDocument (uniquement possible si la librairie MSXML_TLB est presente dans les uses). Par rapport a l unite principale je n ai rien change si ce n est que c est dans une autre unit.
 
@++

n°509564
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 14:03:27  profilanswer
 

krzAramis a écrit :

Non c est une variable declarer dans ma section public  


 
donc un attribut d'un objet :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509601
KrzAramis
Help Me
Posté le 07-09-2003 à 15:39:48  profilanswer
 

soit c est un attribut d objet. Donc qu est ce je fais ?
je fais un "MonObjet.Create" que je demarre mon prog ?
 
@++

n°509605
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 16:00:10  profilanswer
 

Il faut bien un Create quelque part hein [:mlc] Ou alors tu dois faire des "class procedure" et "class function", mais dans ton cas ça ne changera rien vu que tu as besoin des attributs de l'objet.


Message édité par antp le 07-09-2003 à 16:00:45

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509607
KrzAramis
Help Me
Posté le 07-09-2003 à 16:03:37  profilanswer
 

Ben heu c est a dire que pour lemoment mon objet n avait pas d attributs et une seul procedure et jai pas de create ! et ca marche tres bien... si seulement j avais su... deplus maintenant il me demande de faire un constructeur... je sais pas comment on fait...
 
@++

n°509610
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 16:15:29  profilanswer
 

heu t'as pas spécialement besoin de constructeur... enfin, ça dépend, tu la déclares comment ta classe ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°509614
KrzAramis
Help Me
Posté le 07-09-2003 à 16:22:25  profilanswer
 

Un extrait de code ca te va ?

Code :
  1. unit UMyObj;
  2. interface
  3. uses UMainfrm, MSXML_TLB,
  4.      //Delphi
  5.      Classes, OleCtrls, ComObj;
  6. type TMyObj = class(TObject)
  7.   public
  8.   {public declaration}
  9.   {public variables }
  10.   //Vaiable to generate XML on the fly
  11.   XMLFile1, XMLFile2          : IXMLDOMDocument;
  12.   root, child, child1, child2 : IXMLDomElement;
  13.   {public procedures and functions}
  14.   procedure UpDate            ( NameOfSource : string);
  15.   function  Produce           ( param1:  integer): string;
  16. end;//type


 
voila.
 
Avant l apparition de ma fonction la procedure etait appelée de la facon la plus classique MyObj.Update('toto');
et il n y avait pas d attribut ;)
 
@++

n°509688
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-09-2003 à 19:41:38  profilanswer
 

faut bien un MyObj := TMyObj.Create; quelque part, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°510157
KrzAramis
Help Me
Posté le 08-09-2003 à 14:03:26  profilanswer
 

ben quand je le fais ca plante mechant.
 
 
@++

n°510163
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-09-2003 à 14:31:18  profilanswer
 

:heink: "ça plante" = ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°510171
KrzAramis
Help Me
Posté le 08-09-2003 à 15:10:16  profilanswer
 

ca me fait un access violation
 :(

n°510187
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-09-2003 à 15:50:43  profilanswer
 

Tu fais quoi exactement [:mlc]?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Instanciation d objets OLE ca ne marche que dans l unite principale ?

 

Sujets relatifs
onmouseover qui marche pas tout le temps [RESOLU]bbcode ca marche pas
[Résolu] Collection d'objets vide...Ce site ne marche sous Camino 0.7
Convertisseur(s) de formats: comment ça marche ?Include chemin absolu marche plus depuis réinstall
[PHP] - traitement d'un fichier XML [marche presque] cry[Javascript easy] J'arrive pas a trouver pkoi ca marche pas....
script qui marche en local mais pas sur le netun code qui marche sous ie5.5 mais pas sous ie6
Plus de sujets relatifs à : Instanciation d objets OLE ca ne marche que dans l unite principale ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR