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
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
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
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
Déplacement d'un objet dans un TPageControl [ par retaks666 ]
Bonjour, j'ai développé une form, y ai ajouté des composants, boutons, textbox etc, et j'aimerai implémenter un système de pagecontrol. Comment puis-j
Pb Dessin sur Image [ par Jean_Jean ]
Bonsoir, J'ai l'impression que je ne place pas le code où il faut. L'évènement o
gestion des photos dans une base de donnée [ par kadje84 ]
Je suis débutant en delphi et j'ai conçu une base de donnée sous paradox dont un des champs est de type graphic et doit contenir des photos.j'aimerai
Redimensionner un composant du haut vers le bas [ par mecsympa ]
Pour un programme, j'ai besoin de redimensionner une image. Mais si j'utilise height (ou width) l'image se reduit du bas vers le haut. Je voudrais fai
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SAVEDIALOGRE : SAVEDIALOG par JulioDelphi
Cliquez pour lire la suite par JulioDelphi RE : SAVEDIALOGRE : SAVEDIALOG par zeydounnounou
Cliquez pour lire la suite par zeydounnounou
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|