#1 

25-04-2010 16:11:17

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  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


#2 

27-04-2010 18:58:28

narugohan
Membres
Avatar de narugohan
Date d'inscription:
Messages: 113
IP: 83.195.232.44
Courriel

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


Hors ligne


#3 

28-04-2010 11:27:40

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 81.50.81.61
Courriel  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


#4 

28-04-2010 12:00:37

narugohan
Membres
Avatar de narugohan
Date d'inscription:
Messages: 113
IP: 83.195.232.44
Courriel

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


#5 

01-05-2010 09:35:23

narugohan
Membres
Avatar de narugohan
Date d'inscription:
Messages: 113
IP: 83.195.232.44
Courriel

up magun^^


Hors ligne


#6 

02-05-2010 17:01:15

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  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

Hors ligne


#7 

03-05-2010 17:07:17

narugohan
Membres
Avatar de narugohan
Date d'inscription:
Messages: 113
IP: 81.53.104.178
Courriel

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


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
167 invités en ligne
membre en ligne: -
RSS Feed