Page 1 sur 1
script Target : besoin de précision sur les ALIAS
Publié : mar. mai 03, 2016 7:13 pm
par hellfrog35
bonjour,
je me replonge dans la programmation Target, et j'ai un peu de mal à piger l'utilisation de l'instruction ALIAS.
ce n'est pas exactement une définition de pointer comme en C apparemment ?
besoin de faire ref à l'adresse mémoire du tableau chaine avec sprintf() par ex.
besoin de faire réf à la chaine complète pour son contenu.
par ex, j'ai une variable chaine (donc un tableau), de portée globale :
l'appui d'un bouton déclenche l'exécution d'une fonction :
cette fonction en appelle une autre en faisant référence à un indice du tableau de caractères.
ex :
Code : Tout sélectionner
ma_func(){
autre_func(str_tableau[2]);
}
autre_func(alias UDLR){
blablacode
sprintf(&unechaine, "%s%s", &unechaine, &UDLR);
blabla
}
ça marche pas comme je veux,
j'ai des erreurs d'execution mais pas de compilation avec Bad Alias ou Index missing sur l'appel dans ma_func...
ça doit être un pb de syntaxe, mais je trouve pas la bonne, j'ai beau regarder la biblio C... je patine.
si qqn a une soluce et une explication
j'ai essayé de déclarer str_tableau en alias, c'est pas bon, d'appeler par &str_tableau, ça va pas avec l'indice, logique, fait ref au pointeur...
déjà que je maitrise pas parfaitement les pointeurs et chaine en C, Target script n'est pas exactement du C++ ni du C# ? si ?
EDIT : la question finale c'est
[alias ma_var] en target script est il l'équivalent de [char *ma_var] en C ?
Re: script Target : besoin de précision sur les ALIAS
Publié : mar. mai 03, 2016 9:16 pm
par Rcaf_Frenchy
char str_tableau[4] = { "U", "D", "L", "R"};
en C++
j'écrirai plutot
char str_tableau[4] = { 'U', 'D', 'L', 'R'}
car "" c'est pour les string..;
je ne sais pas si cela a de l'importance avec TARGET, j'avoue que j'ai abandonné j'utilise plus FreePie avec Python pour piloter mon joy Warthog
Re: script Target : besoin de précision sur les ALIAS
Publié : mar. mai 03, 2016 9:28 pm
par hellfrog35
salut, merci de répondre.
je viens d'ajouter un Edit en fin de mon premier message
le pb n'est pas "" ou ', et script préfère les "
EDIT : tu avais raison : 'U' est un caractère stocké sur 4 bits, "U" est un mot de 2 caractères ( U et \0) stocké sur 6 bits, donc la nautre du tableau n'est plus la même... cf plus bas
passer une valeur string élément d'un tableau à une fonction, c'est ça qui me pose pb.
l'appel ma_func(var_tableau[2]) par ex, renvoie Bad index
et ma_func(var_tableau, 2) renvoie index missing....
Re: script Target : besoin de précision sur les ALIAS
Publié : mar. mai 03, 2016 11:02 pm
par hellfrog35
j'ai pigé comment passer un tableau de caractères type {'a', 'b', 'c' }
il faut appeller ainsi : ma_func(2,&var_tableau) en ayant defini la fonction ainsi : ma_func(int i, alias var_tab){...}
mais pour passer des tableaux de mots {"chat", "chien", "cheval" ...} c'est une autre histoire
en C on défini le type de pointeur, identique au type du tableau. Mais avec ALIAS : ça marche comment ? c'est limité au cas précédant et on peut pas passer des mots ?
sinon un appel de tableau de mots avec la meme syntaxe fonctionne, mais ne renvoie pas les mots, simplement un seul caractère, et pas le bon, donc la lecture des éléments du tableau est mauvaise soit / adresse mémoire renvoyée par le pointeur, soit sur la longueur de l'élément du tableau, donc un problème de type.
quel est le type de ALIAS dans target ?
sachant qu'on ne peut pas faire comme en C, definir un tableau, puis lui affecter un pointeur... si ? comment ?
j'aimerais avoir une réponse fiable.
Re: script Target : besoin de précision sur les ALIAS
Publié : mar. mai 03, 2016 11:52 pm
par hellfrog35
je crois que j'ai trouvé une piste en fouinant dans les fichiers include de target : target.tmh et hid.tmh :
Code : Tout sélectionner
define SIZEMYWORD 13*6+1
define SIZEMYARRAY 5*SIZEMYWORD
struct array_MsgTrim { char str_MsgTrimDirection[SIZEMYARRAY]; }
array_MsgTrim str_MsgSay_Trim = {"Trim up ", "Trim down ", "Trim left ", "Trim right "};
besoin d'aide pour le calcul des valeurs, message erreur compilation < Array/struct bounds overflow > ...
EDIT : en dimmensionnant au bon endroit ça va mieux, mais un calcul précis serait mieux : how to ? (nb mots * nb car * nb octet 1 car + fin mot + ? pr tableau ?)
Code : Tout sélectionner
define KTRIMWORDLEN 13*6+1
define MAXKTRIMWORDLEN 5*KTRIMWORDLEN
struct array_MsgTrim { char str_MsgTrimDirection[KTRIMWORDLEN]; }
array_MsgTrim str_MsgSay_Trim[MAXKTRIMWORDLEN] = {"Trim up ", "Trim down ", "trim left ", "trim right "};
Code : Tout sélectionner
et une fonction comme ça :
my_func(int i, int j, alias my_tring){}
je dois être sur le bon chemin pour le type et l'affectation des valeurs.
reste à dimensionner ce tableau correctement en memoire
et ensuite à y faire ref pour les appels...
du genre &my_string.my_word+i ?ou &&my_string
[j] ?
un p'tit coup de main ?
Re: script Target : besoin de précision sur les ALIAS
Publié : sam. mai 07, 2016 2:29 pm
par hellfrog35
pas de pb pour les passages et appels de tableaux à n dimensions en C ou en lua, mais dans Target je coince tjrs...
help please...
Re: script Target : besoin de précision sur les ALIAS
Publié : dim. mai 08, 2016 10:15 am
par Rcaf_Frenchy
de mes souvenirs alias = passage par référence... donc ensuite la variable est appelée par &var (adresse et non le contenu) souvent utilisé pour le passage de tableau de var ou string
après j'ai du mal à voir ce que tu veux faire... je peux t'aider dans la programmation mais il faudrait que je comprenne l'analyse de ce que tu veux faire
Re: script Target : besoin de précision sur les ALIAS
Publié : mar. mai 10, 2016 12:02 am
par hellfrog35
j'ai laissé tombé, trop long à l'execution, et passer par du script lua ou python ou autohotkey ou autoit par ex est plus souple aussi....
sinon je voulais juste la syntaxe exacte pour passer un tableau à 2 ou 3 dimensions à une fonction
en pseudo langage target script,
et la syntaxe d'appel.