From 92151c5cd518adc2307cf1fc997cd2bfda11415e Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 22 Aug 2005 15:59:05 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : Spostata get_tmp_var dai TISAM_recordset ai TRecordset git-svn-id: svn://10.65.10.50/trunk@13313 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/recset.cpp | 106 ++++++++++++++++++++++++++------------------- include/recset.h | 4 +- 2 files changed, 63 insertions(+), 47 deletions(-) diff --git a/include/recset.cpp b/include/recset.cpp index 6a8ab3fd2..fdc21966b 100755 --- a/include/recset.cpp +++ b/include/recset.cpp @@ -386,6 +386,23 @@ int TRecordset::find_column(const char* column_name) const return i; } +TVariant& TRecordset::get_tmp_var() const +{ + static TArray _page; // Variants to be returned by get + static int _next_var = 0; // Index of next variant to be returned + + if (_next_var >= 32) + _next_var = 0; + TVariant* var = (TVariant*)_page.objptr(_next_var); + if (var == NULL) + { + var = new TVariant; + _page.add(var, _next_var); + } + _next_var++; + return *var; +} + const TVariant& TRecordset::get(const char* column_name) const { if (*column_name == '#') @@ -699,12 +716,22 @@ bool list_custom_files(const char* ext, const char* classe, TString_array& files bool select_custom_file(TFilename& path, const char* ext, const char* library) { - TArray_sheet sheet(-1, -1, 78, 20, TR("Selezione"), HR("Nome@8|Classe@8|Descrizione@50")); + TArray_sheet sheet(-1, -1, 82, 20, TR("Selezione"), HR("Nome@8|Classe@8|Descrizione@50|Custom")); TString_array& files = sheet.rows_array(); bool ok = list_custom_files(ext, library, files); if (ok) { + TFilename path; + FOR_EACH_ARRAY_ROW(files, i, row) + { + path = row->get(0); + path.ext(ext); + path.custom_path(); + if (path.find("custom") > 0) + row->add("X"); + } + ok = sheet.run() == K_ENTER; if (ok) { @@ -982,36 +1009,42 @@ bool TSQLite::import(int logicnum) TRelation rel(logicnum); TCursor cur(&rel); const TRecnotype items = cur.items(); - cur.freeze(); - const TRectype& curr = rel.curr(); - TString msg; - msg << TR("Esportazione tabella") << ' ' << table; - msg << ": " << items << ' ' << TR("righe"); - TProgind pi(items, msg, true, true); - - TFilename tmp; tmp.tempdir(); tmp.add("sql.txt"); - ofstream txt(tmp, ios::binary); - - for (cur = 0; cur.pos() < items; ++cur) + if (items > 0) { - esporta(curr, txt); - pi.addstatus(1); - if (pi.iscancelled()) - break; + cur.freeze(); + const TRectype& curr = rel.curr(); + + TString msg; + msg << TR("Esportazione tabella") << ' ' << table; + TPerformance_profiler prof(msg); + + msg << ": " << items << ' ' << TR("righe"); + TProgind pi(items, msg, true, true); + + TFilename tmp; tmp.tempdir(); tmp.add("sql.txt"); + ofstream txt(tmp, ios::binary); + + for (cur = 0; cur.pos() < items; ++cur) + { + esporta(curr, txt); + pi.addstatus(1); + if (pi.iscancelled()) + break; + } + + txt.close(); + + msg << '\n' << TR("Importazione tabella") << ' ' << table; + msg << ": " << items << ' ' << TR("righe"); + pi.set_text(msg); + + sql.cut(0) << "COPY " << table << " FROM '" << tmp << "';"; + if (exec(sql)) + set_dbf_time(table, last); // Aggiorna ora di ultima modifica + + ::remove(tmp); } - - txt.close(); - - msg << '\n' << TR("Importazione tabella") << ' ' << table; - msg << ": " << items << ' ' << TR("righe"); - pi.set_text(msg); - - sql.cut(0) << "COPY " << table << " FROM '" << tmp << "';"; - if (exec(sql)) - set_dbf_time(table, last); // Aggiorna ora di ultima modifica - - ::remove(tmp); return true; } @@ -1700,23 +1733,6 @@ TCursor_parser::TCursor_parser(istream& instr, TArray& col) // TISAM_recordset /////////////////////////////////////////////////////////// -TVariant& TISAM_recordset::get_tmp_var() const -{ - static TArray _page; // Variants to be returned by get - static int _next_var = 0; // Index of next variant to be returned - - if (_next_var >= 32) - _next_var = 0; - TVariant* var = (TVariant*)_page.objptr(_next_var); - if (var == NULL) - { - var = new TVariant; - _page.add(var, _next_var); - } - _next_var++; - return *var; -} - const TVariant& TISAM_recordset::get(int logic, const char* fldname) const { const int idx = relation()->log2ind(logic); diff --git a/include/recset.h b/include/recset.h index d0cdd7416..f7e60a2a6 100755 --- a/include/recset.h +++ b/include/recset.h @@ -40,6 +40,7 @@ protected: void find_and_reset_vars(); void parsed_text(TString& sql) const; + TVariant& get_tmp_var() const; public: // Absolutely needed methods virtual TRecnotype items() const pure; @@ -52,7 +53,7 @@ public: // Absolutely needed methods virtual bool move_prev() { return move_to(current_row()-1); } virtual bool move_next() { return move_to(current_row()+1); } virtual bool move_last() { return move_to(items()-1); } - virtual bool bof() const { return current_row() <= 0; } + virtual bool bof() const { return current_row() == TRecnotype(-1); } virtual bool eof() const { return current_row() >= items(); } virtual unsigned int columns() const pure; @@ -129,7 +130,6 @@ protected: TRelation* relation() const; virtual void reset(); - TVariant& get_tmp_var() const; virtual const TVariant& get(int logic, const char* field) const; virtual void set_custom_filter(TCursor& cursor) const { }