Aide - Recherche - Membres - Calendrier
Version complète : Encore un problème de développement de conduite
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Orabig
Hé oui, j'ai encore un soucis pour le développement de ma conduite (en C#).

J'arrive parfaitement à lancer ma conduite, à lire les DB du Palm, mais je n'arrive pas à lire les préférences. icon_confused.gif
Voici mon code :
CODE
PDSystemAdapter pdSys;
(...)

public void Synchronize(SyncForm form)
        {
            // Informations de synchro
            try
            {
                pdSys = new PDSystemAdapterClass();
                (...)
                byte[] prefs;
                short Version;
                prefs = (byte[])pdSys.ReadAppPreference("crWd", 1, true, out Version);
                if (prefs.Length==0) return; // Ici, le tableau est vide !
                (...)

Mon problème, c'est que le tableau prefs est toujours vide.
Il me semble pourtant que ce code est sensé marcher, d'autant que si j'indique un numéro de préférence qui n'existe pas (ici, j'ai mis 1, qui existe), j'ai le message d'erreur suivant :
System.Runtime.InteropServices.COMException : Database, record, etc. not found
De même, j'ai ce message d'erreur si je vide la préférence coté Palm.

J'ai bien vérifié dans mon application coté Palm que :
icon_arrow.gif L'index de la préférence est bien égal à 1
icon_arrow.gif Le creator Id est bien bon
icon_arrow.gif La préférence contient bien des données (2 chaines de caractères)

Qui a une idée ? ninja.gif

(question subsidiaire : à quoi sert "Version" ?)
Payalba
Je ne pourrais pas grand chose sur ton pb mais "version" permet de savoir connaitre la version de ta structure pour les prefs ainsi tu sais ce qui est stocké.

Un exemple
Tu developpes un jeu dans ta pref tu mets juste le score et l'état de ta partie
Tu mets donc 1 en version et ta stucture est alors
struct
{
long
boolean
}

Ton jeu evolue, tes utilisateurs demandent à ce que le nom du dernier gagnat soitrappellé systematiquement

Tu vas devoir ajouter le nom dans ta pref... qui va passer en version 2
La structure de ta pref est alors
struct
{
long
boolen
char[50];
}

Le pb c'est que le jeu étant distribué. Ton programme doit donc être apte à lire des anciennes et des nouvelles strucutures sans faire d'overrun ou d'autres joyeuseté du genre.

Le principe est donc quand tu lis tes prefs ;
1 - recupérer le numéro de versions
2 - en fonction du numéro de version utiliser la bonne structure pour la lire.

A l'enregistrement ecrire avec la version la plus recente.
Payalba
Il ne faudrait pas faite un new bytes["taille de ta structure"] sur ton prefs ?
Ou "taille de ta structure" dependrait de ta version ?



Patrice
CITATION(Payalba @ 29/04/2008 à 07:07 ) *
Il ne faudrait pas faite un new bytes["taille de ta structure"] sur ton prefs ?

Pas si la fonction renvoie un tableau !
Orabig
CITATION(Payalba @ 29/04/2008 à 06:54 ) *
Je ne pourrais pas grand chose sur ton pb mais "version" permet de savoir connaitre la version de ta structure pour les prefs ainsi tu sais ce qui est stocké.
(...)

blink.gif J'apprends un truc là... Et je n'ai pas l'impression que c'est géré par HB++ (ou alors, je n'ai pas trouvé dans l'API comment récupérer ce fameux numéro de version)...

CITATION(Payalba @ 29/04/2008 à 07:07 ) *
Il ne faudrait pas faite un new bytes["taille de ta structure"] sur ton prefs ?
Ou "taille de ta structure" dependrait de ta version ?

Ben non, effectivement, comme le dit Patrice, c'est la fonction ReadAppPreference() qui me renvoit ce tableau de byte qui est sensé avoir la bonne taille.
C'est comme ça que ça marche quand je lis la base de données : j'utilise une fonction records.readNext() qui me renvoie direct ce tableau...

Bon, merci quand même, mais j'ai toujours pas de solution. icon_bla.gif
Payalba
CITATION(Orabig @ 29/04/2008 à 08:50 ) *
blink.gif J'apprends un truc là... Et je n'ai pas l'impression que c'est géré par HB++ (ou alors, je n'ai pas trouvé dans l'API comment récupérer ce fameux numéro de version)...

Non c'est pas géré dans HB++ ou alors il faut appeler directement les API.
Orabig
icon_cry.gif
Bon, ben je vais me débrouiller autrement, et mettre les infos en base... anim_cry.gif

(C'est pénible parfois de se trouver seul devant chaque problème qu'on rencontre...)
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.