Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

CFile problem sa citanjem vec otvorenog fajla

[es] :: C/C++ programiranje :: CFile problem sa citanjem vec otvorenog fajla

[ Pregleda: 1641 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
93.86.128.*



+1 Profil

icon CFile problem sa citanjem vec otvorenog fajla19.11.2008. u 10:17 - pre 187 meseci
Imam sledecu situaciju. Treba da procitam neke podatke iz .txt fajla i da kasnije upisem neke nove podatke u isti fajl.
Ukoliko je fajl zatvoren, sve radi kako treba, ali ako fajl neko otvori pre, onda mi izbacuje poruku:
Encountered a sharing violation while accessing putanja_do_fajla

Fajl citam sledecom naredbom:
Code:
pFileOld = new CFile(filePath, CFile::modeRead);


Ima li neko ideju kako bi moglo (i da li bi moglo) da se detektuje da je fajl otvoren i ako jeste da se programski zatvori
ili vec neku drugu ideju kako bi pomenuti problem mogao da se resi?

Unapred zahvalan.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: CFile problem sa citanjem vec otvorenog fajla19.11.2008. u 12:09 - pre 187 meseci
Citat:
marko_81: Imam sledecu situaciju. Treba da procitam neke podatke iz .txt fajla i da kasnije upisem neke nove podatke u isti fajl.
Ukoliko je fajl zatvoren, sve radi kako treba, ali ako fajl neko otvori pre, onda mi izbacuje poruku:
Encountered a sharing violation while accessing putanja_do_fajla

Fajl citam sledecom naredbom:
Code:
pFileOld = new CFile(filePath, CFile::modeRead);


Ima li neko ideju kako bi moglo (i da li bi moglo) da se detektuje da je fajl otvoren i ako jeste da se programski zatvori
ili vec neku drugu ideju kako bi pomenuti problem mogao da se resi?

Unapred zahvalan.


Moglo bi da se detektuje da li je fajl vec otvoren ali ako nije otvoren od strane tvoje aplikacije onda ne moze da se programski zatvori.

Jedan od nacina kako detektovati da li je fajl ekskluzivno otvoren.

Code:
bool file_is_open_exclusive(const char* fname) {
    HANDLE h = ::CreateFile( fname
                            ,GENERIC_WRITE
                            ,0
                            ,NULL
                            ,OPEN_ALWAYS
                            ,FILE_ATTRIBUTE_NORMAL
                            ,NULL
                            );
    DWORD lerr = ::GetLastError();
    bool opened = (h != INVALID_HANDLE_VALUE);
    if (opened) {
        ::CloseHandle(h);
        h = NULL;
    }

    return !opened && (lerr == ERROR_SHARING_VIOLATION);
}



Tko leti vrijedi
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-1.sezampro.yu.



+395 Profil

icon Re: CFile problem sa citanjem vec otvorenog fajla19.11.2008. u 12:22 - pre 187 meseci
Mozes i ovako s obzirom da koristis MFC :
Code:

int GetFileStatus (CString filePath) 
{
int status = CFileException::none; 

try 
{
   pFileOld = new CFile(filePath, CFile::modeRead);
   pFileOld->Close() ; 
}
catch (CFileException* pFileExc) 
{
   switch (pFileExc->m_cause) 
    { 
           case   CFileException ::sharingViolation : 
             status = CFileException ::sharingViolation ; 
            break ; 
           case CFileException::accessDenied : 
            status = CFileException ::accessDenied ; 
            break ; 
            ...itd .. 

     } 

pFileExc->Delete () ; 

}

retrurn status ; 
}

Viva lollapalooza
 
Odgovor na temu

[es] :: C/C++ programiranje :: CFile problem sa citanjem vec otvorenog fajla

[ Pregleda: 1641 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.