Bonjours, je voudrait detecter au moment ou un utilisateur ouvre un fichier si celui-ci est deja ouvert ou non par un autre utilisateur ...
Merci d'avance
Derain Didier
Bonjours, je voudrait detecter au moment ou un utilisateur ouvre un fichier si celui-ci est deja ouvert ou non par un autre utilisateur ...
Merci d'avance
Derain Didier
Bonjour,
Par quel moyen ce fichier va-t-il �tre ouvert ?
Il est en g�n�ral possible de sp�cifier qu'on veut ouvrir un fichier en Exclusif. Si l'ouverture �choue, c'est donc qu'une autre application a d�j� ouvert le fichier.
Cordialement,
Arnaud
A lire : Les r�gles du forum
C'est un fichier Texte tous simple qui est sur un srv le l'ouvre par la methode
Code : S�lectionner tout - Visualiser dans une fen�tre � part ExpList1->LoadFromFile(file);
Tu peux envisager de faire plut�t quelque chose comme ceci :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11 TFileStream * fsFile = NULL; try { fsFile = new TFileStream(file, fmOpenRead | fmShareExclusive); ExpList1->Items->LoadFromStream(fsFile); } __finally { ShowMessage("Impossible d'ouvrir le fichier. Un autre utilisateur a peut être ouvert ce fichier"); delete fsFile; }
A lire : Les r�gles du forum
Bien tenter mais........ Non.
1/ on ne peut pas lire
ExpList1->Items->LoadFromStream(fsFile);
car fsFile n'est pas un ansiStriing
2/ et si je remplace par file il me dit que le fichier et deja utiliser....
je vais encore chercher ...
Depuis quand LoadFromStream prend un AnsiString en param�tre ?
Bon j'ai pas Builder au boulot, �a aide pas pour proposer un truc correct, je regarderai �a ce soir.
A lire : Les r�gles du forum
Bonjour,
effectivement LoadfromStream prend bien un TStream en param�tre...
Par contre le constructeur de TFileStream prend bien un AnsiString comme premier param�tre. (dans notre cas c'est la variable file).
Quoi qu'il en soit, je viens de le tester, cela ne fonctionne que si le fichier est d�j� ouvert par l'application elle-m�me (dans un autre TFileStream par exemple)
Je cherche un autre moyen...
Bonjoru,
Normallement, un fichier d�j� ouvert ne devrait pas pouvoir �tre r�ouvert avec fmShareExclusive...
J'ai du mal � voir en quoi cela ne r�pond pas au besoin...
Peux-tu donner le comportement exact souhait�, et ce que fais le code ci-dessus ?
Arnaud
A lire : Les r�gles du forum
Bon d�j� j'ai bien rat� mon code. Ca m'apprendra.
Voil� un code qui fonctionne :
Cependant, si une application ouvre le fichier, mais le rel�che ensuite, il est impossible de savoir que le fichier a �t� ouvert...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 TFileStream * fsFile = NULL; try { fsFile = new TFileStream(file, fmOpenRead | fmShareExclusive); ListBox1->Items->LoadFromStream(fsFile); } catch(EFOpenError &e) { ShowMessage("Impossible d'ouvrir le fichier. Un autre utilisateur a peut être ouvert ce fichier"); } delete fsFile;
A lire : Les r�gles du forum
Partager