Aide - Recherche - Membres - Calendrier
Version complète : erreur de code lors d'une initialisation d'un field
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
nsadon
voici mon form:

FORM ID ImmForm AT (0 0 160 160)
USABLE
BEGIN

LABEL "Agent: " AUTOID AT (0 0)
FIELD ID FormNameFld AT (0 PREVBOTTOM+10 AUTO AUTO)LEFTALIGN EDITABLE UNDERLINED MAXCHARS 20
LABEL "Secteur " AUTOID AT (120 0)

LIST "Paris" " Reuil" "Bagneux" "TOTO" ID ListVilles AT (1 25 158 103)

BUTTON "VALIDER" ID ImmValidBt AT (CENTER PREVBOTTOM+10 AUTO AUTO) FRAME

END

je voudrait donc initialiser le field FormNaameFld avec cette fonction:

static FieldPtr SetField(UInt16 formID, UInt16 fieldID, MemPtr str)
{
FormPtr frm;
FieldPtr fld;
UInt16 obj;
CharPtr p;
VoidHand h;

frm = FrmGetFormPtr(formID);
obj = FrmGetObjectIndex(frm, fieldID);
fld = (FieldPtr)FrmGetObjectPtr(frm, obj);
h = (VoidHand)FldGetTextHandle(fld);
if (h == NULL)
{
h = MemHandleNew (FldGetMaxChars(fld)+1);
ErrFatalDisplayIf(!h, "No Memory");
}

p = (CharPtr)MemHandleLock(h);
StrCopy(p, str);
MemHandleUnlock(h);

FldSetTextHandle(fld, (Handle)h);
}

et je le fait avec l'appel suivant:

SetField(ImmForm, FormNameFld, "toto");

et la lorsque je lance l'appli au moment j'affiche le form jme tape une grosse erreur dans la tronche, je ne comprend pas pourkoi, soyer indulgent avec moi et rapellez vous vos debut dans la pogrammation palm merci.
Patrice
Deux possibilités mais de toutes manières, 2 points à corriger

1) A l'initialisation de la form, tu doit créer le handle et l'associer au champ. Tu ne peux pas compter sur FldGetHandle() pour te signaler quand tu dois créer un handle.

2) Avant de modifier le contenu de la mémoire, tu dois dissocier le handle du champ (FldSetHandle(null)) et le réassocier après.

Mais je répète qu'on est ici dans les bases de la programmation Palm... Et que la question n'est pas d'être indulgent avec les débutants mais plutôt d'éviter à tous (toi, moi et les autres) de perdre du temps inutilement. Cherche donc un tutorial, des exemples, un bouquin (tu trouveras plein de références pour tout ça dans le forum)...
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.