Accueil > Forum > > > > Msg d'erreur lors de l'utilisation d'Initialize ...
Msg d'erreur lors de l'utilisation d'Initialize ...
lundi 23 octobre 2006 à 18:22:55 |
Msg d'erreur lors de l'utilisation d'Initialize ...

cerber943
|
Bonjour, Voici le code qui pose problème : type TZonesCar = array[0..15] of TBitmap;
procedure TAnalysCar.calculStats(car : TBitmap); var zones : TZonesCar; lignes,colonnes: array of Integer; x,y,i,nbLignes,nbCols,nbPix,nbNoir,nbCNoir,nbLNoir : Integer; begin zones:=DecoupeCar(car); nbLignes:=zones[1].height; nbCols:=zones[1].width; nbPix:=nbLignes*nbCols; // on dimensionne nos tableaux : SetLength(lignes,nbLignes); SetLength(colonnes,nbCols); // on initialise nos tableau pour qu'ils soit à 0 partour Initialize(lignes); <=== Lorsque cette ligne est commentée aucun PB Initialize(colonnes); <=== Lorsque cette ligne est commentée aucun PB for i:=low(zones) to high(zones) do begin // Traitement pour chaque zone nbNoir:=0; nbCNoir:=0; nbLNoir:=0; // for x:=0 to nbLignes-1 do lignes[x]:=0; <== Non commenté lorsque commenté au dessus // for x:=0 to nbCols-1 do colonnes[x]:=0; <== Non commenté lorsque commenté au dessus for y:=0 to nbLignes-1 do for x:=0 to nbCols-1 do // $00000000 = noir et $00FFFFFF = blanc if zones[i].Canvas.Pixels[x,y]=$00000000 then begin Inc(nbNoir); Inc(lignes[y]); Inc(colonnes[x]); end; // Ici on doit avoir le nb de pix noir sur l'image(nbNoir) // lignes[] contient le nombre de pixels sur chaque ligne // colonnes[] contient le nombre de pixels sur chaque colonne for x:=0 to nbLignes-1 do if lignes[x]>0 then Inc(nbLNoir);
for x:=0 to nbCols-1 do if colonnes[x]>0 then Inc(nbCNoir);
Stats.Stats[i].id:=i; Stats.Stats[i].nbCNoir:=nbCNoir/nbCols; Stats.Stats[i].nbLNoir:=nbLNoir/nbLignes; Stats.Stats[i].nbNoir:=nbNoir/nbPix;
end; // A la fin on désalloue notre tableau (delphi le fait tout seul normalement mais bon) libereZones(zones); Finalize(lignes); Finalize(colonnes); end;
Lorsque je commente les 2 lignes au début du code (Initialize(...)) et que je décommente mes 2 boucles FOR 4 lignes plus bas (voir flèches sur la droite), le programme s'exécute correctement. J'ai lu dans des tutoriels de tableaux dynamiques qu'il fallait utiliser Initialize pour mettre à 0 toutes les valeures de mon tableau mais lorsque je l'utilise dans cette fonction, dès que je veux modifier le contenu de mon tableau (colonnes[] ou lignes[]) par exemple en incrémentant colonnes[x], j'obtiens le message : EAccessViolation avec le message 'Violation d'accès à l'adresse 00453184 dans le module ......... Ecriture de l'adresse 00000000'.Sauriez-vous quelle est la cause de ce problème ? et éventuellement si vous ne voyez pas d'autres problèmes car cette fonction fonctionne correctement sans l'utilisation d'Initialize, je cherche à la modifier car mon prog une fois lancé grossit en mémoire régulièrement. Merci d'avance pour votre aide
|
|
lundi 23 octobre 2006 à 18:37:26 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...
|
lundi 23 octobre 2006 à 18:42:03 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...

cerber943
|
Ca me donne le meme message d'erreur ... (biensur j'ai commenté les initialize)
|
|
lundi 23 octobre 2006 à 18:45:40 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...
|
lundi 23 octobre 2006 à 18:57:32 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...
|
lundi 23 octobre 2006 à 21:55:27 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...

f0xi
|
Réponse acceptée !
voila ta version corrigée, mais le resultat final semble erroné, dus a la non remise a zero des tableaux : type pPixelLine = ^TPixelLine; TPixelLine = array[0..4096] of integer;
TZonesCar = array[0..15] of TBitmap; pDynIntArray = ^TDynIntArray; TDynIntArray = array of integer;
procedure RazDynArray(const pArray : pDynIntArray; const Value : integer); var i : integer; begin for i := 0 to high(pArray^) do pArray^[i] := AValue; end;
procedure InitDynArray(const pArray : pDynIntArray; const ALength : integer;const AValue : integer); begin SetLength(pArray^,ALength); RazDynArray(pArray,AValue); end;
procedure calculStats(car : TBitmap); var zones : TZonesCar; lines, cols : TDynIntArray; pPL : pPixelLine; x, y, i, nbLines, nbCols, nbPix, nbBk, nbCBk, nbLBk : Integer; begin zones := DecoupeCar(car); nbLines := zones[1].height; nbCols := zones[1].width; nbPix := nbLines*nbCols;
InitDynArray(@Lines, nbLines, 0); InitDynArray(@cols, nbCols, 0);
for i := low(zones) to high(zones) do begin nbBk := 0; nbCBk := 0; nbLBk := 0;
RazDynArray(@Lines,0); RazDynArray(@Cols,0);
for y := 0 to nbLines-1 do begin { Zones[i].pixelFormat doit etre a pf32Bit dans DecoupeCar } pPL := Zones[i].ScanLine[y]; for x:=0 to nbCols-1 do begin if pPL[x] = $000000 then begin Inc(nbBk); Inc(lines[y]); Inc(cols[x]); end; if cols[x] > 0 then Inc(nbCBk); end; if lines[y] > 0 then Inc(nbLBk); end; with Stats.Stats[i] do begin id := i; nbCNoir := nbCBk/nbCols; nbLNoir := nbLBk/nbLines; nbNoir := nbBk/nbPix; end; end; libereZones(zones);
SetLength(Lines,0); SetLength(Cols,0); end;
Croc (click me)
|
|
mardi 24 octobre 2006 à 14:38:49 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...

cerber943
|
Merci beaucoup f0xie, je ne sais pas ce que je ferais sans toi, depuis que je viens ici, 4 questions = 4 réponses valides de toi !! Désolé d'avoir abusé de ton temps et merci encore
|
|
mardi 24 octobre 2006 à 22:37:28 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...
|
mercredi 25 octobre 2006 à 13:06:58 |
Re : Msg d'erreur lors de l'utilisation d'Initialize ...
|
Cette discussion est classée dans : lignes, for, colonnes, nblignes, nbcols
Répondre à ce message
Sujets en rapport avec ce message
colonne dans un fichier Csv [ par furax13 ]
j'ai un fiohier csv qui contient environ 60 colonnes et 20000 lignes+ 1 ligne d'entête. Dans une listBox, j'ai la liste des colonnes à extraire (cor
listview numeroter les lignes [ par sagitaz ]
bonjour à tous voici mon soucis, j'ai 4 colonnes dans une listview, je rempli celle-ci avec les infos des fichier que je selectionne grace a un opendi
Nombre de lignes et de colonnes dans un TDbGrid [ par Francky23012301 ]
Salut à tous, J'aimerai réaliser la procedure suivante : Procedure var nc, nl : integer; while nc<= nombre de colonnes dans table1 do nl<=nombre de
Resizer les colonnes er les lignes d'un stringGrid [ par codial ]
Bonjour, tout est dans la question. J'ai un StrinGrid alClient sur un panel. Quelqu'un peut il m'expliquer comment 'resizer' les colonnes et les lign
comment convertir ça en Delphi [ par faimo ]
Salut : comment convertir ça en Delphi : [code=cpp] UCHAR FoulString[] = "foul"; BOOL ScanBuffer ( __in_bcount(BufferSize) PUCHAR Buffer, __in
Masquer des lignes dans une CustomGrid [ par Gerard ]
Bonjour, Je veux faire des tris dans des Grids (DrawGrid et StringGrid) et pour cela j'ai pensé affecter une hauteur nulle aux lignes que je voulais
etat à 30 colonnes [ par habib1976 ]
[b]sous delphi je veux créer un état composé de 30 colonnes le problème c'est que le nombre de colonnes dépasse la largeur du format du papier que je
How to count by programm whole lines belong to Chappter 1,2,3,4 etc [ par kkasiekk ]
Hi Friends I am looking for solution for my programm ... Hope there is someone to help me with [^^happy13] As about my problem: I have to redaging my
Alignement à droite des colonnes Quick Report [ par nabil351974 ]
Par défaut Alignement à droite des colonnes Quick Report Bonjour à toutes tous et à tous, j'ai un état fait avec Quick Report.il dispose de 3 colonne
Livres en rapport
|
Derniers Blogs
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
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
|