From a11485820aaa5a30dde0d7d3c53a87c6c29c0ede Mon Sep 17 00:00:00 2001 From: luca Date: Tue, 2 Mar 2004 16:48:16 +0000 Subject: [PATCH] Patch level :R_02_01 nopatch Files correlati :ve7.exe & ve7500*.* Ricompilazione Demo : [ ] Commento :prima implementazione del programma per gommisti git-svn-id: svn://10.65.10.50/trunk@11796 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/ve7.cpp | 2 + ve/ve7.h | 1 + ve/ve7500.cpp | 151 +++++++++++++++++++++++++++++++++++++++++++++++++ ve/ve7500a.h | 4 ++ ve/ve7500a.uml | 23 ++++++++ ve/ve7500m.ini | 52 +++++++++++++++++ ve/ve7500p.ini | 52 +++++++++++++++++ 7 files changed, 285 insertions(+) create mode 100755 ve/ve7500.cpp create mode 100755 ve/ve7500a.h create mode 100755 ve/ve7500a.uml create mode 100755 ve/ve7500m.ini create mode 100755 ve/ve7500p.ini diff --git a/ve/ve7.cpp b/ve/ve7.cpp index 0df27c371..4a1435778 100755 --- a/ve/ve7.cpp +++ b/ve/ve7.cpp @@ -9,6 +9,8 @@ int main( int argc, char** argv ) switch (r) { + case 4: + ve7500(argc, argv); break; // importazione listini gommisti (michelin,pirelli etc.) case 3: ve7400(argc, argv); break; // esportazione bolle CONAD per marpesca case 2: diff --git a/ve/ve7.h b/ve/ve7.h index b5c365641..42145d192 100755 --- a/ve/ve7.h +++ b/ve/ve7.h @@ -5,5 +5,6 @@ int ve7100 (int, char**); int ve7200 (int, char**); int ve7300 (int, char**); int ve7400 (int, char**); +int ve7500 (int, char**); #endif diff --git a/ve/ve7500.cpp b/ve/ve7500.cpp new file mode 100755 index 000000000..71c8b8d9f --- /dev/null +++ b/ve/ve7500.cpp @@ -0,0 +1,151 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "..\mg\umart.h" +#include "..\mg\anamag.h" + +#include "ve7.h" +#include "ve7500a.h" + + +///////////////////////////////////////////////////// +// Classe TLis2fil: filetext // +///////////////////////////////////////////////////// + +class TLis2fil_txt: public TFile_text +{ +protected: +// virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str); + +public: + TLis2fil_txt(const TString& file_name, const TString& config_name); + virtual ~TLis2fil_txt() { } +}; + +TLis2fil_txt::TLis2fil_txt(const TString& file_name, const TString& config_name) + : TFile_text(file_name, config_name) +{ +} + + +///////////////////////////////////////////////////// +// Classe TLis2fil: applicazione principale // +///////////////////////////////////////////////////// + +class TLis2fil: public TSkeleton_application +{ + TMask* _msk; + +protected: + virtual bool create(void); + virtual void main_loop(); + virtual bool destroy(void); + void transfer(void); + static bool annulla_handler(TMask_field& f, KEY k); + const char * get_ini_name(const TString& filename) const; + void import(const TString& filename); + +public: + const TMask& msk() const { return *_msk; } + TLis2fil() {} + virtual ~TLis2fil() {} +}; + +const char * TLis2fil::get_ini_name (const TString& filename) const +{ + TScanner scan_line(filename); + const TString& line = scan_line.line(); + return line[0] == '"' ? "ve7500p.ini" : "ve7500m.ini"; +} + +void TLis2fil::import(const TString& filename) +{ + //stabilisce quale tipo di listino e' il file corrente (M o P),carica il .ini relativo + //lo parsa in modo read + const char * ini = get_ini_name (filename); + TLis2fil_txt trasfile(filename, ini); + trasfile.open(filename,'r'); + const long dimension = fsize(filename); + TString msg; + msg << "Acquisizione del file " << filename << " in corso..."; + TProgind pi(dimension, msg, false, true); + + TRelation rel(LF_ANAMAG); + TRectype& rec_anamag = rel.curr(); + + TRecord_text curr; + while (trasfile.read(curr) == NOERR) + { + pi.setstatus(trasfile.read_file()->tellg()); + trasfile.autosave(rel, curr); + } + + trasfile.close(); +} + +// creazione dell'applicazione +bool TLis2fil::create() +{ + open_files(LF_ANAMAG, LF_UMART, 0); + + _msk = new TMask("ve7500a"); + TString default_dir = "A:\\"; + _msk->set(F_DIRNAME, default_dir); + + return TSkeleton_application::create(); +} + +// distruzione dell'applicazione +bool TLis2fil::destroy() +{ + delete _msk; + return TSkeleton_application::destroy(); +} + +// carica la maschera +void TLis2fil::main_loop() +{ + // Preimposta gli eventuali valori specificati sulla riga di comando + KEY key = K_ENTER; + while (key != K_QUIT) + { + key = _msk->run(); + if (key == K_ENTER) + { + TString_array dir_files; + TFilename path = _msk->get(F_DIRNAME); + path.add("*.txt"); + list_files(path, dir_files); + FOR_EACH_ARRAY_ROW(dir_files, i, row) + import(*row); + } + } +} + + +// handler per gestire la conferma dell'annullamento dei dati inseriti +// nella maschera +bool TLis2fil::annulla_handler(TMask_field& f, KEY k) +{ + TMask &m = f.mask(); + if (k == K_SPACE) + { + if (yesno_box("Vuoi veramente annullare i dati inseriti")) + m.reset(); + } + return TRUE; +} + + +int ve7500(int argc, char* argv[]) +{ + TLis2fil a ; + a.run(argc, argv, "Importazione listino"); + return 0; +} diff --git a/ve/ve7500a.h b/ve/ve7500a.h new file mode 100755 index 000000000..b30c0cdd0 --- /dev/null +++ b/ve/ve7500a.h @@ -0,0 +1,4 @@ +// acquisizione dati da file txt formattato: listini gommisti +// definizione campi per maschera di selezione + +#define F_DIRNAME 101 // nome della directory da cui caricare i dati diff --git a/ve/ve7500a.uml b/ve/ve7500a.uml new file mode 100755 index 000000000..b7dbe6ae8 --- /dev/null +++ b/ve/ve7500a.uml @@ -0,0 +1,23 @@ +#include "ve7500a.h" + + +PAGE "Acquisizione dati da file" -1 -1 78 4 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +STRING F_DIRNAME 45 50 +BEGIN + PROMPT 1 1 "Cartella di origine dati " + CHECKTYPE REQUIRED +END + +ENDPAGE +ENDMASK diff --git a/ve/ve7500m.ini b/ve/ve7500m.ini new file mode 100755 index 000000000..252e09230 --- /dev/null +++ b/ve/ve7500m.ini @@ -0,0 +1,52 @@ +[MAIN] +DECSEP = +FIELDSEP = +RECORDSEP = +RECORDSIZE = 0 +SKIPLINES = 0 +TYPEFIELD = -1 +TYPELEN = -1 +TYPEPOS = -1 + +[TYPE COD] +ALIGN = L +DATA = +DECIMAL = 0 +FILLER = +LENGTH = 8 +PICTURE = + +[TYPE EURO] +ALIGN = R +DATA = +DECIMAL = 2 +FILLER = +LENGTH = 8 +PICTURE = + +[TYPE DES] +ALIGN = L +DATA = S +DECIMAL = 0 +FILLER = ' ' +LENGTH = 54 +PICTURE = + +[RECORD] +NAME(0) = CODART +TYPE(0) = COD +FIELD(0) = 47->CODART +POSITION(0) = 0 +LENGTH(0) = 8 + +NAME(1) = DESCR +TYPE(1) = DES +FIELD(1) = 47->DESCR +POSITION(1) = 9 +LENGTH(1) = 54 + +NAME(2) = PRICE +TYPE(2) = EURO +POSITION(2) = 63 +LENGTH(2) = 8 + diff --git a/ve/ve7500p.ini b/ve/ve7500p.ini new file mode 100755 index 000000000..38438efd7 --- /dev/null +++ b/ve/ve7500p.ini @@ -0,0 +1,52 @@ +[MAIN] +DECSEP = +FIELDSEP = +RECORDSEP = +RECORDSIZE = 0 +SKIPLINES = 0 +TYPEFIELD = -1 +TYPELEN = -1 +TYPEPOS = -1 + +[TYPE COD] +ALIGN = L +DATA = +DECIMAL = 0 +FILLER = +LENGTH = 9 +PICTURE = + +[TYPE EURO] +ALIGN = R +DATA = +DECIMAL = 2 +FILLER = +LENGTH = 11 +PICTURE = + +[TYPE DES] +ALIGN = L +DATA = S +DECIMAL = 0 +FILLER = ' ' +LENGTH = 31 +PICTURE = + +[RECORD] +NAME(0) = CODART +TYPE(0) = COD +FIELD(0) = 47->CODART +POSITION(0) = 1 +LENGTH(0) = 9 + +NAME(1) = DESCR +TYPE(1) = DES +FIELD(1) = 47->DESCR +POSITION(1) = 13 +LENGTH(1) = 31 + +NAME(2) = PRICE +TYPE(2) = EURO +POSITION(2) = 47 +LENGTH(2) = 11 +