
Optimiseur de RAM
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
c'est ce que je voulais faire Flype 
bon, tu veux faire un dégradé entre 2 couleurs, facile.
pour chacune des composante, il faut faire ceci :
Rouge_Final = (Rouge_Couleur1 * Degradé + Rouge_Couleur2 * (100 - Degradé)) / 100
en clair, Dégradé varie de 0 (0%) à 100 (100%) et représente le pourcentage de couleur 1.
ça donne ça sous forme de code :
comme tu le vois, c'est super simple, juste une histoire de pourcentage (pour le rapport couleur1 couleur 2) et de moyenne (pour faire le mélange de couleur) 

bon, tu veux faire un dégradé entre 2 couleurs, facile.
pour chacune des composante, il faut faire ceci :
Rouge_Final = (Rouge_Couleur1 * Degradé + Rouge_Couleur2 * (100 - Degradé)) / 100
en clair, Dégradé varie de 0 (0%) à 100 (100%) et représente le pourcentage de couleur 1.
ça donne ça sous forme de code :
Code : Tout sélectionner
OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Dégradé de couleur")
CreateGadgetList(WindowID())
; On choisi les couleurs du dégradé
Couleur1 = RGB(24, 184, 24)
couleur2 = RGB(255, 155, 0)
#MaxDegrade = 199
CreateImage(0, 200, 200)
StartDrawing(ImageOutput())
For n = 0 To #MaxDegrade
; On calcule la couleur du dégradé de valeur n
; n varie de 0 à #MaxDegrade et correspond au niveau du dégradé
; si n = 0, on a 0% de Couleur1 et 100% de couleur 2
; si n = #MaxDegrade, on a 100% de Couleur1 et 0% de couleur 2
Rouge = (Red(Couleur1) * n + Red(couleur2) * (#MaxDegrade - n)) / #MaxDegrade
Vert = (Green(Couleur1) * n + Green(couleur2) * (#MaxDegrade - n)) / #MaxDegrade
Bleu = (Blue(Couleur1) * n + Blue(couleur2) * (#MaxDegrade - n)) / #MaxDegrade
; On dessine la ligne
Line(0, n, 200, 0, RGB(Rouge, Vert, Bleu))
Next
StopDrawing()
ImageGadget(0, 0, 0, 0, 0, UseImage(0))
Repeat
Event = WaitWindowEvent()
Until Event = #WM_CLOSE

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Bonjour tout le monde,
En fait aucun des deux programmes ne marchent avec mon bon vieu Windows 98. Le premier me fait un "opération non conforme", et le deuxième me dit qu'il est lié à une exportation manquante... voilà et sinon le code du Soldat inconu marche sauf quand je lui demande defragmenter il me mait dans le debuger Specified address is nul.
Pk?
En fait aucun des deux programmes ne marchent avec mon bon vieu Windows 98. Le premier me fait un "opération non conforme", et le deuxième me dit qu'il est lié à une exportation manquante... voilà et sinon le code du Soldat inconu marche sauf quand je lui demande defragmenter il me mait dans le debuger Specified address is nul.
Pk?
J'ai testé ton prog pour libérer la mémoire sur XP.
Ca marche, mais j'ai l'impression que ça libère trop de mémoire. (Je peux me tromper!)
Après l'utilisation, j'ai du mal à bouger les fenêtres qui étaient ouvertes, ou à lancer les progs comme l'explorateur, le gestionnaire de tâches, etc...
Tu devrais peut-être limiter l'optimisation à une certaine quantité de mémoire, en fonction de la mémoire totale. C'est ce que font tous les autres logiciels de ce type, il y a certainement une bonne raison
Sinon, bravo, ça marche bien.
Ca marche, mais j'ai l'impression que ça libère trop de mémoire. (Je peux me tromper!)
Après l'utilisation, j'ai du mal à bouger les fenêtres qui étaient ouvertes, ou à lancer les progs comme l'explorateur, le gestionnaire de tâches, etc...
Tu devrais peut-être limiter l'optimisation à une certaine quantité de mémoire, en fonction de la mémoire totale. C'est ce que font tous les autres logiciels de ce type, il y a certainement une bonne raison

Sinon, bravo, ça marche bien.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re,
Si je me souvien bien, c'est la ligne 22 ou il me dit un truc comme Destination memory pointer is nul.
C'est quand même assez rageant... depuis le temps que je cherchait comment défragmenter la ram, j'étais dans le bon principe... et j'avais jamais réussi c pour ça que je veux le voir marcher avec moi
bravo... dès qu'il marchera 
Si je me souvien bien, c'est la ligne 22 ou il me dit un truc comme Destination memory pointer is nul.
C'est quand même assez rageant... depuis le temps que je cherchait comment défragmenter la ram, j'étais dans le bon principe... et j'avais jamais réussi c pour ça que je veux le voir marcher avec moi


Dernière modification par gansta93 le sam. 04/sept./2004 14:47, modifié 1 fois.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
c'est le copymemory qui plante ?
pas normal, essai en mettant des * mais je pense pas que ce soit ça
sinon regarde au niveau des allocatememory si il marche bien avec un coup de debug, il parvient peut-être pas à crée la zone mémoire ?
pas normal, essai en mettant des * mais je pense pas que ce soit ça
Code : Tout sélectionner
Procedure Optimisation(Total.l)
#TailleMem = 16 * 1024 * 1024 ; 16 Mb
NewList Memoire.l()
; On crée un échantillon destinée à remplir la mémoire
*MemOrigine = AllocateMemory(#TailleMem)
For n = 0 To Total / 16 ; On rempli la mémoire avec des connerires
AddElement(Memoire())
*Memoire() = AllocateMemory(#TailleMem)
CopyMemory(*MemOrigine, *Memoire(), #TailleMem) ; On utilise la mémoire sinon, ça ne marche pas
Next
; On supprime les blocs mémoire
ResetList(Memoire())
While NextElement(Memoire())
FreeMemory(*Memoire())
Wend
FreeMemory(*MemOrigine)
ClearList(Memoire())
SetGadgetText(#Etat, "")
DisableGadget(#Optimiser, 0)
EndProcedure
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Oui c'est ça... il ne veut pas créer la zone mémoire Memoire() (j'ai vu ça avec debug) en vérifiant si Memoire() existait bienLe Soldat Inconnu a écrit :sinon regarde au niveau des allocatememory si il marche bien avec un coup de debug, il parvient peut-être pas à crée la zone mémoire ?
Code : Tout sélectionner
If Memoire()
; la procedure de copie
Else
Debug "Problème lors de la création de la zone mémoire."
Break ; Pour quitter la boucle... jj'suis pas sure de mon truc là
EndIf

Si tu a une solution je la prand tout dessuite... parce que le programme une fois compilé fait une erreur je sais plus trop quoi dans MSVCRT.dll je croi.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :