Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 26 Sep 2004 06:09:22

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Toujours en galère avec le C++

Voila comme vous l'avez compris je me mes au C++. pourquoi bah parceque je trouve que le code est plus claire. les variable on sait a koi elle servent, elles sont plus perdu dans le code mais dans un classe. je trouve ca bcp plus claire.

Mais j'ai un prob a la compilation de pointeur far je sais pas koi. voila le code:

Code:

//using namespace std;

extern _C {
void far handler()
{
  _hardresume(_HARDERR_FAIL);
}
void erreur_materiel()
{
_harderr(handler);
}

}

int main()
{
  //Lecteur *Lec_M=NULL,*Lec_N=NULL,*Lec_O=NULL,*Lec_P=NULL,*Lec_Q=NULL;
  erreur_materiel();

  return 0;
}
 

l'erreur se produit avec handler uniquement quand je compile en c++. en C ca passe. le message que j'ai avec tc3:
cannot convert 'void (*)()' to 'void (far*)(unsigned int,unsigned int, unsigned int far*)'
et j'arrive pas a resoudre le probleme


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#2 26 Sep 2004 10:30:04

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

essaie avec

Code:

void handler(unsigned int,unsigned int,unsigned int far*) 
{ 
  _hardresume(_HARDERR_FAIL); 
} 
void erreur_materiel()
{ 
_harderr(handler); 
} 

int main() 
{ 
  //Lecteur *Lec_M=NULL,*Lec_N=NULL,*Lec_O=NULL,*Lec_P=NULL,*Lec_Q=NULL; 
  erreur_materiel(); 

  return 0; 
} 

Sinon tu verras que les classes ne servent pas directement à clarifier ton code mais plutot à penser en terme d'objets (la clarté du code en étant une conséquence directe c'est vrai) smile


Pensez à surveiller mes releases wink

Hors ligne

 

#3 26 Sep 2004 16:49:25

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Toujours en galère avec le C++

ca ne marche pas plus.


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#4 27 Sep 2004 04:02:19

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

alors

Code:

int handler(int,int,int,int)
{
    hardresume(_HARDERR_FAIL);
    return 0;
}

void main()
{
    harderr(handler);
    // ...
}

Chez moi ça ça compile bien smile


Pensez à surveiller mes releases wink

Hors ligne

 

#5 27 Sep 2004 16:32:42

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Toujours en galère avec le C++

thanks !
je vais essayer de migrer vers dm


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#6 27 Sep 2004 16:55:19

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

Fais attention avec DM pour la recherche de fichiers dans les lecteurs vides, ce n'est malheureusement pas aussi simple à régler qu'avec TCC...  yikes

Avec TCC si on scanne les 6 lecteurs on peut faire une simple boucle for dans laquelle on appelle findfirst() par exemple, et si jamais le lecteur est vide l'appel de cette fonction provoquera une erreur et on n'obtiendra pas de résultats pour le lecteur en question. La recherche continue alors avec le lecteur suivant.

Avec DM par contre l'erreur qui survient arrive à "casser" la boucle for (je ne sais pas trop comment), et donc si on tombe sur un lecteur vide on risque de ne pas scanner les suivants, même s'ils contiennent des fichiers  :?

Pour rechercher un certain fichier dans un lecteur moi j'ai du écrire ceci:

Code:

static void __far my_handler(unsigned, unsigned, unsigned __far *) { _hardretn(0); }

void main()
{
    _harderr(my_handler);
    ...
}

bool findFile(char* nom,char* sortie)
{
    char chemin[50]="L:\";
    uchar i;
    struct find_t ff;

    strcpy(chemin+3,nom);

    bool ok;
    do
    {
        for(; chemin[0]<='Q' && _dos_findfirst(chemin,0,&ff) ; chemin[0]++);
        if(chemin[0]<='Q' && strlenght(ff.name)<4)
        {
            chemin[0]++;    // on est tombe sur un lecteur vide qui a fait quitter la boucle 
            ok=false;
        }
        else ok=true;
    }
    while(!ok);
    
    if(chemin[0]<='Q') 
    { 
        strcpy(sortie,"x:\");    sortie[0] = chemin[0];
        strcpy(sortie+3,ff.name); 
        return true;
    }

    sortie[0]=''; return false;
}

void strcpy(char* dst, const char* src)
{
    uchar i;
    for(i=0; src[i]; i++) dst[i] = src[i];
    dst[i] = '';
}

(Ici la fonction findFile() sert à scanner les racines des lecteurs pour trouver un certain fichier et récupérer son chemin complet wink )


Pensez à surveiller mes releases wink

Hors ligne

 

#7 28 Sep 2004 14:44:02

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Toujours en galère avec le C++

ça casse une boucle for, ou bien ça retourne qu'une constante avec findnext?  yikes


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#8 29 Sep 2004 08:08:05

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

En fait c'est peut-etre bien findfirst qui renvoie 0 en cas de lecteur vide... mais j'avoue ne pas avoir cherché tres loin lol


Pensez à surveiller mes releases wink

Hors ligne

 

#9 29 Sep 2004 20:11:21

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Toujours en galère avec le C++

J'avais eu des problèmes avec l'interception de ces erreurs, et j'en étais arrivé à faire ceci:

Code:

#ifndef __DMC__
#pragma warn -par
#endif
//static char diskerror;
int DOSerrors_handler(int errval, int ax, int bp, int si)
{
    hardretn(0);
    return 0;
}
#ifndef __DMC__
#pragma warn +par
#endif

int main ()
{

...

harderr(DOSerrors_handler);

...

}

sinon le prgramme devenait instable après, problème lors d'exécutions successives de programmes (autant que je me rappelle)


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#10 30 Sep 2004 07:07:30

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Toujours en galère avec le C++

ho?
"execution sucessives"?

on a des problèmes de ce genre effectivement... j'ai atteind pour ma part 9 executions mirroirs (cad 2 exe qui s'executent)


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#11 30 Sep 2004 07:20:36

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

En effet, c'est le genre de problèmes que j'ai eus!

En fait le code que j'ai écrit pour mon handler avec DM ressemble fort à celui que tu as donné, et puisque c'est compilé avec ce compilo les #ifndef ne me serviront pas... Donc je ne pense pas que ca va arranger les choses sad Enfin je vais essayer de tte facon, et j'essaierai de creuser de ce coté la pour resoudre le probleme si ca ne marche toujours pas wink


Pensez à surveiller mes releases wink

Hors ligne

 

#12 30 Sep 2004 22:00:36

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: Toujours en galère avec le C++

TOUCHE et son exploreur n'on pas ce problème d'exécution miroir, là j'ai conté 25 exécutions successivent de T explorer par TOUCHE et de TOUCHE par T explorer (25 parce que j'ai arrêté de conté...)


Sinon à tout hazard, voici la fonction execute() telle que je l'utilise dans T_EXPLOR et TOUCHE:

Code:

void execute(char *pathp) // {{{
{
    char command[128];        //buffer for the command line
    char *args[64];        //table of arguments
    int i;
    int numberofargs    =0;    //no comment
    int    execres;
    int a        =0;
    int cline_size;        //size of the command line

    cline_size=strlen(pathp);    //cline_size is set
    if (cline_size > 128)    //Error if the command line size is more than 128
    return;

    printf("nExecuting :n%sn", pathp);

    //This, below, scan the command line to find space characters
    for (i=0; i <= cline_size; i++)
    {
    if (pathp[i]!=(char)32)//if there is no space
    {
        if (a==0)//if it is the first character of the arg
        args[numberofargs]=&command[i];//copy the address of the first arg
        command[i]=pathp[i];//copy the arg in command
        a++;//a is increased till a space is found
    }
    else if (a > 0 && args[numberofargs][a - 1]!=(char)32)    //if a space is found after
                                //an argument and if the
                                //previous character wasn't a
                                //space
    {
        command[i]='';    //this end the argument
        numberofargs++;    //a new argument has been found
        a=0;        //reset the index of character of the argument
    }
    }
    args[numberofargs + 1]=NULL;    //This is for the last argument

    execres=execv(args[0], args);   //execute the progs with the argument list

    if (execres==-1)//if error
    {
    perror("ERROR while executing");
    }

    forcasio_bioskey();    //Waits for a key (just clear properly the buffer
            //if no key in it and correct a bug that only occurs on the g100)

    return;

}
// }}}

-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#13 01 Oct 2004 07:26:45

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Toujours en galère avec le C++

Moui ben c'est un appel à execv normal quoi  :P


Pensez à surveiller mes releases wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr