[c++] Blocage d'un fichier .txt

Blocage d'un fichier .txt [c++] - C++ - Programmation

Marsh Posté le 12-09-2005 à 11:59:56    

bonjour a tous et toutes, a l'heure actuel j'utilise un fichier .ini pour stocker des infos des informations et j'utilise la fonction GetPrivateProfileString()  pour récupérer les infos et WritePrivateProfileString() pour les modifier. Ce fichier peut etre atteint en meme tps par plusieurs applications et cela pose un probleme car ces fonctions ne permettent pas de bloquer le fichier le tps de la lecture/modification du .ini
 
Existe-il un moyen de bloquer l'acces en lecture d'un fichier .ini ?  
 
Existe-il un moyen de savoir si le fichier est deja ouvert ?
 
Si non, est-ce possible avec un fichier .txt ? et quelle en est la solution ?
 
merci a tous !!!


Message édité par srs le 12-09-2005 à 12:25:49
Reply

Marsh Posté le 12-09-2005 à 11:59:56   

Reply

Marsh Posté le 12-09-2005 à 20:37:54    

Extrait de MSDN Library:
 
CFile::CFile  
CFile( );
 
CFile( int hFile );
 
CFile( LPCTSTR lpszFileName, UINT nOpenFlags );
throw( CFileException );
 
Parameters
 
hFile
 
The handle of a file that is already open.
 
lpszFileName
 
A string that is the path to the desired file. The path can be relative or absolute.
 
nOpenFlags
 
Sharing and access mode. Specifies the action to take when opening the file. You can combine options listed below by using the bitwise-OR (|) operator. One access permission and one share option are required; the modeCreate and modeNoInherit modes are optional. The values are as follows:  
 
CFile::modeCreate   Directs the constructor to create a new file. If the file exists already, it is truncated to 0 length.
 
 
CFile::modeNoTruncate   Combine this value with modeCreate. If the file being created already exists, it is not truncated to 0 length. Thus the file is guaranteed to open, either as a newly created file or as an existing file. This might be useful, for example, when opening a settings file that may or may not exist already. This option applies to CStdioFile as well.
 
 
CFile::modeRead   Opens the file for reading only.
 
 
CFile::modeReadWrite   Opens the file for reading and writing.
 
 
CFile::modeWrite   Opens the file for writing only.
 
 
CFile::modeNoInherit   Prevents the file from being inherited by child processes.
 
 
CFile::shareDenyNone   Opens the file without denying other processes read or write access to the file. Create fails if the file has been opened in compatibility mode by any other process.
 
 
CFile::shareDenyRead   Opens the file and denies other processes read access to the file. Create fails if the file has been opened in compatibility mode or for read access by any other process.
 
 
CFile::shareDenyWrite   Opens the file and denies other processes write access to the file. Create fails if the file has been opened in compatibility mode or for write access by any other process.
 
 
CFile::shareExclusive   Opens the file with exclusive mode, denying other processes both read and write access to the file. Construction fails if the file has been opened in any other mode for read or write access, even by the current process.
 
 
CFile::shareCompat   This flag is not available in 32 bit MFC. This flag maps to CFile::shareExclusive when used in CFile::Open.
 
 
CFile::typeText   Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only).
 
 
CFile::typeBinary   Sets binary mode (used in derived classes only).  
Remarks
 
The default constructor does not open a file but rather sets m_hFile to CFile::hFileNull. Because this constructor does not throw an exception, it does not make sense to use TRY/CATCH logic. Use the Open member function, then test directly for exception conditions. For a discussion of exception-processing strategy, see the articleExceptions in Visual C++ Programmer's Guide.  
 
The constructor with one argument creates a CFile object that corresponds to an existing operating-system file identified by hFile. No check is made on the access mode or file type. When the CFile object is destroyed, the operating-system file will not be closed. You must close the file yourself.  
 
The constructor with two arguments creates a CFile object and opens the corresponding operating-system file with the given path. This constructor combines the functions of the first constructor and the Open member function. It throws an exception if there is an error while opening the file. Generally, this means that the error is unrecoverable and that the user should be alerted.
 
Example
 
//example for CFile::CFile
char* pFileName = "test.dat";
TRY
{
   CFile f( pFileName, CFile::modeCreate | CFile::modeWrite );
}
CATCH( CFileException, e )
{
   #ifdef _DEBUG
      afxDump << "File could not be opened " << e->m_cause << "\n";
   #endif
}
END_CATCH


Message édité par capigloo1 le 12-09-2005 à 20:39:15
Reply

Marsh Posté le 13-09-2005 à 10:37:02    

un grand merci !

Reply

Marsh Posté le 14-09-2005 à 12:07:51    

Je dirais même plus: CStdioFile puisque tu utilise un fichier texte

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed