Patch level : 2.2
Files correlati : Ricompilazione Demo : [ ] Commento : Velocizzata gestione conversioni in stringa delle date. Elininate un paio di conversioni da stringa a numero e viceversa durante ogni singola put su record git-svn-id: svn://10.65.10.50/trunk@13266 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
1cf194aed9
commit
16276b72a7
@ -179,7 +179,7 @@ void TDate::set_year(int n)
|
||||
|
||||
TDate::operator const char*() const
|
||||
{
|
||||
return string();
|
||||
return stringa();
|
||||
}
|
||||
|
||||
TDate& TDate::operator =(const char* s)
|
||||
@ -189,7 +189,7 @@ TDate& TDate::operator =(const char* s)
|
||||
|
||||
TDate& TDate::operator =(long val)
|
||||
{
|
||||
if (val < 0L)
|
||||
if (val < 0L) // TODAY
|
||||
*this = TDate(val);
|
||||
else
|
||||
_val = val;
|
||||
@ -198,7 +198,7 @@ TDate& TDate::operator =(long val)
|
||||
|
||||
void TDate::print_on(ostream& out) const
|
||||
{
|
||||
out << string();
|
||||
out << stringa();
|
||||
}
|
||||
|
||||
void TDate::read_from(istream& in)
|
||||
@ -215,6 +215,16 @@ TObject* TDate::dup() const
|
||||
return d;
|
||||
}
|
||||
|
||||
const char* TDate::stringa() const
|
||||
{
|
||||
if (_val <= 0)
|
||||
return "";
|
||||
|
||||
TString& dfm = get_tmp_string(10);
|
||||
dfm.format("%02d-%02d-%04d", day(), month(), year());
|
||||
return dfm;
|
||||
}
|
||||
|
||||
// @doc EXTERNAL
|
||||
|
||||
// @mfunc Ritorna la data in formato di stringa (anche in formato ANSI)
|
||||
@ -232,11 +242,11 @@ char* TDate::string(
|
||||
if (!ok() || *this == botime)
|
||||
return "";
|
||||
|
||||
TString& dfm = get_tmp_string(80);
|
||||
if (yearf == ANSI)
|
||||
{
|
||||
yearf = full;
|
||||
ord = amg_date;
|
||||
sep='\0';
|
||||
dfm.format("%08ld", _val);
|
||||
return dfm.get_buffer();
|
||||
}
|
||||
|
||||
TString80 df, yf, mf;
|
||||
@ -288,9 +298,6 @@ char* TDate::string(
|
||||
sep = ' ';
|
||||
|
||||
// build date string
|
||||
|
||||
TString& dfm = get_tmp_string(80);
|
||||
|
||||
switch (ord)
|
||||
{
|
||||
case mga_date:
|
||||
|
@ -72,6 +72,8 @@ public:
|
||||
virtual TObject* dup() const;
|
||||
// @cmember Ritorna la data in formato di stringa (anche in formato ANSI)
|
||||
char* string(TDate_mgafmt year = full, char sep = '-', TDate_mgafmt day = full, TDate_mgafmt month = full, TDate_order ord = gma_date) const ;
|
||||
// @cmember Ritorna la data in formato gg-mm-aaaa
|
||||
const char* stringa() const ;
|
||||
// @cmember Ritorna la data come numero giuliano
|
||||
long date2julian() const;
|
||||
// @cmember Trasforma un numero giuliano in data ANSI
|
||||
|
@ -208,18 +208,15 @@ void __getfieldbuff(byte l, byte t, const char * recin, char *s)
|
||||
|
||||
void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
||||
{
|
||||
int len, i;
|
||||
|
||||
CHECK(recout, "Can't write null record" );
|
||||
|
||||
char s2[40];
|
||||
|
||||
if (t == _datefld)
|
||||
{
|
||||
if (*s)
|
||||
if (s && *s && strlen(s) != 8)
|
||||
{
|
||||
const TDate dt(s);
|
||||
strcpy(s2, dt.string(ANSI));
|
||||
sprintf(s2, "%ld", dt.date2ansi());
|
||||
s = s2;
|
||||
}
|
||||
}
|
||||
@ -237,8 +234,7 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
||||
s = s2;
|
||||
}
|
||||
|
||||
len = strlen(s);
|
||||
|
||||
int len = strlen(s);
|
||||
const bool exceeded = len > l;
|
||||
|
||||
if ((t == _intfld) ||
|
||||
@ -258,7 +254,7 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
||||
|
||||
__field_changed = FALSE;
|
||||
const char c = (t == _intzerofld || t == _longzerofld) ? '0' : ' ';
|
||||
for (i = l - len - 1; i >= 0; i--)
|
||||
for (int i = l - len - 1; i >= 0; i--)
|
||||
{
|
||||
__field_changed |= (recout[i] != c);
|
||||
recout[i] = c;
|
||||
@ -288,7 +284,7 @@ void __putfieldbuff(byte l, byte d, byte t, const char* s, char* recout)
|
||||
__field_changed = TRUE; // Per ora e' meglio cosi'
|
||||
|
||||
strncpy(recout, s, len) ;
|
||||
for (i = l - 1; i >= len; i--)
|
||||
for (int i = l - 1; i >= len; i--)
|
||||
recout[i] = ' ';
|
||||
}
|
||||
}
|
||||
@ -3287,7 +3283,8 @@ void TRectype::put(const char* fieldname, const TCurrency& val)
|
||||
|
||||
void TRectype::put(const char* fieldname, const TDate& val)
|
||||
{
|
||||
put_str( fieldname, val.string(full));
|
||||
// put_str( fieldname, val.string(full));
|
||||
put( fieldname, val.date2ansi());
|
||||
}
|
||||
|
||||
void TRectype::put(const char* fieldname, char val)
|
||||
|
Loading…
x
Reference in New Issue
Block a user