je n'arrive pas à enregistrer des chaînes de caractères dans ma base.
j'ai défini la structure suivante:
struct {
UInt16 Type;
Char Titre;
} LivreRec
Type me permet d'enregistrer le numéro de l'élément sélectionné dans une popup liste
Titre est une chaîne de caractères saisie.
Ensuite voici les instructions que j'utilise pour créer un enregistrement dans ma base (c'est plus ou moins du copier/coller d'un programme que j'ai récupéré ailleur):
LivreRec Record;
LivreRec *RecordP;
MemHandle NewRecH,rec;
UInt16 Index=0;
FormPtr form;
ListPtr list;
FieldPtr field;
Char *text;
form = FrmGetActiveForm();
field = FrmGetObjectPtr(form, FrmGetObjectIndex(form, fldTitre));
text = FldGetTextPtr(field);
FrmCustomAlert(custAlrtID, "AddRec", "Titre", text); trace permettant de voir que le titre est bien saisi
Record.Titre=text;
// Get list
list = FrmGetObjectPtr(form, FrmGetObjectIndex(form, CatListID));
// Get item # selected
Record.Type=LstGetSelection(list);
NewRecH=DmNewRecord(LivreDB,&Index,sizeof(Record));
RecordP=MemHandleLock(NewRecH);
DmWrite(RecordP,0,&Record,sizeof(Record));
MemHandleUnlock(NewRecH);
DmReleaseRecord(LivreDB,Index,true);
Cela fonctionne pour la zone Type que j'arrive bien à relire après coup mais impossible d'enregistrer la zone de texte (j'arrive cependant à afficher le contenu de la zone de saisie "fldTitre"). j'ai essayé ensuite différentes combinaisons avec les pointeurs (que je ne maîtrise pas) mais soit j'ai une erreur de compilation indiquant que les champs sont de types incompatibles sur l'instruction Record.Titre=text; soit ça se compile bien mais ça ne donne aucun résultat.
Merci de votre aide.
Question complémentaire :
Quelle est la différence entre la déclaration char et Char?