Bonjour à tous je suis toujours sur mon Active X, celui-ci se termine par contre je viens de me rendre compte qu'au bout d'un moment, j'ai regardé la taille mémoire utilisé et celle ci grossit, mais je ne sais d'ou cela peut provenir.
J'ai 2 tableaux de [128]*[128] que je remplis toutes les secondes de nouvelles valeurs est ce que cela pourrait venir de ceci. Voici le code pour l'initialisation des tableaux au démarrage
Mais j'utilise aussi des appels de DLL pour aller chercher les valeurs d'une autre systeme pour remplir mes tableaux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Setlength(Tab,Nbreligne+1,NbrePoint+1); // Initialisation du tableau de travail Setlength(TabTemp,Nbreligne+1,NbrePoint+1); // Initialisation du tableau de stockage Initialize();
le code d'initialisation des fontions DLLs
Le code suivant est le code réalisé dans mon timer 1s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function DDAQ_DEVICE_DO_UPDATEDATA(nDevNo:LongWord):LongWord;stdcall;external 'DIASDAQ'; function DDAQ_DEVICE_GET_NEWDATAREADY(nDevNo:integer;pBool:Pointer):LongWord;stdcall;external 'DIASDAQ'; function DDAQ_IRDX_PIXEL_GET_DATA_POINT(hIRDX:THandle;x:Word;y:Word;pdata:pointer):LongWord;stdcall;external 'DIASDAQ';
et après avoir rempli mon tableau, je le recopie dans 2 éme pour pouvoir travailler avec, puis je dessine un histogramme via un canvas, que je libere evidement aprs chaque dessin par la fonction free.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 pOk:=@Ok;//pointeur DDAQ_DEVICE_GET_NEWDATAREADY(nDevNo,pOk); // on vérifie si une donnée est prête DDAQ_DEVICE_DO_UPDATEDATA(nDevNo); //on met a jour la donnée Data:=1.000; pData:=@Data; for i:=0 to NbreLigne-1 do begin for j:=0 to NbrePoint-1 do begin DDAQ_IRDX_PIXEL_GET_DATA_POINT(handleIRDX,j+1,i+1,pData); dataValue:=pData^; tab[i,j]:=dataValue; end; end;
merci pour votre aide
Partager