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
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
RE : DELPHIRE : DELPHI par overtaker
Cliquez pour lire la suite par overtaker RE : DELPHIRE : DELPHI par rt15
Cliquez pour lire la suite par rt15 DELPHIDELPHI par overtaker
Cliquez pour lire la suite par overtaker
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|