Aide - Recherche - Membres - Calendrier
Version complète : Problème de concaténation de chaine de car
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
naguttes
Bonjour,

En vacance à l'île Maurice, j'en profite pour travailler mon programme et bien entendu j'ai des problèmes. Je vous l'expplique rapidement :
Je veux concaténer plusieurs éléments d'une liste et l'afficher sur une forme modale.
voic en gros le code que j'utilise, je n'ai pas mis toutes les lignes mais celles qui me pose problème et il peut y avor de problèmes de frappe.

CITATION
Char *cVar
MemHandle hHandle;
...

hHandle=MemHandleNew(200)  /* 200 est la longueur max de ma chaine
cVar=MemHandleLock(hHandle)

...
for ...

text=LstGetSelection(list,i);
strcat(cVar, list);

end_for

/* j'assigne cVar à mon champs (je ne me souviens plus du code mais il marche)

MemHandleUnclock(hHandle);
MemhandleFree(hHandle)


Mon problème est que :
-je n'arrive pas à réinitialiser cVar (le premier affichage marche) mais ensuite les chaines issues de la liste se concatène jusqu'à produire une erreur avec un reset (depassement de la taille du handle?). j'ai essayer de faire cVar="" après le loc du handle mais cà n'est pas mieux, j'écris en dehiors du champs et ça plante
-je n'arrive pas à insérer le caractère "n" (quand je le fait avec strcat j'ai une erreur qui se produit au bout de deux ou trois affichages comme si je dépassais le taille mémoire)

Bon voilà j'espère que c'est clair. je vous quite car la connexion est super chère et je ne peux préparer mon texte à l'avance
Patrice
1) Il vaut mieux utiliser StrCat() que strcat()
2) Une chaîne C se "vide" en mettant son premier octet à 0 : cVar[0] = 0
2') Ou bien tu fais la première copie avec StrCopy()
3) Tu dois concaténer la chaîne "n" et non le caractère 'n' pour ajouter des sauts de ligne...
blueberry
J'admire toujours la rapidité avec laquelle Patrice se dévoue pour répondre.
Cela dit, s'il mettait moins de 10 minutes à répondre, cela permettrait à d'autre de répondre... et de le laisser souffler un peu non ?
8O
Patrice
CITATION(blueberry)
Cela dit, s'il mettait moins de 10 minutes à répondre, cela permettrait à d'autre de répondre... et de le laisser souffler un peu non ?

icon_lol2.gif Je ne suis pas toujours là non plus... anim_wink.gif
naguttes
Merci les amis, en fait mon problème venait visiblement de la commande MemHandleFree(). Le programme fonctionne correctement en la supprimant
(Je faisais bien un StrCat, c'était une faute de frappe dans le post, pas dans le programme).

Patrice, j'ai bien fait un StrCopy pour initialiser mais je ne suis pas sur de comprendre la différrence entre chaine "n" et caractère "n". J'ai fait un StrCat(cVar,"n") et ça semble marcher.


Sinon, j'avance bien sur la version 2 de DepFr et j'espère pouvoir vous soumettre cette nouvelle version à mon retour de vacances dans une semaine.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.