// trasferimenti #include #include #include #include #include #include "atfield.cpp" #include "lf.h" // nomi delle variabili in .ini per i campi #define FIELD "FIELD" #define LEN "LEN" #define DEC "DEC" #define FLAGS "FLAGS" // nomi delle variabili in .ini per HEADER #define HEADER "HEADER" #define NOMEFILE "NOMEFILE" #define LUNGHEZZA "LUNGHEZZA" #define RECORDSEP "RECORDSEP" #define FIELDSEP "FIELDSEP" class TTransfer_app : public TApplication { TMask* _msk; TRelation* _rel; protected: virtual bool create(); virtual bool destroy(); virtual bool menu(MENU_TAG m) ; virtual TMask& get_mask() { return *_msk; } virtual TRelation* get_relation() const { return _rel; } virtual void scarica(); public: TTransfer_app() {} }; HIDDEN inline TTransfer_app& app() { return (TTransfer_app&) main_app(); } bool TTransfer_app::create() { _msk = new TMask("at5100a"); _rel = new TRelation(LF_SOGGETTI); /* _rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD); _donaz = new TLocalisamfile(LF_DONAZ); _contsan = new TLocalisamfile(LF_CONTSAN); _sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON); _scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON); _asoggetti = new TAssoc_array(); _msk->set_handler(F_INS_CONTROLLI,ins_controlli_handler); TSheet_field& ss = (TSheet_field&)_msk->field(F_SOGGETTI); ss.set_notify(soggetti_notify); //ss.sheet_mask().set_handler(F_S_CODICE,codice_handler); ss.sheet_mask().set_handler(F_S_NOME,nome_handler); */ dispatch_e_menu(BAR_ITEM(1)); return TRUE; } bool TTransfer_app::destroy() { delete _rel; delete _msk; /* delete _donaz; delete _contsan; delete _sdonazioni; delete _scontrolli; delete _asoggetti; */ return TRUE; } bool TTransfer_app::menu(MENU_TAG m) { TMask& msk = get_mask(); const TDate oggi(TODAY); KEY tasto; do { tasto = msk.run(); switch (tasto) { case K_ESC: // annulla msk.reset(); break; case K_ENTER: // registra { TTransfer_app::scarica(); msk.reset(); } break; } } while (tasto != K_QUIT); return FALSE; } void TTransfer_app::scarica() { TArray arr_exprs; // array delle TExpr corrispondenti ai campi da scaricare TArray arr_fields; // array dei TField_text (campi indicati in .ini) TConfig ini("esporta.ini"); TString_array campi; int i = ini.list_paragraphs(campi); int poshead = campi.find("HEADER"); campi.remove(poshead,TRUE); for ( int k = 0; k < campi.items(); k++ ) { const char* campo = campi.row(k); TString_array vl; int i = ini.list_variables(vl, TRUE, campo); //for ( int j = 0; j < vl.items(); j++ ) int pos = vl.find(FIELD); TExpr* espressione = vl.row(pos).get(1); arr_exprs.add(espressione) TToken_string variabile = vl.row(pos); int pos = vl.find(LEN); TToken_string variabile = vl.row(pos); int pos = vl.find(DEC); TToken_string variabile = vl.row(pos); } /* TText_field campo() arr_fields.add(); */ } } int at5100(int argc, char* argv[]) { TTransfer_app a; a.run(argc, argv, "Scarico dati"); return 0; }