Question bête:sur le passage de variables pour des fonctions
Nota34
Membre
Bonjour,
question sans doute bête pour vous, mais je n'ai pas touché à du C depuis quelques années (10 ans).
Et en plus sur le SDK Iphone cela me semble différent
En fait, je souhaite crééer une fonction pour envoyer des paramètres à ma fonction mais je ne sais pas comment déclarer cela.
j'ai par exemple essayé de crééer cela pour passer 4 paramètres :
-(void)CalculAbacque(NSInteger *)Distance, (NSString *)Produit, (NS....) --> ca passe pas
ensuite
-(void)CalculAbacque(NSInteger *Distance), (NSString *Produit) --> ca passe pas non plus
d'avance,
merci.
question sans doute bête pour vous, mais je n'ai pas touché à du C depuis quelques années (10 ans).
Et en plus sur le SDK Iphone cela me semble différent
En fait, je souhaite crééer une fonction pour envoyer des paramètres à ma fonction mais je ne sais pas comment déclarer cela.
j'ai par exemple essayé de crééer cela pour passer 4 paramètres :
-(void)CalculAbacque(NSInteger *)Distance, (NSString *)Produit, (NS....) --> ca passe pas
ensuite
-(void)CalculAbacque(NSInteger *Distance), (NSString *Produit) --> ca passe pas non plus
d'avance,
merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Car ce n'est pas la même chose.
en C :
les paramètres sont entre parenthèses et séparés par une virgule.
en Obj-C :
Chaque paramètre est séparé par un 2-point (avec éventuellement un nom devant pour plus de clarté).
Fichier .h
- (void)CalculAbacque:(NSInteger *):(NSString *):(NSString *):(NSString *);
Fichier .m
-(void)calculer:(id)sender
{
NSString *Ratio,*typeCalcul;
NSString *ProduitSelectionne;
ProduitSelectionne = produitlabelAffiche.text;
Ratio = rat.text;
typeCalcul = calc.text;
SInt32 ValeurSaisie = CFStringGetIntValue(donnee);
CalculAbacque(ValeurSaisie,ProduitSelectionne,Ratio,typeCalcul);
}
-(void)CalculAbacque:Valeur:Produit :RatioProjection:TypeDeCalcul
{
}
C'est pas comme ça qu'i faut faire.
Plutot ainsi :
- (void)CalculAbacque:(NSInteger *)monEntier :(NSString *)chaine1 :(NSString *)chaine2 :(NSString *)chaine3;
Dernière question, savez vous comment convertir une chaine de caractère en type "float"
Exemple :
Je récupère 7.8 en type NSString et je souhaite le convertir en type Float.
D'avance
merci.
-(type_retour)nomFonction:(type_1er_param)nom_1er_param etiquette_2nd_param:(type_2nd_param)nom_2nd_param ...etc
Par exemple:
-(void)perimeterCircleWithCenter:(NSPoint*)center radius:(NSInteger*)theRadius
Et dans ce cas on dit que cette fonction s'appelle: perimeterWithCenter:radius:
Si tu veux plus de doc, c'est par ici!
[edit]
Pour float tu fais: float f = [maString floatValue];
idem, de la doc ici
Bizarre, je ne bascule pas sur "CalculAbacque" même avec un point d'arrêt, mon execution n'y va pas Quel boulet :-\\
-(void)calculer:(id)sender
{
NSString *Ratio,*typeCalcul;
float ValeurSaisie;
NSString *ProduitSelectionne;
ProduitSelectionne = produitlabelAffiche.text;
Ratio = rat.text;
typeCalcul = calc.text;
ValeurSaisie = [donnee floatValue];
CalculAbacque : ValeurSaisie :ProduitSelectionne :Ratio :typeCalcul;
}
- (void)CalculAbacque:(float *)Valeur :(NSString *)Produit :(NSString *)RatioProjection :(NSString *)TypeDeCalcul
{
calc.text = @Dkjhlkjhlkjh;
}
Sinon pour ton souci il faut que tu mettes des "étiquettes" à chaque paramètre, c'est troublant au début mais sinon on comprend rien. Les étiquettes servent à comprendre le sens du paramètre que ta fonction utilise. Pour toi par exemple:
C'est très verbeux, mais avec l'habitude c'est tellement plus agréable.
Ensuite lors de l'appel on comprend beaucoup mieux, ça donne:
C'est peut-etre bien pour ça que ta méthode n'est pas appeler, même si je ne comprend pas comment ça peut compiler ton code.
Pour t'expliquer un peu, la syntaxe d'appel d'une fonction, et le sens est un peu particulier en Objective-C. On dit qu'on "envoie un message à un objet" et non pas qu'on appel une fonction. Donc ici tu envoies le message CalculAbacqueAvecValeur:produit:ratioProjection:typeDeCalcul à l'objet self
ps: Tu devrais éviter de déclarer des variables avec une majuscule, c'est une convention. On réserve les majuscules en début de nom pour les Classes (NSString par exemple).