Patch level :2.1 26
Files correlati :ve5.exe ve5400.msk Ricompilazione Demo : [ ] Commento : bug 0000096 Sarebbe utile prevedere come unità di output anche l'unità C. git-svn-id: svn://10.65.10.50/trunk@11977 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
1fe5647706
commit
84930bf98a
@ -8,20 +8,49 @@
|
|||||||
#include "velib.h"
|
#include "velib.h"
|
||||||
#include <doc.h>
|
#include <doc.h>
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
//-------MASCHERA-----------------------------
|
||||||
class TArchive_mask : public TMask
|
class TArchive_mask : public TMask
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TArchive_mask() : TMask("ve5400") { }
|
TArchive_mask();
|
||||||
virtual ~TArchive_mask() { }
|
virtual ~TArchive_mask() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TArchive_mask::TArchive_mask() : TMask("ve5400")
|
||||||
|
{
|
||||||
|
TList_field& lf = (TList_field&)field(F_DRIVE);
|
||||||
|
TToken_string codes, values;
|
||||||
|
TString4 str;
|
||||||
|
int k = 0;
|
||||||
|
for (int d = 0; d < 26; d++)
|
||||||
|
{
|
||||||
|
str.format("%c:/", d+'A');
|
||||||
|
const bool isrem = xvt_fsys_is_removable_drive(str) != 0;
|
||||||
|
const bool isfix = !isrem && xvt_fsys_is_fixed_drive(str);
|
||||||
|
if (isrem || isfix)
|
||||||
|
{
|
||||||
|
str.rtrim(1); // Togli slash finale
|
||||||
|
codes.add(str);
|
||||||
|
values.add(str);
|
||||||
|
TToken_string& message = *lf.message(k++, TRUE);
|
||||||
|
if (isrem)
|
||||||
|
message.format("CLEAR,%d", F_PATH);
|
||||||
|
else
|
||||||
|
message.format("ENABLE,%d", F_PATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lf.replace_items(codes, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
//-------APPLICAZIONE-----------------------------
|
||||||
class TArchive_doc : public TSkeleton_application
|
class TArchive_doc : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TArray _file;
|
TArray _file;
|
||||||
TIsamtempfile *_tdoc; //dichiaro un puntatore al file _tdoc (non posso dichiarare un file)
|
TIsamtempfile *_tdoc; //dichiaro un puntatore al file _tdoc (non posso dichiarare un file)
|
||||||
TIsamtempfile *_trdoc; // _trdoc
|
TIsamtempfile *_trdoc; // _trdoc
|
||||||
TFilename _tmp_dir;
|
TFilename _tmp_dir, _path;
|
||||||
TArchive _arc;
|
TArchive _arc;
|
||||||
TString _desc;
|
TString _desc;
|
||||||
char _unit;
|
char _unit;
|
||||||
@ -104,8 +133,9 @@ void TArchive_doc::archivia(const TMask& m)
|
|||||||
recini.put(DOC_NDOC, m.get(F_NUMFR)); //setta il contenuto del campo DOC_NDOC con il numero che arriva da m.get (é il numero del primo record da leggere)
|
recini.put(DOC_NDOC, m.get(F_NUMFR)); //setta il contenuto del campo DOC_NDOC con il numero che arriva da m.get (é il numero del primo record da leggere)
|
||||||
recfin.put(DOC_NDOC, m.get(F_NUMTO)); //come sopra ma per l'ultimo record (questi due numeri gli servono nel cursore)
|
recfin.put(DOC_NDOC, m.get(F_NUMTO)); //come sopra ma per l'ultimo record (questi due numeri gli servono nel cursore)
|
||||||
|
|
||||||
_unit = m.get(F_DRIVE)[0]; //legge solo A o B e non :
|
_unit = m.get(F_DRIVE)[0]; //legge solo i drive dei floppy e quelli locali
|
||||||
_desc = m.get(F_DESCRFILE);
|
_path = m.get(F_PATH); //path di destinazione del file da creare (se non floppy)
|
||||||
|
_desc = m.get(F_DESCRFILE); //descrizione nel file .ini
|
||||||
|
|
||||||
TString filter; //crea l'ogetto filter da TString
|
TString filter; //crea l'ogetto filter da TString
|
||||||
|
|
||||||
@ -123,9 +153,7 @@ void TArchive_doc::archivia(const TMask& m)
|
|||||||
create_tmp_files(TRUE); //file di intestazione ed un file di righe temporanei (N.B. non devo
|
create_tmp_files(TRUE); //file di intestazione ed un file di righe temporanei (N.B. non devo
|
||||||
//creare alcun oggetto perché la funzione é un metodo della TArchive_doc
|
//creare alcun oggetto perché la funzione é un metodo della TArchive_doc
|
||||||
//e quindi l'oggetto é giá creato
|
//e quindi l'oggetto é giá creato
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE); //istanza pi di TProgind che fa comparire la finestra di elaborazione in corso
|
TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE); //istanza pi di TProgind che fa comparire la finestra di elaborazione in corso
|
||||||
TDocumento* doc = new TDocumento; //doc é un puntatore ad una istanza di TDocumento
|
TDocumento* doc = new TDocumento; //doc é un puntatore ad una istanza di TDocumento
|
||||||
rel.lfile().set_curr(doc); //applica set_curr al localisamfile che viene ritornato da rel.lfile()
|
rel.lfile().set_curr(doc); //applica set_curr al localisamfile che viene ritornato da rel.lfile()
|
||||||
@ -135,7 +163,7 @@ void TArchive_doc::archivia(const TMask& m)
|
|||||||
for (cur = 0; cur.pos() < total && !pi.iscancelled() && err==NOERR; ++cur) //for cur che va da 0 alla posizione corrente (che deve essere < del numero totale
|
for (cur = 0; cur.pos() < total && !pi.iscancelled() && err==NOERR; ++cur) //for cur che va da 0 alla posizione corrente (che deve essere < del numero totale
|
||||||
//dei record (total) and non essere interrotto e non esserci errore
|
//dei record (total) and non essere interrotto e non esserci errore
|
||||||
{
|
{
|
||||||
err = _tdoc->write(doc->head()); //scrive l'intestazione sul file
|
err = _tdoc->write(doc->head()); //scrive l'intestazione sul file temp delle testate
|
||||||
if (err != NOERR) //se invece c'é un errore..
|
if (err != NOERR) //se invece c'é un errore..
|
||||||
{
|
{
|
||||||
error_box("Errore %d durante la copia dell'intestazione", err);
|
error_box("Errore %d durante la copia dell'intestazione", err);
|
||||||
@ -153,21 +181,57 @@ void TArchive_doc::archivia(const TMask& m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete_tmp_files(FALSE); //chiude i files temp in modo da risparmiare memoria
|
delete_tmp_files(FALSE); //chiude i files temp in modo da risparmiare memoria
|
||||||
|
|
||||||
const char * dir = &_tmp_dir[1]; //fa puntare dir alla directory temp
|
const char * dir = &_tmp_dir[1]; //fa puntare dir alla directory temp
|
||||||
bool rt = _arc.backup(dir,_unit,_desc, TRUE); //esegue la compressione ed il salvataggio sul device scelto
|
bool rt = _arc.backup(dir,_unit,_desc, TRUE); //esegue la compressione ed il salvataggio sul device scelto
|
||||||
create_tmp_files(FALSE); //apre i files temp, riallocandoli (NON li crea effettvam.)
|
create_tmp_files(FALSE); //apre i files temp, riallocandoli (NON li crea effettvam.)
|
||||||
delete_tmp_files(TRUE); //cancella fisicamente i files temp
|
delete_tmp_files(TRUE); //cancella fisicamente i files temp
|
||||||
|
|
||||||
|
TFilename unit;
|
||||||
|
unit << _unit << ':' << SLASH;
|
||||||
|
if (!xvt_fsys_is_removable_drive(unit)) //se il drive non e' rimovibile,sposta i files dalla root del drive
|
||||||
|
{ //alla target dir scritta sulla maschera
|
||||||
|
for (int i = 0; i<= 1; i++)
|
||||||
|
{
|
||||||
|
TFilename orig = unit;
|
||||||
|
TFilename dest;
|
||||||
|
dest << unit << _path;
|
||||||
|
const char * name = i == 0 ? "backup.ini" : "ve.z00";
|
||||||
|
orig << name;
|
||||||
|
dest << SLASH << name;
|
||||||
|
fcopy(orig, dest);
|
||||||
|
xvt_fsys_removefile(orig); //elimina il file di origine dopo averlo copiato
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TArchive_doc::ripristina(const TMask& m)
|
void TArchive_doc::ripristina(const TMask& m)
|
||||||
{
|
{
|
||||||
const char* dir =&_tmp_dir[1]; // Cut out % sign
|
_unit = m.get(F_DRIVE)[0];
|
||||||
_unit = m.get(F_DRIVE)[0]; // Stabilisce quale é il device corretto
|
_path = m.get(F_PATH);
|
||||||
|
const char* dir =&_tmp_dir[1];
|
||||||
|
|
||||||
|
TFilename unit;
|
||||||
|
unit << _unit << ':' << SLASH;
|
||||||
|
|
||||||
|
if (!xvt_fsys_is_removable_drive(unit)) //ripristina dalla directory scelta come origine dei dati
|
||||||
|
{
|
||||||
|
TFilename path;
|
||||||
|
path << _unit << ':' << SLASH << _path;
|
||||||
|
for (int i = 0; i<= 1; i++)
|
||||||
|
{
|
||||||
|
TFilename orig = path;
|
||||||
|
TFilename dest = unit;
|
||||||
|
const char * name = i == 0 ? "backup.ini" : "ve.z00";
|
||||||
|
orig << SLASH << name;
|
||||||
|
dest << name;
|
||||||
|
fcopy(orig, dest);
|
||||||
|
xvt_fsys_removefile(orig); //elimina il file di origine dopo averlo copiato
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_arc.restore(dir,_unit,FALSE,TRUE))
|
if (_arc.restore(dir,_unit,FALSE,TRUE))
|
||||||
{
|
{
|
||||||
TIsamfile doc(LF_DOC);
|
TIsamfile doc(LF_DOC);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#define F_NUMFR 206
|
#define F_NUMFR 206
|
||||||
#define F_NUMTO 207
|
#define F_NUMTO 207
|
||||||
#define F_DRIVE 208
|
#define F_DRIVE 208
|
||||||
|
#define F_PATH 209
|
||||||
|
|
||||||
#define F_TO_DATA 301
|
#define F_TO_DATA 301
|
||||||
#define F_DESCRFILE 302
|
#define F_DESCRFILE 302
|
||||||
|
@ -23,7 +23,7 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Invio e Ricezione Documenti" -1 -1 60 10
|
PAGE "Invio e Ricezione Documenti" -1 -1 60 10
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 6
|
GROUPBOX DLG_NULL 76 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 ""
|
PROMPT 1 1 ""
|
||||||
END
|
END
|
||||||
@ -103,7 +103,6 @@ BEGIN
|
|||||||
OUTPUT F_NUMTO NDOC
|
OUTPUT F_NUMTO NDOC
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
LIST F_DRIVE 3
|
LIST F_DRIVE 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Drive "
|
PROMPT 2 5 "Drive "
|
||||||
@ -111,9 +110,14 @@ BEGIN
|
|||||||
ITEM "B|B:"
|
ITEM "B|B:"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCRFILE 43 43
|
STRING F_PATH 256 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 18 5 "Descrizione "
|
PROMPT 19 5 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRFILE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Descrizione file "
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user