#include <tigcclib.h>
short testtype(char *nom,short type)
{
void *plastbyte=HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle)+((MULTI_EXPR*)HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle))->Size+1; //pointeur sur le dernier byte(octet) represantant le type de fichier
if(peek(plastbyte)==type){return 1;}
return 0;
}
short testtyperep(char *rep,short type,char *retour)
{
short i=0,k=0;
char nom[100][20];
short j = 0;
SYM_ENTRY *SymPtr = SymFindFirst (SYMSTR (rep), FO_SINGLE_FOLDER);
while (SymPtr)
{
strcpy(nom[j],rep); // c ici qu'il fô changer des trucs si tu veux qu'il te renvoi le nom de l'image ss le noim du dossier
strcat(nom[j],"\"); //
strcat (nom[j++], SymPtr->name);
SymPtr = SymFindNext ();
}
for(i=0;i<j;i++)
{
if(testtype(nom[i],type)==1)
strcpy(&retour[20*k++],nom[i]);
}
return k;
}
void getdoss(char *dossier) // renvoie l'ensemble des dossiers de la calc ici pas d'erreur
{
short i=0;
SYM_ENTRY *psym = SymFindFirst(NULL, 4);
while (psym!= NULL && i<20 )
{
strcpy(&dossier[9*i++],psym->name);
psym = SymFindNext();
}
}
void showpicture(char *nom,short x,short y) // affiche l'image nom="dossier\var" a la position x,y en partant du hau à gauche
{
SCR_RECT screen = {{0, 0, 159, 99}};
short size=((MULTI_EXPR*)HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle))->Size;
void *buffer=malloc(size);
FILE *f=fopen(nom,"rb");
fread(buffer,1,size,f);
fclose(f);
clrscr();
BitmapPut (x,y,buffer, &screen,A_NORMAL );
ngetchx();
free(buffer);
/*
//et si tu veux la hauteur et la largeur fais comme ca mais JE SUIS PAS SUR!!! , j'ai pas testé
//tu ferais mieu d'aller voar ds le topic : "ecran virutel 2 " par matthieu
//kevin explique comment y acceder
unsigned short hauteur=(unsigned short)buffer[0];
unsigned short largeur=(unsigned short)buffer[sizeof(unsigned short)];
*/
}
void _main (void)
{
short i,j,k,cpteur=0;
char *dossier=calloc(20*9,sizeof(char)); // creation du tableau qui va contenir les dossiers
getdoss(dossier);//y va chercher leur noms et pour y acceder maintenant au lieu de faire dossier[i] fait &dossier[i*9]
char *nom2=calloc(50*20,sizeof(char));//creation du tableau temporaire qui va contenir les noms des pic
char nom[50][20];for(i=0;i<50;i++)strcpy(nom[i],"");//creation du tableau final
i=0;
for(j=0;strcmp(&dossier[j*9],"")!=0;j++) //tant que on arrive pas à la fin du tableau dossier qui est caracterisié par "" donc le dernier element est &dossier[(j-1)*9]
{
k=testtyperep(&dossier[j*9],PIC_TAG,nom2); // on met dans nom2 tous les pic du dossier
for(i=0;i<k;i++)strcpy(nom[cpteur++],&nom2[20*i]); // on met ds nom les pic
}
clrscr();
for(k=0;k<j;k++) printf("%s\n",&dossier[k*9]);
ngetchx();
clrscr();
for(k=0;k<cpteur;k++) printf("%s\n",nom[k]);
ngetchx();
free(dossier);
free(nom2);
// maintenant dans le tableau nom[] se trouve toutes les images de la calc sous la forme dossier\var ok?
//t'a plus ka traiter le nom[i] pour obtenir le dossier et le nom de la var_pivc
// et sa taille est egale à cpteur
}
#include <tigcclib.h>
short testtype(char *nom,short type)
{
void *plastbyte=HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle)+((MULTI_EXPR*)HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle))->Size+1;
if(peek(plastbyte)==type){return 1;}
return 0;
}
short testtyperep(char *rep,short type,char *retour,short t)
{
short j = 0;
SYM_ENTRY *SymPtr = SymFindFirst (SYMSTR (rep), FO_SINGLE_FOLDER);
char buffer[20];
while (SymPtr)
{
strcpy(buffer,rep);
strcat(buffer,"\");
strcat (buffer, SymPtr->name);
if(testtype(buffer,type)==1)strcpy(&retour[20*(t+j++)],buffer);
SymPtr = SymFindNext ();
}
return j+t;
}
void getdoss(char *dossier)
{
short i=0;
SYM_ENTRY *psym = SymFindFirst(NULL, 4);
while (psym!= NULL && i<20 )
{
strcpy(&dossier[9*i++],psym->name);
psym = SymFindNext();
}
}
void showpicture(char *nom,short x,short y)
{
SCR_RECT screen = {{0, 0, 159, 99}};
short size=((MULTI_EXPR*)HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle))->Size;
void *buffer=malloc(size);
FILE *f=fopen(nom,"rb");
fread(buffer,1,size,f);
fclose(f);
BitmapPut (x,y,buffer, &screen,A_NORMAL );
free(buffer);
}
void _main (void)
{
short i=0,taille=0;
char *dossier=calloc(20*9,sizeof(char));
getdoss(dossier);
char *nom2=calloc(50*20,sizeof(char));
while(strcmp(&dossier[9*i],"")!=0)
taille=testtyperep(&dossier[9*i++],PIC_TAG,nom2,taille);
//pour acceder aux elements de nom2 tu fait comme cela : &nom2[20*i] (pour acceder à l'élement i )
//et la taille du tableau (qui ne doit JAMAIS depasser 50 sous peine de bug) se trouve dans "taille"
for(i=0;i<taille;i++)
{
clrscr();
showpicture(&nom2[i*20],5,10);
ngetchx();
}
free(dossier);
free(nom2);
}cerede2000 :
et aussi avec la fonction si il n'y a pas de pic ca plante que faut il mettre pour eviter cela merci encore 1000 fois
/*
//et si tu veux la hauteur et la largeur fais comme ca mais je suis pas sur
//tu ferais mieu d'aller voar ds le topic : "ecran virutel 2 " par matthieu
//kevin explique comment y acceder
unsigned short hauteur=(unsigned short)buffer[0];
unsigned short largeur=(unsigned short)buffer[sizeof(unsigned short)];
*/
void showpicture(char *nom,short x,short y,short attr)
{
SCR_RECT screen = {{0, 0, 160, 100}};
short size=((MULTI_EXPR*)HeapDeref(SymFindPtr(SYMSTR (nom),0)->handle))->Size;
void *buffer=malloc(size);
FILE *f=fopen(nom,"rb");
fread(buffer,1,size,f);
fclose(f);
BitmapPut (x,y,buffer, &screen,attr);
short hauteur=*(short*)buffer;
short largeur=1[(short*)buffer];
free(buffer);
}
comment tu peux faire du C ss rien connaitre des pteurs ???
bidoo :Tu n'as pas plus illisible que ça ?
autant pour moi![]()
1[(short*)buffer];essaie plutot ca :short hauteur=*(short*)buffer; short largeur=
(Je reconnais tout de suite le style integer[array].
)