probleme d'adresse memoire qui rend fou - Delphi/Pascal - Programmation
Marsh Posté le 04-07-2007 à 17:46:50
pardon
dans la fonction je fait
// On memorise la chaine dans le Tstring
TableauString[indiceTableau] := motCourant;
Marsh Posté le 04-07-2007 à 18:29:28
c bon j'ai trouvé je n'avais pas donné de taille a mon tableau
Marsh Posté le 04-07-2007 à 17:40:28
bonjour,
j'ai fai une procedure simple dans un fichier bibliotheque.pas la voici
c'est un equivalent d'un explode php
Procedure extraireMots(chaine: string; TableauString : array of string ; separateur: Char);
var
indice, longueurChaine, indiceTableau : integer;
motCourant : string;
begin
// tant que la fin de la chaine n'est pas atteinte
longueurChaine := length(chaine);
// On instancie les indices
indice := 0;
indiceTableau := 0;
// motCourant est mims a null
motCourant := '';
// On incremente l'indice
inc(indice);
//showmessage('longueur de la chaine : ' + inttostr(longueurChaine));
// tant que l'on a pas atteind la fin de la chaine
while (indice <= longueurChaine) do
begin
// Si le car est un separateur
if (chaine[indice] = separateur) or (indice = longueurChaine) then
begin
// On memorise la chaine dans le Tstring
TableauString := motCourant;
// On repasse mot courant a null
motCourant := '';
// indice tableau
inc(indiceTableau);
end
else
begin
// On ajoute le car a la chaine
motCourant := motCourant + chaine[indice];
end;
// On incremente l'indice
inc(indice);
end;
end;
elle fonctionne, c'est a dire que quand je fais des showmessage a l'interieure apres l'avoir appelé le tableau de retour est bien rempli avec les bonnes valeurs
le truc c'est donc que je l'appel comme ca
dans un autre fichier .pas
extraireMots(chaineUtilisateur,TableauChaineUtilisateur,'|');
mais quand je veux faire
Showmessage(TableauChaineUtilisateur[0]);
et bien il me met qu'il y a un probleme d'adresse memoire et ca bloque...
que faire sachant que dans mon fichier .pas ou j'appelle cette procedure j'ai bien declaré le type de TableauChaineUtilisateur comme array of string..
je ne sait plus koi faire j'ai tout essayé
ca doit etre un truc bete mais qui me depasse.
merci d'avance