Accès directe à la mémoire [Résolu]

Signaler
Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Bonjour,

Est-il possible d'avoir un accès directe à la mémoire d'un Tbitmap, comme on pouvait le faire en turbo pascal :

mem[adressesegment:adresse offset]
où mem[$A000:$0000] donnait accès à la mémoire de la carte vidéo.

4 réponses

Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013

Pour aceder au bitmap utilise Tbitmap.scanline.

Bon Coding ....

ManChesTer.
Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013

à la place de mem et memw , en delphi 32, on utiliseras un pointeur, pour lire ecrire une astuce consiste a utiliser TmemoryStream:

var Ms : TmemoryStream;
Buff : Pointer;
begin
Ms:=TmemoryStream.Create;
Ms.Memory:=@LObjectQueTuVeux; // Ms.Memory:=Bmp.Scanline[Bmp.Height] (Pour un Bitmap)
Getmem(Buff,1024); // Reserver 1024 octets pour le buffer
Ms.Read(Buff,1024); // Lire 1024 Octets depuis l'object vers le buffer
Ms.Write(Buff,1024); // Ecrire dans l'object
FreeMem(Buff); // Liberer le buffer
Ms.Free; // liberer le memorystream
end;

Bon Coding ....

ManChesTer.
Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006

Bonjour,

Merci pour l'info, je connaissais l'existence de scanline via ce forum mais je ne l'ai pas encore testé. Vu qu'il utilise un pointer, je suppose que son exécution est rapide.

Mais j'ai mis tbitmap comme exemple, je pensais à un accès en général, pour une image mais aussi un wave par exemple. Juste pour ne pas toujours se reposer sur delphi.
Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006

Ok, ca ressemble plus à de la prog.

Merci