Optimiseur de RAM

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

@pierre :wink:
Image
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

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 :

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
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) :D
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)]
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

merci regis, je regarderais plus en detail au retour d'espagne...
Image
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Tu t'es connecté en espagne ??? c'est pas des vacances :lol:
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)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

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?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

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 :wink:

Sinon, bravo, ça marche bien.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

gansta93 > aucune idée, quelle ligne du code qui plante ?
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)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

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 ;-)
Dernière modification par gansta93 le sam. 04/sept./2004 14:47, modifié 1 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

c'est le copymemory qui plante ?
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 
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 ?
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)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Le 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 ?
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 bien

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
Et oui c ça d'avoir un vieux système :-). domage que ça ne marche pas.
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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

non pas de solution, je vais demandé à Denis de tester sur 98 pour voir ;)
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)]
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

OK. Peut-être qu'encore une foie, mon PC ne fait rien comme les autres :-)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

merci regis pour ta réponse concernant le dégradé c exactement c que je voulais... je vais m'en servir tout de suite pour le soft de defrag...
toujours pas de solution pour win98 ?
Image
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Oui c'est vrai ça... j'avais presque oublié... :-).
Vous pensez que ça serait possible un défragmenteur de cerveau en PureBasic? c'est pas pour moi (on peut plus rien faire de toute façon :-)).
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

pour 98, j'ai demandé à denis de tester mais il a pas trop le temps en ce moment (mais ça doit marcher, y'a pas de raison)
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)]
Répondre