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

  FORUM HardWare.fr
  Programmation

  [Delphi] Cherche divers tips et débuggages

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] Cherche divers tips et débuggages

n°116252
Ciler
Posté le 22-03-2002 à 18:53:34  profilanswer
 

:hello: World
 
Etant relativement débutant en Delphi, je bloque sur les points suivants, et j'espère que vous pourrez m'aider :
 
//Questions pipeau pour se mettre en jambe
- J'ai vu sur les  compos du BUpack qu'il est possible de changer l'apparence des composants non visuels (comme TBUTrayIcon) avec autre chose que la bête icone rond carré triangle. Seulement, je ne trouve pas comment faire dans l'aide.
- Un PChar, ça s'initialise ?
 
//Plus dur (enfin je crois)
- Pourquoi mon appli faite sous 98 avec Delphi ne veut pas se lancer sous NT "La bibliothèque de liaison dynamique user32 est introuvable" alors que la dll est bien dans system32 ?
 
//Là, je sèche carrément :
J'ai une autre appli qui fait appel à une fonction d'une dll. Cette fonction reçoit en paramètre un pointeur vers une structure qu'elle est censée remplir. A partir de cette structure, mon appli crée un certain nombre de boutons sur la fiche à l'exécution.
Dans un menu, j'ai donc mis un code qui nettoie tous les boutons éventuellement existants et l'appel àla procédure de la dll puis la création des boutons. Et c'est là que le merdier commence !  
Si j'appelle le menu une fois tout est OK,
Si je rapelle le menu, il efface les anciens boutons et en crée des nouveaux (pas forcement le même nombre)
Là, si je re-rapelle le menu, une exception se produit dans la dll.
Le truc, c'est que si je supprime le code de nettoyage des boutons, tout marche impec autant de fois que je veut  :??:  
Pour info, mes boutons sont stockés dans  
MonTableaudeBoutons: array of TButton et pour les dégager je fais  
for i:= 0 to High(MonTableaudeBoutons) do
   MonTableaudeBoutons[i].Free;
SetLength(MonTableaudeBoutons,0)
 
Vous voyez ce qui peut poser problème ?


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
mood
Publicité
Posté le 22-03-2002 à 18:53:34  profilanswer
 

n°116261
Buitoni
Posté le 22-03-2002 à 19:12:48  profilanswer
 

Ciler a écrit a écrit :

:hello: World
- J'ai vu sur les  compos du BUpack qu'il est possible de changer l'apparence des composants non visuels (comme TBUTrayIcon) avec autre chose que la bête icone rond carré triangle. Seulement, je ne trouve pas comment faire dans l'aide.




 :heink:  
 [:cupra]  On parle de moi? :-D
Changer l'apparence d'un compo non visuel?
C'est comme si tu me disais que tu veux repeindre le ciel en rouge, c'est bien poétique mais ca n'a aucun sens.
 

Citation :


- Un PChar, ça s'initialise ?


En local tu dois toujours tout initialiser oui, si c'est une variable appartenant à une classe, tout est à 0 par défaut, mais faudrait peut être expliquer ce que tu veux faire
 

Citation :


- Pourquoi mon appli faite sous 98 avec Delphi ne veut pas se lancer sous NT "La bibliothèque de liaison dynamique user32 est introuvable" alors que la dll est bien dans system32 ?


Faut foutre les SP sur ton NT, sinon ca marchera jamais... Et même ton Windows 98 faut le tenir à jour sinon ton application Delphi tournera pas terrible.
 

Citation :


J'ai une autre appli qui fait appel à une fonction d'une dll. Cette fonction reçoit en paramètre un pointeur vers une  


Houla, ce fut long à lire ton truc ;-)
Utilise pas le high mais un TObjectList, c'est beaucoup plus simple, et surtout beaucoup plus sur ;-)
 
Tu rajoutes juste tes éléments de cette liste, et quand tu veux tout virer tu fais juste TObjectList.Clear, pas besoin de free ni quoi que ce soit, il fait tout comme un grand.
 
Reviens nous voir quand tu auras modifié ca ;-)
Sinon essaie de faire un trace pour voir ou ca plante, c'est pas fait pour les chiens un debugger, et c'est vachement utile  ;)


---------------
Vendredi c'est Buitoni
n°116272
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-03-2002 à 19:43:27  profilanswer
 

Buitoni a écrit a écrit :

 
 
Utilise pas le high mais un TObjectList, c'est beaucoup plus simple, et surtout beaucoup plus sur ;-)
 
Tu rajoutes juste tes éléments de cette liste, et quand tu veux tout virer tu fais juste TObjectList.Clear, pas besoin de free ni quoi que ce soit, il fait tout comme un grand.




 
:ouch: T'aurais pu me le dire plus tôt que ça existait, moi j'utilisais des TList et je m'amusait à faire les Free etc... :/

n°116322
Buitoni
Posté le 22-03-2002 à 21:01:01  profilanswer
 

C'est sympa ce truc ;-)
 
Y en a d'autres dans le genre, faut zieuter dans l'unité


---------------
Vendredi c'est Buitoni
n°116562
Ciler
Posté le 23-03-2002 à 17:39:13  profilanswer
 

Buitoni a écrit a écrit :

 
En local tu dois toujours tout initialiser oui, si c'est une variable appartenant à une classe, tout est à 0 par défaut, mais faudrait peut être expliquer ce que tu veux faire
 
Faut foutre les SP sur ton NT, sinon ca marchera jamais... Et même ton Windows 98 faut le tenir à jour sinon ton application Delphi tournera pas terrible.
 
Houla, ce fut long à lire ton truc ;-)
Utilise pas le high mais un TObjectList, c'est beaucoup plus simple, et surtout beaucoup plus sur ;-)
 
Tu rajoutes juste tes éléments de cette liste, et quand tu veux tout virer tu fais juste TObjectList.Clear, pas besoin de free ni quoi que ce soit, il fait tout comme un grand.
 
Reviens nous voir quand tu auras modifié ca ;-)
Sinon essaie de faire un trace pour voir ou ca plante, c'est pas fait pour les chiens un debugger, et c'est vachement utile  ;)  




 
Pour le PChar, rien de spécial en fait, je les ai utilisés sans les intialiser jusqu'au jour ou je me suis rendu compte que c'étatit des pointeurs, et qu'il vallait mieux les initialiser donc.
 
SP = Servide Pack ? oula, galère, je suis pas admin sous NT moi ...
 
On va essayer le TObjectList !
Sinon pour le debugger et le pas à pas, merci, je les ai utilisés ! Si je fais un pas à pas, le problème se situe dans la dll avec "valeur inconnue du fait des optimisations du compilateur" mais je rapelle que la dll est OK puisque sans mon pb de supression des boutons, la foncyion marche comme il faut  :heink:  
 
Merci pour l'aide  :jap:


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°116568
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-03-2002 à 17:52:33  profilanswer
 

Ciler a écrit a écrit :

"valeur inconnue du fait des optimisations du compilateur"




 
Si jamais tu veux désactiver ces optimisations (qui en cas de debug sont parfois génantes) c'est dans les options du projet, il y a une case "Optimizations".


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117042
Ciler
Posté le 25-03-2002 à 08:20:17  profilanswer
 

antp a écrit a écrit :

 
 
Si jamais tu veux désactiver ces optimisations (qui en cas de debug sont parfois génantes) c'est dans les options du projet, il y a une case "Optimizations".  




 
J'avais vu oui !
 
Mais comme je l'ai dit plus haut, les optimisations ne sont pas en cause car :
1 - même bug si je les désactive
2 - pas de bug si je n'essaie pas d'éliminer ces boutons:gun:


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°117066
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-03-2002 à 09:37:52  profilanswer
 

Ce sont des boutons que tu as insérés sur la Form ?
Si oui, il faut savoir que lorsque la Form se libère, elle libère tous ses composants !
Et si on libère deux fois la même zone mémoire... ça crashe ;)
Essaie de mettre
Form1.RemoveControl(MonTableaudeBoutons[i]);
MonTableaudeBoutons[i].Free;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117083
Ciler
Posté le 25-03-2002 à 10:30:40  profilanswer
 

antp a écrit a écrit :

 
Form1.RemoveControl(MonTableaudeBoutons[i]);
MonTableaudeBoutons[i].Free;  




 
Les deux ? Je pensais queseuk le 2e était nécessaire...


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°117089
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-03-2002 à 10:41:57  profilanswer
 

Le 1er enlève le bouton de la Form
Le 2e libère la mémoire en détruisant le bouton
 
Si tu ne fais que libérer la mémoire (juste le 2e), le bouton "appartient" encore à la Form. Vu que la Form a la liste des composants qui lui appartiennent, à sa destruction elle détruit chacun des composants.
 
Quand tu insères le bouton dans la Form, tu fais un InsertControl, je suppose ?
 
À confirmer, mais j'ai déjà remarqué ça plusieurs fois, donc je pense que je n'ai pas dit trop de bêtises :D

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 25-03-2002 à 10:41:57  profilanswer
 

n°117506
Ciler
Posté le 26-03-2002 à 07:56:09  profilanswer
 

:ouch:  
Non, je fais pas insertControl
Je fais  
xxx = TMyButton.Create;
xxx.Parent := Form1;
 
Bon, ben je vais essayer...
 
@Buitoni :  :( TObjectList pose un problème, je n'arrive pas àaccéder aux propriétés de chaque contrôle, ce qui m'est nécessaire...


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°117531
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-03-2002 à 09:34:26  profilanswer
 

".Parent := " je crois que ça fait exactement pareil que le InsertControl, donc tu dois faire le RemoveControl (ou peut-être mettre le parent à nil ?)
 
Pour la TObjectList:
 
TButton(MaListe.Item[0]).Caption := ....


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117538
Ciler
Posté le 26-03-2002 à 09:51:47  profilanswer
 

antp a écrit a écrit :

 
Pour la TObjectList:
 
TButton(MaListe.Item[0]).Caption := ....  




 
 :jap: Joli ça  :jap:


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°117595
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-03-2002 à 11:06:45  profilanswer
 

mieux si on doit y accéder plusieurs fois dans la même procédure :
with TButton(MaListe.Item[0]) do
begin
  Caption := ...;
  Left := ...;
end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°117618
Ciler
Posté le 26-03-2002 à 11:42:09  profilanswer
 

antp a écrit a écrit :

mieux si on doit y accéder plusieurs fois dans la même procédure :
with TButton(MaListe.Item[0]) do
begin
  Caption := ...;
  Left := ...;
end;  




 
spa con  :)


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8

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

  [Delphi] Cherche divers tips et débuggages

 

Sujets relatifs
Reception de données avec des headers ! (Delphi)Réseau, réception de données (Delphi) !
[Delphi] Cette fonction existe t elle?[Delphi 5 & C++Builder] comment accéder au port série et parallèle?
[Delphi] question stupide[DELPHI] Une liste de bon sites pour Delphi (last update 20/01/2003)
Je cherche un driver ODBC windev[JAVA] Je cherche la librairie javax.media dans JBuilder 6.0
[DELPHI-ADO] Compacter une base Access[ActionScript] Je cherche un tutorial
Plus de sujets relatifs à : [Delphi] Cherche divers tips et débuggages


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