#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); }
bidoo :Tu n'as pas plus illisible que ça ?
autant pour moi![]()
1[(short*)buffer];essaie plutot ca :short hauteur=*(short*)buffer; short largeur=