#25 

25-04-2010 18:11:17

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

je voie pas ou est le problème o.O'
ses pas bien compliquer tout de même ... bref

je test pas mais logiquement sa donne un truc dans le genre :

Code c++ :

IFileSystem*  pfs = device->getFileSystem();
pfs->addZipFileArchive("MAJ.zip");

IFileArchive * zipfile = pfs->getFileArchive(0);
const IFileList *fileList = zipfile->getFileList();
unsigned int nbxFile = fileList->getFileCount();

for(unsigned int i = 0; i<nbxFile; i++)
{
  if(fileList->isDirectory(i))
  {
    const char* cmd = "mkdir "; // linux
    strcat(cmd,fileList->getFullFileName(i));
    system(cmd);
  }
  else
  {
    IReadFile* file = zipfile->createAndOpenFile(i);
    u32 size = file->getSize();
    char* buffer = new char[size];
    file->read((void*)buffer,size);
    IWriteFile* fichierecrit = pfs->createAndWriteFile(fileList->getFullFileName(i));
    fichierecrit->write((void*) buffer, size);
    fichierecrit->drop();
    delete[] buffer;
    file->drop();
  }
}

zipfile->drop();
pfs->drop();



a savoir que si tu a un fichier de 1Go dans ton archive le buffer seras de 1Go donc ses pas bien ta soluce, il vaut mieux utiliser iostream et écrire en "streaming" ( read n buffer size, write n buffer size )
ps : pitié trop de commentaire qui ne servent pas quoi ... :}

Hors ligne


#26 

27-04-2010 20:58:28

narugohan
Abonné
Date d'inscription: 24-03-2009
Messages: 113

Je te remercie. Sa marche bien( et dsl pour les commentaires, mais c'est pour quand je fais des tests, ensuite j'en met bcp moins xD )
Par contre, il y a encore un petit problème avec sa, c'est que les fichiers s'inscrivent pas dans le dossier voulu, enfin il faut, enfin les fichiers devant etre dans le dossier se decompresse dans le dossier principale, donc j'ai trouvé une fonction qui me permet de changer de dossier de travail

Code c++ :


changeWorkingDirectoryTo()


Le problème avec cette fonction, c'est que si un autre dossier est dans se dossier, je peux pas vraiment le savoir, et donc quand j'utilise cette fonction, bah... bien sûr, il trouve pas le dossier, donc sa reste dans le dossier que j'ai spécifier avec la fonction, et comment savoir aussi que j'ai changer de se dossier, que je suis revenu dans le dossier principale
Donc, si tu as une idée je t'en remerci, sinon c'est pas grave j'essayerai de me débrouiller, mais déjà je te remerci pour ton aide pour crée le dossier, encore merci

Dernière modification par narugohan (27-04-2010 20:59:32)

Hors ligne


#27 

28-04-2010 13:27:40

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

Bon dsl j'est pas trop le temps la ... donc va pour la methode bourin ;')

tu récupere la racine du dossier avans la boucle ( getWorkingDirectory() )
quand tu crée un dossier tu recrée une autre variable ( en dehort de la boucle ) qui stocke le chemain.

si file != folder
     changer le dossier courant par celui du dossier précédament créee
           écrire le fichier
    rechanger le dossier courant par la premier récupérer ( la racine du dossier source )

Test pis si ses pas ça faudras attendre vendredie soir que je rentre cher moi wink ... pas le temps ici !

Hors ligne


#28 

28-04-2010 14:00:37

narugohan
Abonné
Date d'inscription: 24-03-2009
Messages: 113

ok, bah je test, mais au pire je v'est attendre la méthod moins bourin, je préfère, car c'est comme même un programme à long terme que je fais, donc, je préfère, et en plus rien que pour savoir déjà, donc déjà je te remerci de prendre le temps de m'aider, encore merci

Hors ligne


#29 

01-05-2010 11:35:23

narugohan
Abonné
Date d'inscription: 24-03-2009
Messages: 113

up magun^^

Hors ligne


#30 

02-05-2010 19:01:15

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

désoler j'ai pas trop le temps =S
mais je me demandais pourquoi tu ne ferais pas un dossier plugins ou bin dans ton app ?
une petit idée a la con certes mais bon ... t'auras pas plus stable mais ses pas le mieux de mon point de vue
dedans tu mais les exécutable de unzip ( linux/windows... ) et puis il te reste plus qu'a faire un "system("./bin/unzip -d source.zip ../New\ Folder");" ?
enfin je doit dire que j'ai pas vraiment pencher sur ton problème, mais vite fait si tu veut savoir si tu est dans la racine il te suffis de récupérer la racine du "dossier+/+non dosier extrais" courant avants l'extraction et comparer avec le dossier courant que tu utilise la ou tu veut faire la comparaisons s'il sont égaux ben c'est que tu est dans la racine. wink

ps: je pense que ta comprit que je travail que sous linux ( par rapport au command ) :-°
edit: fait un petit effort, relit toi, non pas pour l'orthographe mais pour les sens de tes phrases, je m'y suit reprit a 4 fois non dit dious et dieux ses que j'ai l'habitude smile

Dernière modification par Magun (02-05-2010 19:15:15)

Hors ligne


#31 

03-05-2010 19:07:17

narugohan
Abonné
Date d'inscription: 24-03-2009
Messages: 113

Ok, je v'est essayer de voir se que tu m'a dit^^
C'est vrai que mon programme sera que sous windows pour l'instant, mais par contre, je comprend pas trop se que tu me dit quand tu parle de dossier plugin ou bin, je v'est essayer de comprendre comme meme ptdr.
         Je pense que tu as du le comprendre, c'est un jeu que je fais, avec un updater, et donc le problème qu'il me reste dans la MAJ du jeu, c'est le dezippage, c'est pour sa que sa m'enerve en même temps, car quand je voie que l'updater est casiment terminé( enfin c'est plutot un launcher qui fait updater ) et que je bloque sur le final...-_- Au début j'aurai penser que c'était simple à faire, mais apperement..... je me suis trompé xD

PS : dsl pour le sens de mes phrases, c'est vrai que quand je me relis, j'ai du mal à comprendre moi même le sens ptdr

Dernière modification par narugohan (03-05-2010 21:48:13)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
53 invités en ligne
Aucun membre connecté
RSS Feed