Accueil > Forum > > > > Modifier les octets d'un objet
Modifier les octets d'un objet
mardi 23 juin 2009 à 17:37:23 |
Modifier les octets d'un objet

Matware456
|
Salut, c'est encore moi ! ^^ Voilà maintenant que j'ai enfin réussi à stocker mon Bitmap dans un fichier mappé, je cherche maintenant à modifier les bytes de mon objet image pour pouvoir l'afficher, j'utilise ce code : CopyMemory(@image,MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,(320*240*3)+56),(320*240*3)+56);
Mais il ne fonctionne pas... Pourtant je crois que tout est en règle mais j'obtiens une EAccessViolation. =/ Merci d'avance pour votre aide ! Matware456
|
|
mardi 23 juin 2009 à 19:13:24 |
Re : Modifier les octets d'un objet

Guillemouze
|
Réponse acceptée !
c'est quoi ton "image"? un TImage, un TBitmap, un buffer (genre issu de ScanLine), ... ?
Je pense que ecrire directement un objet n'est pas terrible (voir impossible). Notament un TBitmap qui repose sur un handle, donc géré par Windows. En supposant que tu utilise un TBitmap, ce que je te conseille de faire, c'est de - sauver ton bitmap dans un TMemoryStream (TBitmap.SaveToStream(...)), -d'enregistrer ce stream dans ton fichier map pour l'ecriture, et l'inverse pour la lecture: - charger ton fichier map dans un stream - charger ton bitmap despuis ce stream (TBitmap.LoadFromStream(...)).
|
|
mardi 23 juin 2009 à 19:16:15 |
Re : Modifier les octets d'un objet

Matware456
|
Oui c'était un TImage, je vais essayer avec ta méthode ! Merci pour ton aide ! :)
|
|
mardi 23 juin 2009 à 20:44:44 |
Re : Modifier les octets d'un objet

Matware456
|
Çà fonctionne mais partiellement, je n'arrive pas à déplacer les octets du fichier mappé vers le TMemoryStream, mon CopyMemory : CopyMemory(mem.Memory,MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0),307254);
Ne marche pas, et ceci non plus : mem.Write(MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0)^,307254);
Et je n'arrive pas appeler la fonction SetPointer...
|
|
mardi 23 juin 2009 à 22:02:00 |
Re : Modifier les octets d'un objet

Guillemouze
|
Réponse acceptée !
essaye de voir si ca marche en passant par un buffer temporaire const MAP_SIZE = 307254; var buff: array[0..MAP_SIZE-1] of byte; m: pointer; begin m := MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); if m = nil then raise Exception.Create('pb obtention map');
CopyMemory(@buff[0], m); //apres ca tu peux evaluer buff pour voir si ce qu'il y a dedans semble correct mem.write(buff[0], MAP_SIZE); end;
|
|
mercredi 24 juin 2009 à 22:44:08 |
Re : Modifier les octets d'un objet

Matware456
|
Yeah, ça marche : Guillemouze, t'es un dieu ! =D
Par contre ya un truc qui m'échappe maintenant, le fichier mappé s'efface dès que je ferme l'application alors qu'il devrait rester en mémoire, ça marchait pourtant avant, et tout d'un coup, je me retrouve avec un GetLastError qui renvoie 2 (fichier introuvable), peux-tu, une dernière fois, m'aider à retrouver ce fichier mappé ?
Merci énormément pour ton aide, Matware456
|
|
jeudi 25 juin 2009 à 00:34:16 |
Re : Modifier les octets d'un objet

Guillemouze
|
" Guillemouze, t'es un dieu" En fait je suis juste son prophete. Le "patron" prefere rester anonyme  Alors la, bonne question. Il me semble que le fichier est detruit quand tu fais CloseMapHandle ou un truc du genre. Mais a mon avis, Windows tient une liste des applications qui on ce MapFile ouvert. Si il sont tous fermés, je pense qu'il detruit le MapFile. Sinon, tu risquerai de te retrouver avec un paquet de memoire perdue si les applications ne liberent pas la memoire (de la meme maniere que quand tu termine un exe, windows libere automatiquement la memoire allouée par celui-ci)
|
|
jeudi 25 juin 2009 à 10:29:17 |
Re : Modifier les octets d'un objet
|
jeudi 25 juin 2009 à 16:59:16 |
Re : Modifier les octets d'un objet

Matware456
|
Je ferme le Handle uniquement lorsque j'affiche mon fichier mappé, si je ne fais que stocker l'image dans le fichier puis fermer le processus et ensuite essayer de voir le fichier, ça ne marche pas...  Pourtant je ne passe pas par un CloseHandle, Delphi le fait-il automatiquement ?
|
|
vendredi 26 juin 2009 à 11:36:46 |
Re : Modifier les octets d'un objet
|
Cette discussion est classée dans : objet, image, modifier, octets, maintenant
Répondre à ce message
Sujets en rapport avec ce message
Coller une image dans un objet tdbimage [ par famjerom ]
J'ai créé une base de donnée SQL SERVER. Une table contient une image (type image ou varbinary) affichée à l'aide de l'objet VCL TDBImage de Delphi 20
Modifier taille bitmap [ par seba31stien ]
Bonjour, dans mon appli, je charge une carte au format bitmap dans un paintbox. Cependant, la procédure StretchDraw : Paintbox1.canvas.StretchDraw(
Afficher une image svg dans un objet fximage [ par ludo2223 ]
Bonjour,Je souhaite afficher une image au format SVG dans un composant fximage sous Delphi 7. Comment faut-il s'y prendre ?Existe-il un composant qui
Modifier la valeur d'un pixel dans une image au formta FITS [ par faymarcel ]
Bonjour à tous,But : application en Imagerie astronomiqueComment s'y prendre pour changer la (les) valeur(s) numérique de pixel(s) à l'adresse x,y, da
Ajouter des images à mon code puis les modifier [ par badyinfo ]
Bonjour à tous, Voilà, ce que j'aimerai faire : Pour des festivités(Noël, Nouvel An, Fête de travail, fêtes religieuses....etc) ou des avis des décès
déplacement d'une image dans un objet Timage [ par ninaleo ]
Bonsoir tout le monde J'ai un petit problème pour lequel je ne trouve pas de solution évidente et j'aimerais vous le soumettre. J'ai un objet T
modification d'image [ par 365tib ]
Bonjours,J'ai un petit probleme pour modifier une image pixel par pixel, quand j'execute le prog, on me renvoie "ne peut modifier une Image que si ell
Ouverture RTF avec objet ole [ par H60 ]
Bonjour, J'ai pu insérer une image, un objet avec un lien dans un rtf. (OLEobject) Mais je ne suis pas capable de ré-ouvrir, dans un RichEdit, le fi
quelques exemples de codes des boutons enregistrés, supprimer, modifier, chercher [ par bittyed ]
SVP j'ai besoin de votre aide je débute en Delphi, et g voudrais que quelqu'un m'aide à avoir des codes des boutons enregistrer, supprimer, modifier,
Aide insertion image Delphi 7 [ par yacinew ]
Bonjour, Je veux créer Interface simple dans Delphi 7,qui contient 2 boutons. et une zone qui me permet d'afficher des images une seul a la fois , Qua
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|