Modifiche effettuate per far ripartire automaticamente una conversione
interrotta per svariate cause. (GPF, Insufficient memory ecc.). git-svn-id: svn://10.65.10.50/trunk@3002 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
34df76ebf1
commit
eb24e03b95
37
ba/ba0.cpp
37
ba/ba0.cpp
@ -32,7 +32,6 @@ public:
|
||||
virtual ~TPicture_mask() {}
|
||||
};
|
||||
|
||||
|
||||
TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage& image)
|
||||
: TMask(name, 1, dx, dy), _image(image)
|
||||
{
|
||||
@ -621,9 +620,43 @@ bool TMenu_application::menu(MENU_TAG)
|
||||
if (get_firm() == 0 && module.compare("cg", 2, TRUE) == 0) // Chiede ditta se necessario
|
||||
set_firm();
|
||||
prefix().set(NULL); // Chiude prefix
|
||||
TFilename opt_cmd(option);
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
opt_cmd.lower();
|
||||
#endif
|
||||
bool maintenance_app = (opt_cmd == "ba1 -0" || opt_cmd == "ba1");
|
||||
TExternal_app a(option);
|
||||
|
||||
a.run();
|
||||
if (maintenance_app)
|
||||
{
|
||||
FILE* fp;
|
||||
char line1[16],line2[16];
|
||||
if (opt_cmd == "ba1") opt_cmd << " -0";
|
||||
opt_cmd << " C";
|
||||
|
||||
while (fexist("conv.his"))
|
||||
{
|
||||
fp = fopen("conv.his","r");
|
||||
fgets(line1,15,fp);
|
||||
fclose(fp);
|
||||
// Ora aspetta...
|
||||
time_t old_time ;
|
||||
time( &old_time) ;
|
||||
while ( time( (time_t *) 0 ) <= old_time ) do_events();
|
||||
TExternal_app auto_conv(opt_cmd);
|
||||
auto_conv.run();
|
||||
fp = fopen("conv.his","r");
|
||||
if (fp != NULL)
|
||||
{
|
||||
fgets(line2,15,fp);
|
||||
fclose(fp);
|
||||
}
|
||||
else strcpy(line2,"");
|
||||
if (strcmp(line1,line2) == 0)
|
||||
if (!yesno_box("La conversione non sembra procedere. Continuo?"))
|
||||
break;
|
||||
}
|
||||
}
|
||||
prefix().set("DEF"); // Aggiorna prefix
|
||||
}
|
||||
}
|
||||
|
@ -578,10 +578,10 @@ void TManutenzione_app::update_dir()
|
||||
const int items = (int)d.eod();
|
||||
|
||||
s = "Aggiornamento direttorio ";
|
||||
if (is_com) s << "comune";
|
||||
else s << " della ditta " << atol (pref) <<".";
|
||||
if (is_com) s << "comune.";
|
||||
else s << "della ditta " << atol (pref) <<".";
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes.";
|
||||
s << " Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes.";
|
||||
#endif
|
||||
|
||||
TProgind p(items ? items : 1, s, FALSE, TRUE, 70);
|
||||
@ -799,11 +799,11 @@ void TManutenzione_app::convert_dir()
|
||||
|
||||
TString s(256);
|
||||
s = "Aggiornamento archivi ";
|
||||
if (is_com) s << "comuni";
|
||||
else s << " della ditta " << atol (pref) << ".";
|
||||
if (is_com) s << "comuni.";
|
||||
else s << "della ditta " << atol (pref) << ".";
|
||||
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes.";
|
||||
s << " Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes.";
|
||||
#endif
|
||||
|
||||
TProgind p(items ? items : 1, s, FALSE, TRUE, 70);
|
||||
@ -833,6 +833,19 @@ void TManutenzione_app::convert_dir()
|
||||
TSystemisamfile f(i);
|
||||
|
||||
f.update(r);
|
||||
if (f.status() == 8) // cio' significa che e' accaduto quasi l'irreparabile...
|
||||
{
|
||||
{
|
||||
TLocalisamfile u(LF_USER);
|
||||
u.zero(); u.put("USERNAME","PRASSI");
|
||||
if (u.read() == NOERR)
|
||||
{
|
||||
u.zero("AUTSTR");
|
||||
u.rewrite();
|
||||
}
|
||||
}
|
||||
stop_run();
|
||||
}
|
||||
d.get(i, _nolock, _nordir, _sysdirop);
|
||||
bool to_create = (is_com ? d.is_com() : d.is_firm());
|
||||
|
||||
@ -924,20 +937,21 @@ void TManutenzione_app::update()
|
||||
|
||||
TString80 s("Conversione archivi ditte.");
|
||||
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes.";
|
||||
#endif
|
||||
|
||||
TProgind p(ditte.items() ? ditte.items() : 1, s, TRUE, TRUE, 70);
|
||||
|
||||
p.setstatus(1);
|
||||
|
||||
TString mxs;
|
||||
|
||||
for (ditte.first(); !ditte.eof(); ditte.next())
|
||||
{
|
||||
p.addstatus(1);
|
||||
const long codditta = ditte.get_long("CODDITTA");
|
||||
const TRecnotype rec = ditte.recno();
|
||||
|
||||
const long codditta = ditte.get_long("CODDITTA");
|
||||
mxs = s;
|
||||
#if XVT_OS == XVT_OS_WIN
|
||||
mxs << " Ditta " << codditta << ". Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes.";
|
||||
#endif
|
||||
p.addstatus(1);
|
||||
p.set_text(mxs);
|
||||
if (codditta > _history_firm && prefix().exist(codditta))
|
||||
{
|
||||
ditte.close();
|
||||
|
Loading…
x
Reference in New Issue
Block a user