diff --git a/include/isam.cpp b/include/isam.cpp index 8f0de4da8..357fab22e 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -1056,6 +1056,18 @@ int TBaseisamfile::_close() return err; } +int TBaseisamfile::is_valid() +{ // Ritorna 0 se il file puo' essere aperto senza errori + CHECKS(filehnd() == NULL, "File already open ", (const char*)filename()); + int err = NOERR; + getisfd(_isamfile,num()); + if ((filehnd()->fhnd = DB_open(filehnd()->d->SysName,0)) >= 0) + DB_close(filehnd()->fhnd); + else + err = get_error(filehnd()->fhnd); + relisfd(_isamfile); + return err; +} /////////////////////////////////////////////////////////// // TLocalisamfile diff --git a/include/isam.h b/include/isam.h index c4b8c71f0..8c8b2c85a 100755 --- a/include/isam.h +++ b/include/isam.h @@ -208,7 +208,7 @@ protected: void recover(); int _open(unsigned int mode = _manulock); // Apre isam file con lock - int _close(); + int _close(); const char* filename() const; public: @@ -245,6 +245,7 @@ public: void indexon(); // Accende gli indici void indexoff(); // Spegne gli indici int status() const { return _lasterr; } // Ritorna _lasterr + int is_valid(); // Ritorna 0 se il file e' valido TRectype& curr() const {return *_current;} // Ritorna puntatore a record corrente bool eof() const { return status() == _iseof || status() == _isemptyfile;} // Vero se siamo a fine file bool bof() const { return status() == _isbof || status() == _isemptyfile;} // Vero se siamo a inizio file