1

Bonjour,

Quelques temps avant de recevoir ma GP2X, j'ai commencé un petit projet (petit jeu merdique) en C++ et SDL sous win pour ensuite le porter à la GP2X... J'ai choisi C++ parceque ca faisiat longtemps que j'en avais pas fait et que j'avais jamais essayé la lib SDL...

Enfin bref, après le tuto de fagEmul (merci à toi au fait..), je me suis décidé à tester de compiler ce que j'avais fait pour la GP2X..
La compilation se passe bien mais j'ai un problème :
Tout ce qui est lié à ma classe ne passe pas. Explication : J'ai une classe Sprite et rien de ce qui est géré par cette classe ne marche...Pourtant tout l'affichage fonctionne (carte + menu) mais aucun sprite ne s'affiche... J'ai un main.cpp et un sprite.cpp et j'ai bien compilé avec g++...

Donc voilà ceci est mon premier problème, ensuite j'ai voulu débugger mais j'ai rencontré un autre problème, l'écriture dans stdout ou stderr (sortie SDL) ne passe pas...
J'ai testé d'écrire dans un fichier mais ca ne marche pas non plus...Je dois faire un truc du style :
FILE *myDebugFile;
myDebugFile = fopen("/mnt/sd/test.txt", "w");
fprintf(myDebugFile, "Super test de merde...\nnul..."); fclose(myDebugFile);


Et ca marche pas...
Voilà bon ben je tiendrais au courant si je trouve pourquoi ca ne marche pas, je referais des test sûrement ce soir si j'ai le temps...
Et pis si quelqu'un a une idée...grin

2

oui, moi non plus j'arrive pas a ecrire dans un fichier sur la SD, pourquoi ca ne fonctionne pas, aucune idée sad
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

3

Ok donc si j'en sais plus sur le problème d'écriture dans un fichier, je viendrais remplir ce topic...
Et si quelqu'un a une idée sur le "Pourquoi rien de ma classe ne passe...", même un soupcon d'idée...merci d'avance... wink

4

Pour ton soucis de fichier tu es sous linux, qui fait une distinction entre fichier binaire et fichier texte, or fwrite écrit dans un fichier en binaire, donc il faut l'ouvrir en binaire aussi, ce qui donne :
myDebugFile = fopen("/mnt/sd/test.txt", "wb");
Et hop, ca marchera smile

Par contre, pour l'autre histoire, je pense qu'il faudrait ton code source, ou un peu plus de détails
Le bonheur, c'est tout ce qui arrive entre deux emmerdements
http://www.microbasic.net/

5

Ca serait intéressant aussi de tester la valeur de retour de fopen... Sinon, c'est pas vraiment du C++ ça grin
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

6

Oui mais mon soucis principal et sujet premier de ma question était le problème avec ma classe même si je me doute que ce serait mieux avec plus d'infos...
Sinon pour fopen() il st bien censé créer mon fichier si il n'existe pas ?? Si oui le fait que je l'ouvre en tant que fichier text est un autre problème...
J'ai aussi essayé de le faire avec un file descriptor et un write() mais même avec O_CREAT dans les params de mon open(), aucun fichier n'est créé...
J'essaierai de poster mes sources prochainement...
Merci et à bientôt...

7

Avec si peu d'infos je ne peux rien pour toi, désolé... Mais pour le fopen, désolé de me répéter: que donne un test de la valeur renvoyée par fopen ? Les codes d'erreur, ça peut servir...
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

8

FILE *myDebugFile;
myDebugFile = fopen("/mnt/sd/test.txt", "wt");
fprintf(myDebugFile, "Super test de merde...\nnul..."); fclose(myDebugFile);


comme ca, ca ira mieux
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

9

Oki, je testerai même si il parle pas d'incateur 't' dans les man, y'a juste 'b' et dans les man sur l'indicateur 'b' dans le format d'ouverture, il est dit :
Ce mode sert uniquement à assurer la compatibilité avec ANSI X3.159-1989 (``ANSI C'') et n'a aucun effet. Le ``b'' est ignoré.

Enfin je testerai ça...par contre désolé de pas pouvoir tester et répondre vite mais j'ai pas mon source avec moi au travail...
Et je comprends Ximoon que tu ne puisse m'aider avec si peu d'info, ne t'inquiète pas, j'aurais sûrement le temps de tester le retour de mes fonctions ce soir...
Et j'écrirais les valeurs retournées dans un fichier grin ....boutade dsl....

10

Bon alors j'ai testé avec "wt" mais apparemment ca ne change rien...
Sinon le fopen() et le fclose() marche bien...fopen() renvoi !(NULL) et fclose() renvoi bien 0 pourtant j'ai toujours pas de fichier sur ma SD....
Pour le problème avec ma classe, j'ai pas encore le temps de faire d'autre test et je préfère savoir écrire dans un fichier avant...
Sinon je pense que j'irais poster sur gp32x (pour le problème d'écriture dans un fichier) demain si je n'avance pas...ils ont déjà dû faire ça ou rencontrer le même problème que moi...

11

moi j'utilise wb et ca fonctionne, je m'en sert pour creer un fichier de sauvegarde pour les scores avec les noms
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

12

Bon ben c'est cool parceque j'ai pas encore essayé en ouvrant en binaire...je ferais le test ce soir...merci...
Desedit wink

13

Je viens de refaire des tests...
Vous allez me crier :
En fait depuis le début, ca marche....c'est à dire que même le premier bout de code est bon....même avec juste "w" en mode d'ouverture...
Alors avant de me taper, je ne pouvais pas savoir que ca fonctionnait puisque qu'après dans mon code, mon prog plantait donc j'éteignait la console....Et en fait le fichier créé est effacé après l'arrêt de la console !!!
C'est à dire je lance mon prog, il écrit dans le fichier...je vais dans ebook et je mates le contenu mais impossible de retrouver le fichier sur la SD une fois que la console a été éteinte !!!
Est-ce que quelqu'un aurait une idée ?!? Et toi FagEmul ça marche ? le fichier reste même après que la console ait été éteinte ??
Merci d'avance...

14

Il plantait avant ou après le fclose ? Normallement le fichier reste en cache jusqu'au fclose qui le copie sur le disque.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

15

Même avant, il plantait après le fclose(). Maintenant ca ne plante plus et je peux retourner au menu de la GP2X...et fclose() me retourne bien 0...
Vous pensez que ca peut avoir à voir avec les droits et umask ?? Parceque après l'appli, le fichier existe bien sur ma SD tant que je n'éteint pas ma console...
Et si juste après avoir éteint, je li la SD sur mon PC où sur la GP2X, celui ci n'existe plus...en tout cas je le voi pas...
Donc voilà si vous avez une idée... grin
Enfin encore merci à vous, Ximoon, FagEmul et Lothei...

16

avatar
Kupee pee

17

Bon maintenant ca marche..pourtant je ne vois pas ce que je fait de différent...J'ouvre juste avec "w" et je précise pas binaire...Le fichier reste bien même après avoir éteint la console...
Est-ce qu'un administrateur pourrais rajouter "[RESOLU]" dans le sujet...J'essaierai de débugger pour voir pourquoi ma classe marche pas...Merci...

18

pour ton fichier debug, essaye ca :

#include <stdarg.h> void Init_Log() {      FILE *myDebugFile;      myDebugFile = fopen("log.txt", "wt");            if (myDebugFile)      {           fprintf(myDebugFile, " - myDebugFile - log begin\n");           fclose(myDebugFile);      } } void Log(char *text, ...) {      FILE *myDebugFile;      va_list ptr;      myDebugFile = fopen("log.txt", "at");            if (myDebugFile)     {           va_start(ptr, text);           vfprintf(myDebugFile, text, ptr);           fprintf(myDebugFile, "\n");           va_end(ptr);            fclose(myDebugFile);      } }

ne pas oublier l'include dans ta fonction, et appeler Init_Log(); avant ou apres l'init de sdl dans le main.

ensuite tu peux utiliser la fonction Log comme ceci :

Log("coucou c'est moi\n");
ou
Log("Score = %i", score);


voila, j'espere que ca t'aidera smile
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

19

Cool FagEmul....merci pour ta petite fonction log(), c'est cool que ca gère les arguments variables en plus...ca va être bien pratique...merci...