Bonjour,

J'ai écrit un petit programme qui sauvegarde des données dans une liste afin de les réutiliser lors d'une exécution ultérieure. Néanmoins, si le programme n'a jamais été lancé, celui-ci doit pouvoir détecter l'absence de la sauvegarde (la liste) et demander une attribution de valeur. j'ai donc écrit ceci : (LOG est le nom de ma liste et je la dimensionne à 0 lorsque je veux effacer la sauvegarde)
:If not(dim(LLOG
:Then
[attibution d'un contenu à la liste] :End

Malheureusement, lors du premier lancement, la liste n'existe pas et le test "not(dim(LLOG" me renvoie un "ERR:Undefinited". Il faut donc demander à l'utilisateur de rentrer une commande du type "0->dim(LLOG" avant la premiere utilisation pour définir l'existence de la liste.
Cette commande ne peut pas être incluse en 1ere ligne du programme car elle effacerait le contenu de la liste à chaque lancement.

D'où ma question : est-il possible de définir une liste/matrice/image seulement lorsqu'elle n'existe pas afin de ne pas la réinitialiser si elle existe ?

En espérant avoir été à peu près clair,

--
Whidou
D'où ma question : est-il possible de définir une liste/matrice/image seulement lorsqu'elle n'existe pas afin de ne pas la réinitialiser si elle existe ?

Oui, simplement en faisant N->dim(LOG).

Dans ce cas si la liste n'existe pas, ca en crée une remplie de N zéros.
Sinon, ca la conserve si elle est deja de longueur N, rajoute des zéros si sa longueur est inférieure a N, voire la tronque si sa longueur est supperieure a N.
Par contre la liste par defaut (sans sauvegerde, ou sauvegarde effacée) est du coup une liste de N zéros et non une liste de dimension 0 (ce qui n'est normalement pas génant smile).
Merci de ta réponse rapide mais le problème de ta solution est que cela change la dimension d la liste et que dans mon programme celle-ci est à la fois : 1.Décidée par l'utilisateur lors de l'attribution de la liste. 2.Utilisée plus tard dans le programme.

Pour être plus clair, je vais expliquer mon programme : il s'agit d'une protection par mot de passe (moins intéressante pour son utilité que pour la technique utilisée) qui code le mot de passe donné par l'utilisateur lors du 1er lancement dans la liste LLOG puis, lors des lancements suivants, compare le mot de passe décodé avec celui donné. La présence d'un seul 0 dans la liste du mot de passe foire tout car le programme ira chercher le caractère n°0 dans la chaine servant de table de caractères (et par conséquent plantera). Le raccourcissement de la liste provoquera un changement du mot de passe, ce qui est également embêtant.

Sinon, j'ai eu une idée tout à l'heure que je vais tenter d'appliquer :
:99->dim(LLOG
:For(A,1,99
:If not(LLOG(A:Then
:A-1->dim(LLOG
:99->A
:End :End


Cela devrait marcher pour les listes/matrices mais pour les Images (pict), y a-t-il un moyen de les définir sans changer leur valeur si elles existent déjà ?

[EDIT] Ca marche ! Merci quand même à mastercalto et ceux qui ont cherché à m'aider.
( c'est un peu bourrin ta méthode Whidou. Tu ne peux pas simplement détecter les 0 lorsque tu compares les caractères, et si la i-iém coordonnée est un 0 bha ça veut dire que c'est finit. Comme ça tu travail avec une longueur fixe suffisante, 20 ça devrait aller pour un mdp )

Sinon quitte à utiliser ta méthode pour correctement dimensionner, et si il n'y a pas de caractère de code 0, autant procéder dans l'autre sens (i.e s'arrêter au premier 0 trouvé):

99->dim(..
1->A
While (A<99 and llog(A))
A+1->A
End
A->dim(LLog



si c'est justifié statistiquement –c'est à dire que tes mdp sont en moyenne plus long que 99/2 – tu peux faire la même chose à partir de la fin: auquel cas tu t'arrêtes au premier non-zéro trouvé.

edit: ./5 : en effet
Tu poste trop vite very tongue (relit ton post il manque [/cite] + quelques mots )
- et si il n'y a pas de cratère (Qu'est ce que des cratères viennent faire avec les calculettes tongue )
- si c'est justifié statistiquement –c'est à dire que tes mots de passe sont en moyenne plus long que 99/2 –
bha y'a pas besoin de bcp d'imagination pour comprendre 'caractère', si ?
( sinon, en effet je me relis assez peu sur les posts comme ça.. )
edit: en effet ^^
./6 Je vois ça (en effe,t). Le problème c'est que j'ai pas d'imagination (bon j'avais quand même compris (et lu) caractère)

Pour en revenir au messages de Whidou
Whidou (./3) :
pour les Images (pict), y a-t-il un moyen de les définir sans changer leur valeur si elles existent déjà ?

Pas que je sache

Sinon les protections par mot de passe en basic, c'est bien de vouloir en mettre, mais bon il suffit d'ouvrir depuis le PC (ou de rendre éditable le programme depuis la calculette) pour comprendre et/ou virer la protection.
Sinon les protections par mot de passe en basic, c'est bien de vouloir en mettre, mais bon il suffit d'ouvrir depuis le PC (ou de rendre éditable le programme depuis la calculette) pour comprendre et/ou virer la protection.

C'est pour ca que j'avais précisé que c'était plus intéressant au niveau de la technique que de l'utilité mais comme je suis en phase d'apprentissage, la plupart de mes programmes sont dans le même cas. On peut dire que je teste un peu le langage de programmation pour voir ce que je suis capable de faire avec.

Commencer du début est en effet une meilleure idée, merci very, étant donné que les mots de passe ont peu de chance de dépasser 20 caractères ^^.