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
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
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
attributs colonnes StringGrid [ par PhilLU ]
Salut, Je souhaite donner à certaines colonnes d'un StringGrid l'attribut editable (goEdit:=True?) et à d'autres colonnes non. Comment faire? Merci à
Ouvrir / Enregistrer [ par Valentin_Loupe ]
Bonjour,Je voudrais savoir si quelqu'un peut m'aider, je voudrais faire quelque chose :En fait, le principe est simple : je voudrais pouvoir enregistr
Affichage des colonnes d'un DBgrid Horizontalement et verticalement [ par lazsaida ]
BonjourJe voudrai afficher des donner liées à une table et à un datasource dans une grille de deux manière Verticale et Horizontale , J'ai trouver le
effacer polyline [ par seba31stien ]
Bonjour, dans mon appli, je trace des lignes entre deux points sur un paintbox (équipé d'une carte géo) selon : PaintBox1.Canvas.Polyline([cc[site_i
Connaitre le nombres de lignes dans un fichier texte [ par Tank01 ]
Bonjour, Je suis débutant en delphi, et voici le problème auquel je suis confronté: Soit un document texte contenent plusieurs lignes. je traite ces
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
|