Problème avec la valeur retournée par une fonction

Bah, tout est dit non ?

Problème avec la valeur retournée par une fonction

Messagede sporniket » Mer 11 Mar 2009 09:39

Bonjour,

J'ai remarqué que l'interpréteur (version 3.5, 3.5e, et version incluse dans GBE) renvoie systématiquement 0 pour une fonction que j'ai écrite, est-ce que c'est déjà arrivé à quelqu'un ?

(Par contre une fois compilé, ça a l'air de fonctionner normalement)

La fonction étant assez grosse, voici en résumé le problème:

Code: Tout sélectionner
value& = @ma_fonction(...)
print "retour = " +str$(value&)
' -->affiche retour = 0
'
'
'
function ma_fonction()
    local flag_result&
    flag_result& = 0
    '
    '
    ' fais un traitement
    '
    '
    flag_result& = 1
    print "valeur retour = " + str$( flag_result&)
    ' --> affiche "valeur retour = 1"
    return flag_result&
endfunc


En supprimant alternativement des portions de la fonction, je pensais avoir trouvé la section qui posait problème, sauf qu'en laissant cette section mais mise en commentaire le problème se reproduit.

en pj le code et une image tga utilisable (j'écris un petit convertisseur d'images targa). La fonction en cause est sporniket__tga_to_pi1__convert.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris

Re: Problème avec la valeur retournée par une fonction

Messagede sporniket » Jeu 12 Mar 2009 16:29

En externalisant la portion de fonction qui semblait déclencher le problème, je n'ai plus le problème. Mais je ne comprend pas la raison de ce comportement.
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris

Re: Problème avec la valeur retournée par une fonction

Messagede tomchi » Jeu 12 Mar 2009 19:20

J'ai bien jeté un oeil mais perso c'est limite si je comprends la fonction :oops:
Avatar de l’utilisateur
tomchi
Administrateur du site
 
Messages: 342
Inscription: Mer 15 Oct 2008 20:51

Re: Problème avec la valeur retournée par une fonction

Messagede sporniket » Jeu 12 Mar 2009 19:43

c'est vrai qu'elle est assez indigeste :D
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris

Re: Problème avec la valeur retournée par une fonction

Messagede Rajah » Jeu 12 Mar 2009 21:53

t'as essayé en virant le "local flag_result&" au début de ta function ?

Je compile toujours et ne fais jamais en interprêté, donc pas vraiment gêné par ce beans, ça a toujours marché. Par contre, je me suis toujours posé la question : la valeur retournée peut-elle être locale ?
Rajah
 

Re: Problème avec la valeur retournée par une fonction

Messagede sporniket » Ven 13 Mar 2009 08:52

En temps normal ça marche, et je préfèrerais que ce soit le comportement normal. Je n'ose imaginer les effets de bords possibles si je suis obligé d'utiliser des variables globales pour ça (bon, on s'en sort avec un nom de variable qui va bien, mais on peut oublier la récursivité aussi). Déjà j'ai découvert que les tableaux sont forcément globaux.

Effectivement en compilant on n'a pas de problème mais sur mon STE ou sur l'émulateur STE, je travaille "à l'ancienne".
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris

Re: Problème avec la valeur retournée par une fonction

Messagede lp060 » Sam 14 Mar 2009 11:06

Le problème est DIM. Ce problème est connu (bug) avec le compilateur, DIM dans une procédure ou une fonction avec la population locale cause un problème. Déplacez DIM à la section principale du programme ou de l'utilisation de malloc () et le problème devrait disparaître. Désolé pour le mauvais français.
Avatar de l’utilisateur
lp060
 
Messages: 144
Inscription: Dim 14 Déc 2008 23:12
Localisation: My desk

Re: Problème avec la valeur retournée par une fonction

Messagede sporniket » Sam 14 Mar 2009 16:33

Merci ^^/
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris


Retourner vers Questions/aide

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron