Patch level : 12.0 no-patch

Files correlati     :
Commento            :

Aggiunte

 get_string(const char* field)
get_string_zerofilled
get_int
get_long
get_bool
get_real
get_date(const char* field)

ai recordset

zerofill alle stringhe
This commit is contained in:
Alessandro Bonazzi 2020-08-27 13:02:32 +02:00
parent 61f8fe1f76
commit ba2c68bba4
4 changed files with 58 additions and 31 deletions

View File

@ -122,7 +122,11 @@ void fraction::build_fraction (const char *s)
} }
} }
n.strip(",.-+/[]"); n.strip(",.-+/[]");
#ifdef WIN32
sscanf_s(n, "%I64d", &_num); sscanf_s(n, "%I64d", &_num);
#else
sscanf_s(n, "%Ld", &_num);
#endif
if (len_periodo > 0) if (len_periodo > 0)
{ {
_den = 9; _den = 9;

View File

@ -515,38 +515,51 @@ TVariant& TRecordset::get_tmp_var() const
const TVariant& TRecordset::get(const char* column_name) const const TVariant& TRecordset::get(const char* column_name) const
{ {
if (*column_name == '#') if (*column_name == '#')
return get_var(column_name); return get_var(column_name);
char* colon = (char*)strchr(column_name, ':'); //antica porcata char* colon = (char*)strchr(column_name, ':'); //antica porcata
if (colon != NULL) if (colon != NULL)
{ {
*colon = '\0'; *colon = '\0';
const int i = find_column(column_name); const int i = find_column(column_name);
*colon = ':'; *colon = ':';
if (i >= 0) if (i >= 0)
{ {
const TString& str = get(i).as_string(); const TString& str = get(i).as_string();
TString subfield; subfield << (colon+1) << '='; TString subfield; subfield << (colon + 1) << '=';
int s = str.find(subfield); int s = str.find(subfield);
if (s == 0 || (s > 0 && str[s-1] < ' ')) if (s == 0 || (s > 0 && str[s - 1] < ' '))
{ {
s += subfield.len(); s += subfield.len();
const int e = str.find('\n', s); const int e = str.find('\n', s);
TVariant& var = get_tmp_var(); TVariant& var = get_tmp_var();
var.set(str.sub(s, e)); var.set(str.sub(s, e));
return var; return var;
} }
} }
} }
else else
{ {
const int i = find_column(column_name); const int i = find_column(column_name);
if (i >= 0) if (i >= 0)
return get(i); return get(i);
} }
return NULL_VARIANT; return NULL_VARIANT;
}
const TString& TRecordset::get_string_zerofilled(const char* field, const int zero_filled) const
{
if (zero_filled > 0)
{
TString & str = get_tmp_string(1024);
str = get_string(field);
str.zerofill(zero_filled);
return str;
}
return get_string(field);;
} }
const TVariant& TRecordset::get_var(const char* name) const const TVariant& TRecordset::get_var(const char* name) const

View File

@ -101,7 +101,15 @@ public: // Absolutely needed methods
virtual unsigned int columns() const pure; virtual unsigned int columns() const pure;
virtual const TRecordset_column_info& column_info(unsigned int column) const pure; virtual const TRecordset_column_info& column_info(unsigned int column) const pure;
virtual const TRecordset_column_info& add_column_info(const TRecordset_column_info& c) {return c; } virtual const TRecordset_column_info& add_column_info(const TRecordset_column_info& c) {return c; }
virtual const TVariant& get(unsigned int column) const pure; const TString& get_string(const char* field) const { return get(find_column(field)).as_string(); };
const TString& get_string_zerofilled(const char* field, const int zero_filled) const;
int get_int(const char* field) const { return get(find_column(field)).as_int(); }
long get_long(const char* field) const { return get(find_column(field)).as_int(); }
bool get_bool(const char* field) const { return get(find_column(field)).as_bool(); }
real get_real(const char* field) const { return get(find_column(field)).as_real(); }
TDate get_date(const char* field) const { return get(find_column(field)).as_date(); }
virtual const TVariant& get(unsigned int column) const pure;
virtual const TString_array& variables() const { return _varnames; } virtual const TString_array& variables() const { return _varnames; }
virtual const TVariant& get_var(const char* name) const; virtual const TVariant& get_var(const char* name) const;

View File

@ -183,6 +183,8 @@ public:
TString& trim(); TString& trim();
// @cmember Aggiunge spazi a destra fino alla dimensione indicata // @cmember Aggiunge spazi a destra fino alla dimensione indicata
TString& rpad(const int n,const char c=' '); TString& rpad(const int n,const char c=' ');
// @cmember Aggiunge spazi a sinistra fino alla dimensione indicata
TString & zerofill(const int n) { return lpad(n, '0'); }
// @cmember Aggiunge spazi a sinistra fino alla dimensione indicata // @cmember Aggiunge spazi a sinistra fino alla dimensione indicata
TString& lpad(const int n,const char c=' '); TString& lpad(const int n,const char c=' ');