diff --git a/include/applicat.cpp b/include/applicat.cpp index 4aa101d6a..1a571c86e 100755 --- a/include/applicat.cpp +++ b/include/applicat.cpp @@ -416,7 +416,10 @@ void TApplication::terminate() do_events(); if (use_files()) + { + _used_files.destroy(); free_global_vars(); // Distruzione variabili globali + } printer_destroy(); @@ -870,6 +873,18 @@ void TApplication::on_firm_change() void TApplication::on_config_change() {} +void TApplication::open_files(int logicnum, ...) +{ + va_list marker; + va_start(marker, logicnum); + while (logicnum > 0) + { + CHECKD(_used_files.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum); + _used_files.add(new TLocalisamfile(logicnum), logicnum); + logicnum = va_arg(marker, int); + } +} + /////////////////////////////////////////////////////////// // The Skeleton application! /////////////////////////////////////////////////////////// diff --git a/include/applicat.h b/include/applicat.h index e14547b14..3fd14f36e 100755 --- a/include/applicat.h +++ b/include/applicat.h @@ -46,6 +46,8 @@ class TApplication TString _title; // @cmember:(INTERNAL) Nome del modulo principale applicazione TString _module_name; + // @cmember:(INTERNAL) Elenco dei files + TArray _used_files; // @cmember:(INTERNAL) Codice della ditta long _savefirm; @@ -180,6 +182,8 @@ public: bool add_menu(TString_array& menu, MENU_TAG id = 0); // @cmember Elimina il menu'
(Ritorna se ce l'ha fatta???)
bool remove_menu(MENU_TAG id);
+ // Aggiunge uno o piu' file a quelli aperti
+ void open_files(int logicnum, ...);
// @cmember Costruttore
TApplication();
diff --git a/include/codeb.c b/include/codeb.c
index 7f21849e9..62273442d 100755
--- a/include/codeb.c
+++ b/include/codeb.c
@@ -399,6 +399,22 @@ int DB_recall(int handle)
return(0);
}
+/*-------------------------------------------------------------------------
+
+ --------------------------------------------------------------------------*/
+int DB_flush(int handle)
+{
+ int rt;
+
+ while ((rt = d4flush(dbdata[handle])) == r4locked)
+#ifdef DBG
+ yesnofatal_box("Sono in attesa nella DB_flush");
+#else
+ u4delay_sec();
+#endif
+ return rt;
+}
+
/*-------------------------------------------------------------------------
riscrive il record attuale
--------------------------------------------------------------------------*/
@@ -1628,7 +1644,7 @@ int DB_delkey(int handle, char* key, long recno)
{
while ((rt=i4lock(i)) == r4locked)
#ifdef DBG
- yesnofatal_box("Sono in attesa nella DB_delkeys");
+ yesnofatal_box("Sono in attesa nella DB_delkey");
#else
u4delay_sec();
#endif
diff --git a/include/confapp.h b/include/confapp.h
index 8baf26fe1..1a3547bcc 100755
--- a/include/confapp.h
+++ b/include/confapp.h
@@ -63,11 +63,6 @@ class TConfig_application : public TApplication
// @cmember:(INTERNAL) Controlla il menu' (vedi