From ed129ca42eb39eb5846650c13a3fcb6671cf6b68 Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 3 Jul 2003 08:43:59 +0000 Subject: [PATCH] Patch level :2.0 518 Files correlati :libs Ricompilazione Demo : [ ] Commento :AO20041 (carico/scarico files: aggiornamento EOD/EOX) git-svn-id: svn://10.65.10.50/trunk@11309 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/files.cpp | 5 +++++ include/files.h | 2 ++ include/isam.cpp | 23 +++++++++++++++++++++++ include/isam.h | 2 ++ 4 files changed, 32 insertions(+) diff --git a/include/files.cpp b/include/files.cpp index 2e739f2eb..5b270ed90 100755 --- a/include/files.cpp +++ b/include/files.cpp @@ -251,6 +251,11 @@ void TDir::set_eox (const RecNoType eox) _dir->EOX = eox; } +void TDir::set_eod (const RecNoType eod) +{ + _dir->EOD = eod; +} + void TDir::set (const char *name, const RecNoType eod, const RecNoType flag, const char *des, const char *calc) { strncpy (_dir->SysName, name, sizeof (_dir->SysName)); diff --git a/include/files.h b/include/files.h index fe92d2d06..2daeee376 100755 --- a/include/files.h +++ b/include/files.h @@ -109,6 +109,8 @@ public: void set_name (const char * name); // @cmember Setta l'EOX del file void set_eox(const RecNoType eox); + // @cmember Setta l'EOD del file + void set_eod(const RecNoType eod); // @cmember Setta la lunghezza del file void set_len(const UINT16 len); // @cmember Setta il file con i parametri passati diff --git a/include/isam.cpp b/include/isam.cpp index 4ea577ad2..7c38018a7 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -2293,6 +2293,24 @@ int TSystemisamfile::packindex( return err; } +void TSystemisamfile::update_file() +{ + TFilename fname; + int logicnum = _logicnum; + int isam_handle = prefix().open_isamfile(logicnum, fname, FALSE, 1); + if (isam_handle > 0) + { + TCodeb_handle cb_handle = prefix().get_handle(isam_handle, 1); + const TRecnotype n = DB_reccount(cb_handle); //numero di elementi del file + + TDir dir; + dir.get(_logicnum, _lock, _nordir, _sysdirop); + dir.set_eox(n); + dir.set_eod(n); + dir.put(_logicnum, _nordir, _sysdirop); + } +} + int TSystemisamfile::pack(bool vis, bool ask) { int err = packfile(vis); @@ -2508,6 +2526,11 @@ int TSystemisamfile::load( close(); setstatus(err); + +//aggiorna lo sheet con i nuovi valori di EOX EOD caricati + if (err == NOERR) + update_file(); + return err; } diff --git a/include/isam.h b/include/isam.h index d278f8ddf..df369e1b8 100755 --- a/include/isam.h +++ b/include/isam.h @@ -584,6 +584,8 @@ class TSystemisamfile : public TIsamfile // @cmember:(INTERNAL) Esegue la conversione sui record del file (utilizzando le espressione definite // in fconv.ini) void makelc(TRectype& rec); + // @cmember aggiorna l'eod e l'eox del file + void update_file(); // @access Public Member public: