Modifica a BA1, aggiunti alcune features:
- creazione automatica di dir.gen e trc.gen (vuoti) in caso non esistano nel direttorio PRASSI. - aggiunta possibilita' di caricare tracciati nuovi oltre il numero prefissato da dir.gen. - corretti alcuni comportamenti anomali in conversione archivi (aggiunti piu' casi di controllo in cui il programma poteva piantarsi) Sono pronto anche per la crocifissione in sala mensa... git-svn-id: svn://10.65.10.50/trunk@4639 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									0c393f206c
								
							
						
					
					
						commit
						f35f78fd63
					
				
							
								
								
									
										222
									
								
								ba/ba1100.cpp
									
									
									
									
									
								
							
							
						
						
									
										222
									
								
								ba/ba1100.cpp
									
									
									
									
									
								
							@ -1,5 +1,7 @@
 | 
				
			|||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <ctype.h>
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					#include <fcntl.h>
 | 
				
			||||||
 | 
					#include <share.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Serve per GetFreeSpace
 | 
					// Serve per GetFreeSpace
 | 
				
			||||||
#define XVT_INCL_NATIVE
 | 
					#define XVT_INCL_NATIVE
 | 
				
			||||||
@ -33,6 +35,8 @@ struct direct
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define History_file "conv.his"
 | 
					#define History_file "conv.his"
 | 
				
			||||||
 | 
					#define Dir_file     "dir.gen"
 | 
				
			||||||
 | 
					#define Trc_file     "trc.gen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TManutenzione_app : public TApplication
 | 
					class TManutenzione_app : public TApplication
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -67,7 +71,7 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0), _level(0) {}
 | 
					  TManutenzione_app();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HIDDEN void build_filelist(const char *path, TArray & list)
 | 
					HIDDEN void build_filelist(const char *path, TArray & list)
 | 
				
			||||||
@ -113,6 +117,52 @@ HIDDEN void build_filelist(const char *path, TArray & list)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TManutenzione_app::TManutenzione_app() : _browse(NULL), _rec(NULL), _mask(NULL), _firm(0), _level(0)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if (!fexist(Dir_file)) // controlla l'esistenza dei direttori standard (dir.gen e trc.gen)
 | 
				
			||||||
 | 
					  {                      // vengono creati se non esistono
 | 
				
			||||||
 | 
					    TDir d;
 | 
				
			||||||
 | 
					    FileDes* fd = d.filedesc();
 | 
				
			||||||
 | 
					    int handle;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    strcpy(fd->SysName,"$dir.gen");
 | 
				
			||||||
 | 
					    fd->LenR =160;
 | 
				
			||||||
 | 
					    fd->EOD = fd->EOX = 1L;
 | 
				
			||||||
 | 
					    fd->Flags = 0;
 | 
				
			||||||
 | 
					    strcpy(fd->Des ,"Directory");
 | 
				
			||||||
 | 
					    strcpy(fd->FCalc,"0");
 | 
				
			||||||
 | 
					    strcpy(fd->GenPrompt,"");
 | 
				
			||||||
 | 
					#if XVT_OS == XVT_OS_WIN    
 | 
				
			||||||
 | 
					    if ((handle = sopen(Dir_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE)) != -1)
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
					    if ((handle = open(Dir_file, O_RDWR|O_BINARY|O_CREAT,0666)) != -1)
 | 
				
			||||||
 | 
					#endif    
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (write( handle, (char*)fd, sizeof(FileDes)) == -1)
 | 
				
			||||||
 | 
					        fatal_box("Impossibile scrivere il file dir.gen per dati standard: errore %d",errno);
 | 
				
			||||||
 | 
					      close(handle);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else fatal_box("Impossibile creare il file dir.gen per dati standard: errore %d",errno);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (!fexist(Trc_file))
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TTrec r;
 | 
				
			||||||
 | 
					    RecDes* rd = r.rec();
 | 
				
			||||||
 | 
					    int handle;
 | 
				
			||||||
 | 
					#if XVT_OS == XVT_OS_WIN    
 | 
				
			||||||
 | 
					    if ((handle = sopen(Trc_file, O_RDWR|O_BINARY|O_CREAT,SH_DENYNO,S_IREAD|S_IWRITE)) != -1)
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
					    if ((handle = open(Trc_file, O_RDWR|O_BINARY|O_CREAT,0666)) != -1)
 | 
				
			||||||
 | 
					#endif    
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (write( handle, (char*)rd, sizeof(RecDes)) == -1)
 | 
				
			||||||
 | 
					        fatal_box("Impossibile scrivere il file trc.gen per dati standard: errore %d",errno);
 | 
				
			||||||
 | 
					      close(handle);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else fatal_box("Impossibile creare il file trc.gen per dati standard: errore %d",errno);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r)
 | 
					void TManutenzione_app::do_print(TPrinter & p, TRec_sheet & r)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -703,6 +753,7 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
    const bool is_firm = ds.is_firm();
 | 
					    const bool is_firm = ds.is_firm();
 | 
				
			||||||
    const bool to_create = (is_com ? ds.is_com() : ds.is_firm());
 | 
					    const bool to_create = (is_com ? ds.is_com() : ds.is_firm());
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
//    TString s(ds.name());
 | 
					//    TString s(ds.name());
 | 
				
			||||||
    TFilename fd(ds.filename());
 | 
					    TFilename fd(ds.filename());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -712,7 +763,18 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
//    word len = ds.len();
 | 
					//    word len = ds.len();
 | 
				
			||||||
//    prefix().set(pref);
 | 
					//    prefix().set(pref);
 | 
				
			||||||
    d.get(i);
 | 
					    d.get(i);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    TFilename fs(d.filename());
 | 
					    TFilename fs(d.filename());
 | 
				
			||||||
 | 
					    if (strrchr(d.name(),'.') != NULL) // No extension please!
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      d.get(i, _nolock, _nordir, _sysdirop);
 | 
				
			||||||
 | 
					      TFilename ext(d.name());
 | 
				
			||||||
 | 
					      ext.ext("");
 | 
				
			||||||
 | 
					      d.set_name(ext);
 | 
				
			||||||
 | 
					      d.put(i, _nordir, _sysdirop);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if (!fexist(fs))
 | 
					    if (!fexist(fs))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -766,7 +828,19 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    d.get(i, _nolock, _nordir, _sysdirop);
 | 
					    d.get(i, _nolock, _nordir, _sysdirop);
 | 
				
			||||||
    if (to_create)
 | 
					    
 | 
				
			||||||
 | 
					    bool cmn_file = FALSE;
 | 
				
			||||||
 | 
					    bool valid_file = i == LF_PCON || i == LF_CLIFO || i == LF_CAUSALI || i == LF_RCAUSALI;
 | 
				
			||||||
 | 
					    if (!is_com && valid_file  && d.is_com())
 | 
				
			||||||
 | 
					         cmn_file = TRUE; // Salta in questo caso:
 | 
				
			||||||
 | 
					                          // sto aggiornando le ditte, 
 | 
				
			||||||
 | 
					                          // il file in questione e' uno di quelli che possono essere comuni
 | 
				
			||||||
 | 
					                          // il file e' in comune
 | 
				
			||||||
 | 
					                          // Serve per evitare che durante l'aggiornamento i file
 | 
				
			||||||
 | 
					                          // PCON, CLIFO, CAUS ed RCAUS vengano spostati da COM alla
 | 
				
			||||||
 | 
					                          // prima ditta
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (to_create && !cmn_file)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
/* non piu' necessario
 | 
					/* non piu' necessario
 | 
				
			||||||
     if (is_firm)
 | 
					     if (is_firm)
 | 
				
			||||||
@ -777,7 +851,7 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (flags < 10000L && fexist(fs) && (fd != fs))
 | 
					      if (flags < 10000L && flags > -1L && fexist(fs) && (fd != fs))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        bool ok = TRUE;
 | 
					        bool ok = TRUE;
 | 
				
			||||||
        TFilename path(fd.path());
 | 
					        TFilename path(fd.path());
 | 
				
			||||||
@ -852,8 +926,7 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      fs.ext("");
 | 
					      if (!fexist(fs) && !valid_file) // Controlla eventali nomi di files non validi (ed es. %.dbf ecc.)
 | 
				
			||||||
      if (fs.name()[0] == '\0') // Questo controlla se accidentalmente non e' piu' contenuto il nome del file
 | 
					 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr());
 | 
					        d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr());
 | 
				
			||||||
        towrite = TRUE;
 | 
					        towrite = TRUE;
 | 
				
			||||||
@ -863,7 +936,10 @@ void TManutenzione_app::update_dir()
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      towrite = (TString(ds.des()) != d.des());
 | 
					      towrite = (TString(ds.des()) != d.des());
 | 
				
			||||||
      if (towrite)
 | 
					      if (towrite)
 | 
				
			||||||
        strcpy((char *) d.des(), ds.des());
 | 
					        if (!valid_file)
 | 
				
			||||||
 | 
					          d.set(ds.name(), d.eox(), d.eod(), ds.des(), d.expr());
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          strcpy((char *) d.des(), ds.des());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (towrite)
 | 
					    if (towrite)
 | 
				
			||||||
      d.put(i, _nordir, _sysdirop);
 | 
					      d.put(i, _nordir, _sysdirop);
 | 
				
			||||||
@ -928,7 +1004,7 @@ void TManutenzione_app::convert_dir()
 | 
				
			|||||||
//    prefix().set(pref);
 | 
					//    prefix().set(pref);
 | 
				
			||||||
    if (ds.len() > 0)
 | 
					    if (ds.len() > 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if (flags < 10000L)
 | 
					      if (flags < 10000L && flags > -1L)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        TBaseisamfile b(i);
 | 
					        TBaseisamfile b(i);
 | 
				
			||||||
        const int module = abs((int)ds.flags());
 | 
					        const int module = abs((int)ds.flags());
 | 
				
			||||||
@ -941,25 +1017,8 @@ void TManutenzione_app::convert_dir()
 | 
				
			|||||||
            stop_run();
 | 
					            stop_run();
 | 
				
			||||||
          else continue;
 | 
					          else continue;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
        TSystemisamfile f(i);
 | 
					        //d.get(i, _nolock, _nordir, _sysdirop);
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
        f.update(rs);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        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());
 | 
					        bool to_create = (is_com ? d.is_com() : d.is_firm());
 | 
				
			||||||
        const bool actual_create = to_create;
 | 
					        const bool actual_create = to_create;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
@ -978,10 +1037,30 @@ void TManutenzione_app::convert_dir()
 | 
				
			|||||||
          {
 | 
					          {
 | 
				
			||||||
            TSystemisamfile f(i);
 | 
					            TSystemisamfile f(i);
 | 
				
			||||||
            set_autoload_new_files(actual_create); 
 | 
					            set_autoload_new_files(actual_create); 
 | 
				
			||||||
            f.build(10L);
 | 
					            f.build(0L,rs);
 | 
				
			||||||
            set_autoload_new_files(TRUE);
 | 
					            set_autoload_new_files(TRUE);
 | 
				
			||||||
 | 
					            // Anche se il file non esisteva, prosegue, perche' possono esserci conversioni
 | 
				
			||||||
 | 
					            // specificate in FCONV.INI
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TSystemisamfile f(i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        f.update(rs);
 | 
				
			||||||
 | 
					        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();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else // altrimenti se i flags sono oltre i fatidici 10000...
 | 
					      else // altrimenti se i flags sono oltre i fatidici 10000...
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -1026,47 +1105,82 @@ void TManutenzione_app::load_des()
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  if (standard) // carica eventuali nuove descrizioni ed il nuovo livello archivi
 | 
					  if (standard) // carica eventuali nuove descrizioni ed il nuovo livello archivi
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
     // Cerca in RECDESC i files f[nnn].dir, la cui numerazione inizia da items+1
 | 
					     // Cerca in RECDESC i files f[nnn].dir
 | 
				
			||||||
 | 
					     ifstream infile;
 | 
				
			||||||
 | 
					     TString ws;
 | 
				
			||||||
     TFilename fn;
 | 
					     TFilename fn;
 | 
				
			||||||
     TDir td;
 | 
					     TDir td,new_dir;
 | 
				
			||||||
     TTrec tr;
 | 
					     TTrec tr;
 | 
				
			||||||
 | 
					#if XVT_OS == XVT_OS_WIN          
 | 
				
			||||||
 | 
					     struct _find_t  c_file;
 | 
				
			||||||
 | 
					#endif     
 | 
				
			||||||
 | 
					     int ln = items,last_newln = items;
 | 
				
			||||||
 | 
					     bool firstime = TRUE,ok;
 | 
				
			||||||
     tr.zero();
 | 
					     tr.zero();
 | 
				
			||||||
     fn << DESCDIR << "/level.dir";
 | 
					     fn << DESCDIR << "/level.dir";
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
     if (fexist(fn))
 | 
					     if (fexist(fn))
 | 
				
			||||||
     {
 | 
					     {
 | 
				
			||||||
       {
 | 
					       long fl;
 | 
				
			||||||
         long fl;
 | 
					       infile.open(fn);
 | 
				
			||||||
         ifstream level(fn);
 | 
					       infile >> fl;
 | 
				
			||||||
         level >> fl;
 | 
					       if (fl > flags) flags = fl;
 | 
				
			||||||
         if (fl > flags) flags = fl;
 | 
					       infile.close();
 | 
				
			||||||
       }
 | 
					 | 
				
			||||||
       unlink(fn);
 | 
					       unlink(fn);
 | 
				
			||||||
     }
 | 
					     }
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
     for (int xf=2;;xf++)
 | 
					     // scandisce *.dir in RECDESC tramite dos_findfirst e _dos_findnext
 | 
				
			||||||
 | 
					     // eventuali "buchi" oltre al numero attuale di items vengono rimpiazzati 
 | 
				
			||||||
 | 
					     // con tracciati vuoti.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     fn.format("%s/f*.dir",DESCDIR);
 | 
				
			||||||
 | 
					#if XVT_OS == XVT_OS_WIN     
 | 
				
			||||||
 | 
					     do 
 | 
				
			||||||
     {
 | 
					     {
 | 
				
			||||||
       fn = DESCDIR;
 | 
					       if (firstime)
 | 
				
			||||||
       fn << "/f" << xf;
 | 
					 | 
				
			||||||
       fn.ext("dir");
 | 
					 | 
				
			||||||
       if (!fexist(fn) && xf > items) // appena non ne trova uno oltre il numero di items ha finito
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
       // altrimenti lo carica nel direttorio standard,
 | 
					 | 
				
			||||||
       // aggiungendo un tracciato vuoto
 | 
					 | 
				
			||||||
       if (fexist(fn))
 | 
					 | 
				
			||||||
       {
 | 
					       {
 | 
				
			||||||
         ifstream in(fn);
 | 
					         ok = _dos_findfirst(fn, _A_NORMAL, &c_file ) == 0;
 | 
				
			||||||
         in >> td;
 | 
					         firstime = FALSE;
 | 
				
			||||||
         td.put(xf,_nordir,_sysdirop);
 | 
					 | 
				
			||||||
         if (xf > items)
 | 
					 | 
				
			||||||
           tr.put(xf);
 | 
					 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
       unlink(fn);
 | 
					       fn.format("%s/%s",DESCDIR,c_file.name);
 | 
				
			||||||
 | 
					       if (ok)
 | 
				
			||||||
 | 
					       {
 | 
				
			||||||
 | 
					         infile.open(fn);
 | 
				
			||||||
 | 
					         infile >> td;
 | 
				
			||||||
 | 
					         ln = td.num();
 | 
				
			||||||
 | 
					         const bool is_new = ln > last_newln; // memorizza l'ultimo record scritto come nuovo
 | 
				
			||||||
 | 
					         if (is_new) // aggiunge i files che mancano
 | 
				
			||||||
 | 
					         {
 | 
				
			||||||
 | 
					           for (int i = last_newln+1; i<ln; i++)
 | 
				
			||||||
 | 
					           {
 | 
				
			||||||
 | 
					             ws.format("$f%d",i);
 | 
				
			||||||
 | 
					             new_dir.set(ws,0L,-1L,"File non presente","");
 | 
				
			||||||
 | 
					             new_dir.put(i,_nordir,_sysdirop);
 | 
				
			||||||
 | 
					             tr.put(i);             
 | 
				
			||||||
 | 
					           }
 | 
				
			||||||
 | 
					           last_newln = ln;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         td.put(ln,_nordir,_sysdirop);
 | 
				
			||||||
 | 
					         if (is_new)
 | 
				
			||||||
 | 
					           tr.put(ln);
 | 
				
			||||||
 | 
					         infile.close();
 | 
				
			||||||
 | 
					         unlink(fn);
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
 | 
					     } while( _dos_findnext( &c_file ) == 0 );
 | 
				
			||||||
 | 
					#endif     
 | 
				
			||||||
 | 
					     // Aggiorna il numero di files presenti in totale nel direttorio
 | 
				
			||||||
 | 
					     if (last_newln > items) // rialloca openf altrimenti la TPrefix::closeall() provoca un grazioso errore in applicazione
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					       isfdptr *newopenf = new isfdptr[last_newln];
 | 
				
			||||||
 | 
					       for (int i = 0; i<last_newln; i++)
 | 
				
			||||||
 | 
					          newopenf[i] = (i<items) ? openf[i] : NULL;
 | 
				
			||||||
 | 
					       delete openf;
 | 
				
			||||||
 | 
					       openf = newopenf;          
 | 
				
			||||||
     }
 | 
					     }
 | 
				
			||||||
     xf--;
 | 
					     d.eod() = (long)last_newln;
 | 
				
			||||||
     d.eod() = (long)xf;
 | 
					     d.eox() = (long)last_newln;
 | 
				
			||||||
     d.eox() = (long)xf;
 | 
					 | 
				
			||||||
     d.flags() = flags;
 | 
					     d.flags() = flags;
 | 
				
			||||||
 | 
					     set_std_level(flags);
 | 
				
			||||||
     d.put(LF_DIR,_nordir,_sysdirop);
 | 
					     d.put(LF_DIR,_nordir,_sysdirop);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1172,7 +1286,7 @@ void TManutenzione_app::update()
 | 
				
			|||||||
  begin_wait();
 | 
					  begin_wait();
 | 
				
			||||||
  prefix().set("");
 | 
					  prefix().set("");
 | 
				
			||||||
  load_des();
 | 
					  load_des();
 | 
				
			||||||
  prefix().set("com");
 | 
					  prefix().set_codditta(0L);
 | 
				
			||||||
/*  if (prefix().filelevel() <= 199502L)
 | 
					/*  if (prefix().filelevel() <= 199502L)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TExternal_app app("bacnv 4 0");
 | 
					    TExternal_app app("bacnv 4 0");
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "ba1100.h"
 | 
					#include "ba1100.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern "C"  {
 | 
				
			||||||
 | 
					  extern isfdptr* openf;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TMask*       TRec_sheet::_mask = NULL;
 | 
					TMask*       TRec_sheet::_mask = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TDir_sheet::add ()
 | 
					void TDir_sheet::add ()
 | 
				
			||||||
@ -27,6 +31,12 @@ void TDir_sheet::add ()
 | 
				
			|||||||
  d.zero();
 | 
					  d.zero();
 | 
				
			||||||
  d.put(nitems, _nordir, _sysdirop);
 | 
					  d.put(nitems, _nordir, _sysdirop);
 | 
				
			||||||
  _items = nitems;
 | 
					  _items = nitems;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   isfdptr *newopenf = new isfdptr[_items];
 | 
				
			||||||
 | 
					   for (int i = 0; i<_items; i++)
 | 
				
			||||||
 | 
					      newopenf[i] = i<(_items-1) ? openf[i] : NULL;
 | 
				
			||||||
 | 
					   delete openf;
 | 
				
			||||||
 | 
					   openf = newopenf;          
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDir_sheet::TDir_sheet(const char* title, byte buttons, const char* colonne)
 | 
					TDir_sheet::TDir_sheet(const char* title, byte buttons, const char* colonne)
 | 
				
			||||||
 | 
				
			|||||||
@ -171,7 +171,10 @@ KEY  TEdit_file::edit_record(TRectype& rec, bool readonly)
 | 
				
			|||||||
    switch (rec.type(cp))
 | 
					    switch (rec.type(cp))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    case _alfafld:
 | 
					    case _alfafld:
 | 
				
			||||||
      m.add_string(nid++,curpage, s, 3, currow, len, "", len > 50 ? 50 : len);
 | 
					      {
 | 
				
			||||||
 | 
					        TString16 f; f << flags << '_';
 | 
				
			||||||
 | 
					        m.add_string(nid++,curpage, s, 3, currow, len, f, len > 50 ? 50 : len);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case _intfld:
 | 
					    case _intfld:
 | 
				
			||||||
    case _longfld:
 | 
					    case _longfld:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user