none
Informations supplémentaires : Le processus ne peut pas accéder au fichier car il est en cours d'utilisation par un autre processus. RRS feed

  • Discussion générale

  • Bonjour,

    je ss débutante en c++.Net,mon code est dans le c++ win32 je veu le convertir en.Net pour faire une interface avec winforms,jai pas du temp et je sais pa comment faire .jai convertit deja 4 fonctions mai je ss vraiment coicé dans la 5eme je veus lire d'un fichier qui contient dans chaque ligne une structure de un mot string et son numero.puis je ferme ce fichier et je le reouvrir en mode ecriture pour ecrire meme chose un mot et son numero (ce fichier est un dictionnaire ) ,donc jai essayé de convertir la fonction en c++.Net comme suit mai jai pa reussie tjr l'erreur Informations supplémentaires : Le processus ne peut pas accéder au fichier 'c:\Documents and Settings\sarah\Bureau\versionfinfin\versionfin\dict.txt', car il est en cours d'utilisation par un autre processus.
    apparu.svp svp aide moi et dis moi si cest justece que jai fait comme conversions.merci

    ref struct struct_dict {String ^word; long num_word;} ;
    
    long num=0;
    
    
    
    long indexation::build_dict(String ^mot)
    
    {//struct_dict dict;
    
    	//long num=0;
    
    long nbr;
    
    struct_dict ^ h_dict = gcnew struct_dict;
    
    String ^word;
    
    BinaryReader^ f5= gcnew BinaryReader( File::Open( "dict.txt",FileMode::Open ) );
    
    {while((f5->PeekChar()!=-1)&&(word=f5->ReadString())&&(nbr= f5->Read())&& mot != word )
    
    {
    
    h_dict->word=word;
    
    h_dict->num_word= nbr;
    
    }
    
    
    
    if(mot == word) return(nbr);
    
     
    
    if(f5->PeekChar()==-1)
    
    {
    
    
    
    BinaryWriter^ f5= gcnew BinaryWriter(File::Open( "dict.txt", FileMode::Append));
    
    {
    
    h_dict->word=mot;num++;
    
    h_dict->num_word=num;
    
    f5->Write(h_dict->word);
    
    f5->Write('\n');
    
    f5->Write(h_dict->num_word);
    
    //f5->Close();
    
    }f5->Close();
    
    }
    
    
    
    }f5->Close();
    
    return(h_dict->num_word);
    
    }
    
    
    jai aucune aidé svp aide moi
    mardi 22 juin 2010 00:02

Toutes les réponses

  • Bonjour,

    Il semblerait que vous utilisez la même variable (f5) pour lire et écrire dans le fichier. Déclarez une autre variable pour l'écriture du fichier.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mardi 22 juin 2010 07:13
    Modérateur
  • Bonjour,

    jai declaré une autre variable mai c la meme chose car cest le meme fichier.

    est ce c'est comme ca qu'on lit un mot puis son numero dans la meme ligne dans binaryreader?

    et comment faire un saut de ligne dans ce type de fichier?

    merci

    mardi 22 juin 2010 07:27
  • Bonjour,

    Pour la lecture vous devez autoriser l'ouverture du fichier en lecture et écriture :

    gcnew BinaryReader( File::Open( "dict.txt",FileMode::Open, FileAccess::Read, FileShare::ReadWrite ) );

    même chose avec l'écriture :

    gcnew BinaryWriter( File::Open( "dict.txt",FileMode::Open, FileAccess::Write, FileShare::ReadWrite ) );

    est ce c'est comme ca qu'on lit un mot puis son numero dans la meme ligne dans binaryreader?
    Est-ce que votre numéro est au format texte ou binaire ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mardi 22 juin 2010 09:21
    Modérateur
  • Bonjour,

     

    Fleurs, comme nous avons déjà discuté dans ce thread  , on a des différences entre les types long de C++ natif et .NET, aussi entre les classes std ::string et System.String. Comme M. Tourreau suggère par sa question, il est important de savoir si cette paire numéro-texte est en format texte ou binaire. S’il s’agit seulement du texte, il est facile à lire ligne par ligne dans le fichier et séparer la partie numéro de la partie texte. S’il s’agit d’un format binaire, il faut convertir la sérialisation binaire de la structure de l’application win32 pour la stocker dans une structure .NET. Si vous avez des difficultés à comprendre le code C++ natif, n’hésitez pas de poster ici la partie qui écrit la structure dans le fichier, pour qu’on puisse l’étudier.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    Café des usages

     

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     

     

    mercredi 23 juin 2010 14:31
  • Bonjour,

     

    Fleurs, êtes-vous encore intéressée dans le suive de ce thread ? Une clarification concernant le format du numéro serait utile pour trouver une solution.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation, WPF

     

     

    Café des usages

     

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     

    lundi 28 juin 2010 08:48
  • C++.net donc garbage collection de tous les objets managés.

    Avec "File::Open( "dict.txt",FileMode::Open )", vous créez un objet FileStream qui contient un verrou sur le fichier "dict.txt". Pour que cet objet libère ce verrou, il faut "deleter" cet objet.

    Regardez les exemples C++ sur cette page :

    http://msdn.microsoft.com/fr-fr/library/system.io.filestream(v=VS.80).aspx


    Paul Bacelar, Ex - MVP VC++
    lundi 28 juin 2010 17:34
    Modérateur