IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

probleme lors de louverture d'un fichier


Sujet :

C++/CLI

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut probleme lors de louverture d'un fichier
    comment je pourrais créer un timer de 10 secondes par exemples
    merci

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut voilà mon probleme !
    En fait j'y ai pensé parce que j'ai un problème :

    voila j'execute une méthode qui me decompress un fichier, le fichier et le resultat d'un decryptage
    donc quand je decrypte puis je decompress (file1->file2), il me genere une exception comme quoi le fichier file 1 est utilisé par un autre process, pourtant je ferme le stream lors du decryptage.

    pour etre sur j'excute en en utilisant le debug pas par pas et ca marche nikel ! mais quand je reviens au mode normal ca revient

    mes des fois ca marche dans le mode normal donc je comprend pas ce que je dois faire?

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    montre voir un code minimal qui reproduit le problème

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    //Decryption
    private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
     
     if(textBox1->Text=="") System::Windows::Forms::MessageBox::Show("source  not filled!");
     
    if(textBox2->Text=="") System::Windows::Forms::MessageBox::Show(" destination not filled!");
     
    if(textBox3->Text=="") System::Windows::Forms::MessageBox::Show("password not filled!");
     
    if((!(textBox1->Text==""))&&(!(textBox2->Text==""))&&(!(textBox3->Text=="")))
    {
    			 //the file to be decrypted
    			val1 = textBox1->Text;
    			//the destination 
    			val2 = textBox2->Text;
    			//the password
    			val4 = textBox3->Text;
     
     
     
     
    			 //val3 = val1->Replace("\\","\\\\") ;
    			 //val5 = val2->Replace("\\","\\\\") ;
     
    			//open the file to be decrypted
    			 FileStream ^fs = gcnew FileStream(val1, FileMode::Open);
    			 BinaryReader ^br = gcnew BinaryReader(fs);
     
    			 //create the destination
    			 if (File::Exists(val2)) File::Delete(val2);
    			 FileStream ^fsw = gcnew FileStream(val2,FileMode::CreateNew);
    			 BinaryWriter ^bw = gcnew BinaryWriter(fsw);
     
    	try
     
    	{
    		//decrypting the file 
     
    		bw->Write(Decrypter(br->ReadBytes((int)fs->Length),val4));
    	}
    	catch (Exception^)
    	{
    	}
    	finally
    	{
    		br->Close();
    		fs->Close();
    		bw->Close();
    		fsw->Close();
     
    	}
     
     
     
    	textBox3->Clear();
     
     
    	Form3::Close();
     
    }
     
    //decompression
     
    String ^ t1 = textBox1->Text;
    String ^ t2 = textBox2->Text;
     
    List<ListViewItem^>^ mylistof1 = gcnew List<ListViewItem^>(); 
    String ^q =t2;
    // the user forgot to fill the directory placement		 
    if (t1=="") System::Windows::Forms::MessageBox::Show("please give a directory placement!" );
     
    // the user forgot to fill the file destination
    if (t2=="") System::Windows::Forms::MessageBox::Show("please give a file destination!" );
     
     
     
     
    // the user has filled the directory placement and the file destination
    if ((!(t1==""))&& (!(t2=="")))
    {
    	listView3->Clear();
     
     
    	// decompressing the compressed file
    	DecompressDir(t1, t2);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    ///fonction pour decompresser
    
     void DecompressDir(String ^dirSource, String ^ dirDestination)
    {
    	// creating the destination directory
    	DirectoryInfo^ di = Directory::CreateDirectory(dirDestination);
    	// creating the temporory directory
    	if (Directory::Exists("C:\\Temp\\eramahy"))
    	{
    	deletdir("C:\\Temp\\eramahy");
    	Directory::Delete("C:\\Temp\\eramahy");
    	}
    	DirectoryInfo^ dim = Directory::CreateDirectory("C:\\Temp\\eramahy");
    	
    	
    	
    	String ^path = dirSource;
    	String ^pathnew = dirDestination;
    
    			//Initializing the second list view
    			listView3->View = View::Details;
    			listView3->LabelEdit = true;
    			listView3->AllowColumnReorder = true;
    			listView3->CheckBoxes = true;
    			listView3->FullRowSelect = true;
    			listView3->GridLines = true ;
    			listView3->Sorting = SortOrder::Ascending;
    		
    /*
    			if(File::Exists("C:\\Temp\\testt")) File::Delete("C:\\Temp\\testt");
    			File::Copy(dirSource,"C:\\Temp\\testt");
    			File::Delete(dirSource);
    			File::Copy("C:\\Temp\\testt",dirSource);
    			File::Delete("C:\\Temp\\testt");*/
    	//open the compressed file
    	FileStream ^fs = gcnew FileStream(dirSource, FileMode::Open);
    	BinaryReader ^br = gcnew BinaryReader(fs);
    	//reading the original structure of the compressed data
    		String^a = br->ReadString();

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    bon ... ton code est pas minimal du tout ...

    ce que tu veux faire, c'est décrypter un fichier et enchainer sur une décompression, c'est bien ca ?

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    en fait il y a un boutton pour decrypter , donc apres le decryptage j'ai le resultat : "file decrypted"
    et apres je veux decompresser le fichier "file decrypted" en fichier decompressé. l'exception se genere lorsque je clik sur decompress il me dit que le fichier "file decrypted" est utilisé par un autre process

    pourtant j'ai vérifié le stream est bien fermé à la fin du decryptage ..

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    je suis quasi-sur que le stream prend du temps pour se fermer

    parce que quand j'excute
    je decrypte puis j'attend 20 secondes et je decompresse ca marche à tous les coups.
    quand je fait ca trop vite, il me dit que le fichier est utilisé par un autre process ..

    pour vérifier je mets un point d'arret juste avant decompress , il me dit clair que le fichier est libre "fs: undefined value" où fs et le stream , apres je clik sur step out et ca marche !
    donc il me faut un timer (comment je peux faire un timer de 20s ?)
    sinon je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while(i<20000)
    {
    i++;
    }
    les 20000 ca corresspond à combien de secondes?

    merci

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    si tu veux attendre qques secondes, utilise System::Threading::Thread::Sleep(2000); (attends 2 secs)
    mais bon, c'est pas une bonne méthode

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    je sais mais voilà je comprend pas pourquoi j'ai ce problème
    la seule explication loqique est que quand je fais fs->Close le fichier prend du temps pour se fermer...

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    j'ai essayé d'enchaine plusieurs lecture, fermeture, etc ... la seule explication que je vois, c'est que tu te trompes qqupart

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 326
    Par défaut
    supposons que je me trompe, ca marchera jamais , mais là le problème c'est que ca marche déjà step by step et quand j'attend un peux (j attend 10secondes )ca marche

    voilà ce que ce que je fais : je compresse un repertoire dans un fichier apres je crypte le fichier apres je le decrypte et à la fin je decompress et c'est lors de cette derniere etape qu'il me dit fichier utilisé par un autre process ..

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ben écoute, j'ai fait exactement la meme chose pour tester, et ca marche impec.
    Mais tu peux faire une pause, c'est sympa ... n'oublie pas de mettre une animation

  13. #13
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    nan, mais blague à part,
    ca doit venir d'autre chose qui accède au fichier, comme un anti-virus par exemple

  14. #14
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    lu
    je pourai pas te donner la syntaxe comme ca (moi je rame un peut....)
    mais tu doit pouvoir te servir de l'exeption pour faire un test:
    tant que decompressé "file decrypted" renvoie une erreur "utilisé par un autre process", attendre 0,5 seconde

    si un brave pouvait en faire petit code...

Discussions similaires

  1. Probleme lors d'une lecture de fichier XML VB2010
    Par nimbus629 dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/06/2011, 12h51
  2. Réponses: 0
    Dernier message: 24/08/2008, 10h56
  3. Probleme lors d'impression de fichier pdf
    Par pierrot10 dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/03/2007, 19h49
  4. [VBA] probleme lors de la creation d'un fichier
    Par tiotel dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 15h00
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo