Problème variant-autre

Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 - 27 oct. 2005 à 13:47
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 28 oct. 2005 à 12:41
J'ai une fonction qui doit soit me retourner false, soit me retourner un résultat(qui est un tableau à deux dimensions)



donc je récupère cela dans un variant pour tester si c'est false, et
pis si c'est pas false, je met la valeur dans un nouveau tableau à deux
dimension



mais c'est la qu'est le problème...



il me dit que: "[Erreur] Unit1.pas(1206): E2010 Types incompatibles : 'mtab' et 'Variant'"



alors comment faire???



merci

18 réponses

Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 1
27 oct. 2005 à 15:06
Désolé, un variant ne peut contenir de tableau, sauf en utilisant des méthodes de construction spéciale, et même là, je ne crois pas que tu puisses faire grand-chose. Je te suggère de modifier ta façon de faire. Au lieu de renvoyer false, renvoie un tableau qui vaut nil. Tu testes le tableau, et s'il est différent de nil, alors tu l'utilises.
Bonne prog.
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
27 oct. 2005 à 15:07
nil?

c'est quoi ca???
0
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
27 oct. 2005 à 15:32
Utiliser une variable pour faire deux choses différentes !!! Ca fait mal ...

Renvoie ton tableau en variable, pointer ou autre ... et gère le retour de ta fonction (true/false) par code retour ...

vaughan
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
27 oct. 2005 à 15:34
le code retour???



Ben écoute j'ai fais ca parce que personne a réussi à me dire comment
renvoyer deux variables depuis une fonction...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
27 oct. 2005 à 15:44
Par exemple

function TForm1.MyFunction(var pTab: array of integer): Boolean;
begin


end;

pTab ton tableau en entrée/sortie et le code retour en boolean. Personnellement je n'utilise jamais de tableau ...

vaughan
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
27 oct. 2005 à 16:09
mais si je prend ton exemple, il renvoie que vrai ou que faux... il renvoie pas le tableau si c'est vrai... non?
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
27 oct. 2005 à 16:16
triche !





type



FuncRet = record

tableau : mtab;

erreur : boolean;

end;



function PullKK(param) : FuncRet;

begin

traitement ... result.tableau > erreur ? > result.erreur := true/false

end;



sinon dis nous ce que la fonction est censée faire, comment tu utilise le tableau ect...

peut etre que l'on pourrat te donner une meilleur solution.
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
27 oct. 2005 à 16:17
bah en gros c'est une fonction récurisve, qui envoie le tableau pour
trouver une autre case, et si ca joue pas, il revient en arrière...
voila...
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
27 oct. 2005 à 16:31
tu peux utiliser une variable globale que tu positionne dans la fonction et tu la teste au retour
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
27 oct. 2005 à 16:32
tu peux aussi rajouter une cellule au tableau qui te sert de variable de validation.
0
Niki2001 Messages postés 85 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 17 décembre 2005 1
27 oct. 2005 à 18:57
Pour info, nil est la valeur d'un tableau ou d'un pointeur vide.
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
28 oct. 2005 à 07:46
et comment donne ton la valeur nil à un tableau???



(ps c'est nul si delphi ne permet même pas de renvoyer plusieurs trucs...)
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 oct. 2005 à 08:09
pour affecter une valeur nil à un tableau il faut le declarer en
tableau dynamique (en fait au départ tu crée un pointeur ) ensuite tu
utilise SetLength(tableau,nombre d'element);

comme tableau est un pointeur tu peux lui donner une valeur nil (pointeur nul)
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
28 oct. 2005 à 08:29
tu dis:

" (ps c'est nul si delphi ne permet même pas de renvoyer plusieurs trucs...)"

mais imagine que tu pose une question et suivant la reponse tu reçoives dans ta boite aux lettre:

(1 si j'ai la reponse: utilise une variable auxiliaire (globale ou record)

(2 ou 中国电子资源网-集成电路资料下载

crois tu que tu comprendra la signification du second message.

en voulant faire renvoyer deux reponses totalement differentes (un
tableau ou une variable booleenne) à la fonction tu places le programme
dans la même situation.il est totalement incapable de savoir si la
variable est un tableau ou une variable bool par contre si tu lui
renvoie systematique deux variables un tableau et une variable bool
c'est plus simple pour lui:

il teste d'abord la variable bool pour savoir si le tableau est valide puis suivant cette variable il utilise ou non le tableau.

bonne prog
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
28 oct. 2005 à 09:01
Je ne sais pas utiliser les pointeurs(je comprend pas ce que c'est en fait...)
0
Nargzul Messages postés 438 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 26 juillet 2007 4
28 oct. 2005 à 09:13
ok lirais ca après... en attendant vais essayer de finir ce prog...



coté synthaxe c'est bon, mais il me fout une erreur, et je vois pas
ou... pfff le débogugage va etre long... très long...
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 oct. 2005 à 12:15
Nargzul il me senble que tu n'as pas compris un petit truc

Quand Vaughan te propose
function TForm1.MyFunction(var pTab: array of integer): Boolean;
begin
Result := False; // on initialise Result à False
If condition Then // a toi de definir la Condition .Si elle est vrai ...
Begin
Result := True; // on renvoie true
pTab := // et ce que tu veux dans pTab
End;
end;
var pTab est en Entrée comme en sortie :

Donc tu fais
if MyFunction( MonTab)// Si True
Then // Alors MonTab contient ce que tu lui as donné dans la MyFunction

Voilà j'espère avoir été asser claire
@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 oct. 2005 à 12:41
Petite préscision : MonTab et pTab doivent être de Type indentique
@+ Cirec

<HR color=#008000 SIZE=7>


N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0
Rejoignez-nous