Bonjour,
Pour scroller un tres grand document (partition musicale), je le decoupe en bandes d'images (portées) que je dessine à la demande en fonction de la position du scrolling et que je colle sur l'ecran via un CopyRect, puis je les conserve en cache pour que le scrolling soit plus fluide ensuite (plus de dessin à faire, uniquement le CopyRect).
Si vous avez suivi jusque la, lisez la suite
Cela peut consommer pas mal de memoire sur des tres grands documents, et il arrive que j'ai une exception EOutOfResources.
Ce que je ne comprends pas, c'est que cela arrive avant que la RAM soit pleine. Par ex. j'ai 2Go de RAM et ca plante autour de 900Mo. Je ne sais donc pas trop quelle "memoire" est saturée, et donc comment prévenir cela en limitant mon cache perso.
Pour le moment j'attends que l'exception se produise, et a ce moment je vide entierement le cache, pas top top... la memoire fait les montagnes russes.
Pour info l'exception se produit sur une commande Bmp.Width := XXX, que j'appelle juste apres la creation du bitmap via Bmp := Graphics.TBitmap.Create.
Partager