Vous n'êtes pas identifié.
voila tu trouvera dans ce post toutes les erreures dans les exemples de ton tuto. c'est pas parceque ca m'amuse mais j'ai bien pour comprendre essayer.
Dans ton premier exemple:
Example:
*
* int main (void)
* {
* struct BASICfile bf;
*
* if (search_basic_file("TEST", &bf) != -1)
* printf("TEST found ! The size is %u", bf.b_size);
* else
* printf("TEST not found !");
* exit(0);
* }
tu as oublier : segm_video=peek(0x4E,0); sinon ca ne marche pas.
voila et @+ pour d'autres bugs
Hors ligne
2072 ne mets pas tes retour au chariot n apres les guillemets de printf(). faut les mettre dans les guillemets. c'est pour le dernier exemple.
sinon je n'arrivep as à afficher lepassword:
#include "basicf-u.c"
unsigned int segm_video;
int main (void)
{
struct BASICfile bf;
segm_video=peek(0x4E,0);
if (search_basic_file("TEST", &bf) != -1)
{printf("TEST found !n");
printf("le password est %s",bf.b_password[10]);}
else
{printf("TEST not found !");}
getch();
return(0);
}
ca me marque NULL alors qu'il y a bien un password à TEST. il est ou le probleme ?
Hors ligne
j'ai la meme chose avec le nom du fichier basic. ca ne m'affiche carement rien
Hors ligne
je sais y'a plein de fautes dans ces exemple, je ne l'ai est pas testé du tout.
Réutilise celui que j'ai redonné sur le forum (c'est le post où je parle du bug avec le nom du fichier basic).
@+
Hors ligne
à mon avis pour le pass tu devrais mettre un %c et enlever le [10], car c normal! ça te mets u NULL car tu n'affiches que le 10e caractère du mot de passe!!! et puis le peek(0x4E,0) sert juste à mettre 0x1A20 dans segm_video, ms je gadre kan même cette instruction on sait jms ac 2072!
#include "basicf-u.c" unsigned int segm_video; int main (void) { struct BASICfile bf; segm_video=peek(0x4E,0); if (search_basic_file("TEST", &bf) != -1) { printf("TEST found !n"); printf("le password est %c",bf.b_password);} else {printf("TEST not found !");} getch(); return(0); }
Hors ligne
en fait le truc c'est qu'il faut afficher caractere par caractere le mot de pass
Hors ligne
Example:
*
* int main (void)
* {
* struct BASICfile bf;
*
* if (search_basic_file("TEST", &bf) != -1)
* printf("TEST found ! The size is %u", bf.b_size);
* else
* printf("TEST not found !");
* exit(0);
* }
Ya plein de truc faut, ou alors, ca marche ac de la chances, mes routines pr charger les param
Example:
int main (void)
{
int erreur;
struct BASICfile bf;
segm_video=peek(0x4E,0);
erreur=(search_basic_file("TEST", &bf) != -1)
if (erreur==-1) printf("TEST not found !");
else
{printf("TEST found ! The size is %u", erreur);
printf("le password est %s",bf.b_password);}
exit(0);
}
Parce que pour moi, quand ca renvoit -1 quand y' en a po !!!!
et puis le password, c une phrase, donc on a %s
Hors ligne
ben tu te fais une boucle for avec comme indice i et tu mets bf.b_password[i]!! ou bien tu crées un pointeur sur un char, tu fais strcpy de bf.b_password vers le char et tu affiches le char ac %s !
Hors ligne
de toute manière, je compte po afficher les mot de passe d' un fichier basic pour le moments, moi !
ms normalement, un %s suffit !
Hors ligne
je sais ben, c'est comme tu l'as dit, il faut un string et non seulement le 10e caractère!
ms c t juste pour répondre à cw car il disait d'écrire car par car le MdP
Hors ligne
pour les mots de pass y a pas de probleme on fait une boucle comme l'a dit casiomax.
Pour Xthunder tu n'as pas du voir le "!=", tu as le prendre pour un "==" .
-1 est bien renvoyer quand lonsearch ne trouve pas le fichier ... par consequent le code de 2072 marche mais il avait oublier peek(....)
c'est tout.
Hors ligne
non mais laisse tomber je devait pas être très net le jour où j'ai écrit ces exemples (j'aime pas faire les readme)...
enlève le [10] et ça marchera.
désolé
Hors ligne
tu étais bourré ???
apres une fete :fete: , 2072 s' est payé a boire, ms trop :boire: , et a la fin ca s' est fini comme ca : :boire2:
puis il a voulu rédigé son exemple et :confus: alors il a marqué des conneries !!!!
nop, ms ca arrive de se planter, surtout a moi
Hors ligne
c kler ke 2072, tu vois les heures auxquelles il poste... par contre moi j'm bien faire les readme!
et sinon 2072, ne serait-t-il pas plus simple de changer ce peek en 0x1A20?
Hors ligne
non 0x1A20 peut changer un jour (si on change la RAM alloué aux exe par exemple, c'est BradN qui parlait de faire ça et qui a découvert cette adresse) alors que le peek machin non.
Hors ligne
je me compliquais la vie à afficher caractère par caractère le password, suffit de faire çà:
printf("%s",bf.b_password);
je ne sais pas ci c'est moi mais quand je mets RESIZE_ZONE ca me creer le fichier quand il n'existe pas et quand il existe déjà ca fait un bordel monstrueux ! ca me cree un autre fichier test avec la bonne taille mais inutilisable. ma graph100 devient folle. la liste des programme en Basic, des que je baisse le curseur ne cess d'afficher le nom du fichier créé.
J'ai le meme bug avec la fonction CREATE_ZONE.
En gros RESIZE_ZONE n'agrndit pas un fichier et CREATEZONE n'ecrase pas un fichier.
Creer un prog qui creer un fichier basic et lancer le deux fois. vous verrez le bins dans la liste des fichier basic.
j'ai remarqué des trucs quand on ecrit certaines valeurs dans le fichier basic, certaines fonction Basic apparaissent.
ecriver la valeur 12 dans un fichier. vous remarquerez que c'est un disp (le triangle noir)
et quand j'ai ecris 22258 j'ai obtenu Graph Y >= V
en écrivant 22259 j'ai obtenu Graph Y<= V
j'ai remaqué un bug soit avec la fonction read soit avec write
Quand j'ecris une valeur superieure à 32767 la fonction read ne fonctionne pas correctement. Elle lit un valeur completement differente.
compeltement differente est en fait un erreur, y a une logique en fait dans ce qu'elle lit. mais l'expliquer est vachement chaud.
Voici un exemple:
Si je mets 1256 , .................... 1256
. .
. .
Si je mets 32767, la fonction read lit 32767
Si je mets 32768, .................... -32768
Si je mets 32769, .................... -32767
Si je mets 32770, .................... -32766
Si je mets 32771, .................... -32765
. .
. .
. .
. .
. .
si je mets 32855, .................... -32681
. .
. .
si je mets 65536, .................... 0
Si je mets 65537, .................... 1 et ainsi de suite
je ne sais pas à quoi c'est du mais si on enregistre des record superieur à 32767 , et bah... y a un probleme.
Si 2072 pouvait m'expliquer à quoi c'est du ?
Hors ligne
pour le %s c'est ce que j'ai dit plus haut
pour les flag en principe RESIZE_ZONE retaille le fichier s'il existe déjà et qu'il est plus petit si la taille demandé est plus petite que la taille existante il ne doit rien faire et CREATE_ZONE ne créé le fichier que s'il n'existe pas déjà sinon renvoie -1
edit: je viens de tester et ça marche très bien c'est toi qui doit faire une connerie, balance ton code.
pour ton problème vec 32767 c'est que le co,pilateur le transforme en int met &((unsigned int)32768) par exemple et ça devrait peut-être marcher.
mais la fonction read et write se fiche totalement de ce que tu lui envoie, elle veut un pointeur vers une adresse mémoire et un nombre d'octet à copier depuis cette adresse c'est tous tu peux donc lire et écrire tout ce que tu veux. Mais fait bien attention de lui donner UNE ADRESSE si par exemple tu a un entier qui s'appelle mon_entier et qu'il a la valeur 57855 (ou n'importequoi d'autre) il faut que tu envoie l'adresse de mon_entier à la fonction read ou write et pour ça faut que t'écrive &mon_entier et ça marchera.
Hors ligne
T'es sur qu'il faut obligatoirement indiquer une adresse?
Si j'ai un tableau char tab[10] et que je veux l'écrire dans un fichier basic, je fais
write_toBfile(&bf,tab,0,10)
et pas
write_toBfile(&bf,&tab,0,10)
... (c'est d'ailleurs ce que tu fais dans tes exemples je pense)
Meme chose pour un entier :idea:
Hors ligne
apprend le langage C mon petit !
une chaîne de caractère est toujours un pointeur (une adresse vers le premier octet de cette chaîne) quand tu fais tab[10] ça revient exactement à faire (char *)(tab + 10)...
Deplus regarde la définition de la fonction:
unsigned read_toBfile(struct BASICfile *bf, void *dest, unsigned offset, unsigned length)
dest est un pointeur !
Hors ligne
apprend le langage C mon petit !
Ouais bon ca va!
désolé mais j'ai JAMAIS programmé en C avant moi!!
Faut bien commencer un jour non? :x
je pourrais vous en apprendre de belles sur le basic casio moi
Hors ligne
Ah bon ????
Quoi ??? :? :? 8O 8O :?: :?:
Hors ligne
j'ai hate de savoir quoi !!
Hors ligne