Problème de code = erreur "opération de pointeur incorrecte"

ODLCITEINFO Messages postés 10 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 29 décembre 2010 - 17 oct. 2010 à 14:45
ODLCITEINFO Messages postés 10 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 29 décembre 2010 - 18 oct. 2010 à 19:15
Bonjour,
j'ai un problème qui me pose problème, je ne trouve pas le problème et sa me turlupine beaucoup.
Voici mon code dans lequel le problème survient;
[
procedure TForm9.calculer(var value: string);
var
val : string;
symbol, ligne, col: boolean;
tmpligne, tmpcol : string;
noligne, nocol, i : integer;
calc : array of array of string;
okln, okcol : boolean;

procedure Initialisation;
begin
nocol := 0;
noligne := 0;
tmpligne := '0';
tmpcol := '0';
okcol := false;
okln := false;
ligne := false;
col:= false;
end;

begin
Initialisation;
symbol := false;
for I := 1 to length(value) do
begin
val := copy(value, i, 1);
showmessage(val);
if symbol = true then
begin
calc[length(calc)-1, 3] := val;
symbol := false;
end;
if (ligne = true) and (val<>'_') then if tmpligne= '0' then tmpligne := val
else tmpligne := tmpligne + val
else noligne := strtoint(tmpligne);
if val = '_' then
begin
if ligne=false then ligne := true
else
begin
ligne := false;
okln := true;
end;
end;

if (col = true) and (val<>'|') then if tmpcol= '0' then tmpcol := val
else tmpcol := tmpcol + val
else nocol := strtoint(tmpcol);
if val = '|' then
begin
if col=false then col := true
else
begin
col := false;
okcol := true;
end;
end;
if (okcol true) and (okln true) then
begin
setlength(calc, length(calc)+1, 3);
calc[length(calc)-1, 0] := inttostr(nocol);
calc[length(calc)-1, 1] := inttostr(noligne);
symbol := true;
Initialisation;
end;
end;
showmessage('ln1 : ' + calc[0, 1] + ' ; col1 : ' + calc[0, 0] + 'signe1 : ' + calc[0, 2]);
showmessage('ln2 : ' + calc[1, 1] + ' ; col2 : ' + calc[1, 0] + 'signe2 : ' + calc[1, 2]);
end;
]
J'ai mis des showmessage partout pour trouver le problème, me conclusion, il va jusqu'au bout de la procedure mais ne poursuit pas le programme la ou la procedure calculer à été appelé, à la place j'ai le droit à une message d'erreur : "opération de pointeur incorrecte",
pour que la procedure fonctionne correctement, value doit contenir des info comme ceci : "_nbligne1_|nbcolonne1|+_nbligne2_|nbcolonne2|" exemple : de traitement _-1_|0|+_0_|-1|;
en chercheant sur le net je suis sans arrêt tombé sur des problème lié à des DLL, moi je n'en utilise pas dans ce programme.

merci beaucou pour votre aide et espère avoir réponse rapidement
bien cordialement.

2 réponses

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
18 oct. 2010 à 10:23
Salut,
je pense dimension
if symbol = true then 
begin 
    calc[length(calc)-1, 2] := val;//calc[length(calc)-1, 3] := val; 
    symbol := false; 
end; 

@+ yanb
0
ODLCITEINFO Messages postés 10 Date d'inscription samedi 28 janvier 2006 Statut Membre Dernière intervention 29 décembre 2010
18 oct. 2010 à 19:15
A ouai, en effet, c'est trise de la part de delphi agrandissement des tables dynamique de 1..n et affectation de 0..n-1, en effet sa résoud si simplement, merci bcp


Florent LEMAITRE
0
Rejoignez-nous