Patch level : 10.0
Files correlati : lv0 Ricompilazione Demo : [ ] Commento : Corretta valutazione BETWEEN nelle espressioni. Ora gestisce correttamente anche limiti del tipo "000" git-svn-id: svn://10.65.10.50/trunk@17346 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f1ab3282b3
commit
4f5788f438
@ -361,6 +361,14 @@ static bool str2date(const TString& s, TDate& d)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool all_zeroes(const TString& str)
|
||||||
|
{
|
||||||
|
bool yes = str.not_empty();
|
||||||
|
for (const char* s = str; *s && yes; s++)
|
||||||
|
yes = (*s == '0') || isspace(*s);
|
||||||
|
return yes;
|
||||||
|
}
|
||||||
|
|
||||||
void TExpression::eval()
|
void TExpression::eval()
|
||||||
{
|
{
|
||||||
TEval_stack evalstack;
|
TEval_stack evalstack;
|
||||||
@ -763,8 +771,10 @@ void TExpression::eval()
|
|||||||
break;
|
break;
|
||||||
case _between:
|
case _between:
|
||||||
{
|
{
|
||||||
const TString& s3 = evalstack.pop_string();
|
TString& s3 = evalstack.pop_string();
|
||||||
const TString& s2 = evalstack.pop_string();
|
if (all_zeroes(s3)) s3.cut(0); // Svuota una stringa finale di soli zeri
|
||||||
|
TString& s2 = evalstack.pop_string();
|
||||||
|
if (all_zeroes(s2)) s2.cut(0); // Svuota una stringa iniziale di soli zeri
|
||||||
const TString& s1 = evalstack.pop_string();
|
const TString& s1 = evalstack.pop_string();
|
||||||
bool good = true;
|
bool good = true;
|
||||||
if (s2.full() || s3.full())
|
if (s2.full() || s3.full())
|
||||||
|
@ -1337,17 +1337,11 @@ bool TSheet::export_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
TSheet& s = (TSheet&)f.mask();
|
TSheet& s = (TSheet&)f.mask();
|
||||||
TString cap; s.get_caption(cap);
|
TString cap; s.get_caption(cap);
|
||||||
|
if (cap.blank())
|
||||||
|
cap = "export";
|
||||||
TFilename name;
|
TFilename name;
|
||||||
name.tempdir();
|
name.tempdir(); name.add(cap); name.ext("xls");
|
||||||
name.add(cap);
|
if (name.full()) // Dummy test
|
||||||
name.ext("xls");
|
|
||||||
/* Non vogliono pedere tempo a Milano!
|
|
||||||
FILE_SPEC fs;
|
|
||||||
xvt_fsys_convert_str_to_fspec(name, &fs);
|
|
||||||
if (xvt_dm_post_file_save(&fs, TR("Selezionare il file di destinazione")) == FL_OK)
|
|
||||||
{
|
|
||||||
xvt_fsys_convert_fspec_to_str(&fs, name.get_buffer(), name.size());
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
ofstream xls(name);
|
ofstream xls(name);
|
||||||
const char sep = '\t';
|
const char sep = '\t';
|
||||||
@ -1364,11 +1358,10 @@ bool TSheet::export_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
xls << tab << endl;
|
xls << tab << endl;
|
||||||
|
|
||||||
for (long n = 0; n < s.items(); n++)
|
for (long i = 0; i < s.items(); i++)
|
||||||
{
|
{
|
||||||
const TToken_string& r = s.row(n);
|
tab = s.row(i);
|
||||||
tab = r;
|
tab.replace('|', sep);
|
||||||
tab.replace(r.separator(), sep);
|
|
||||||
tab.separator(sep);
|
tab.separator(sep);
|
||||||
for (int c = 0; c < columns; c++)
|
for (int c = 0; c < columns; c++)
|
||||||
{
|
{
|
||||||
@ -1382,9 +1375,9 @@ bool TSheet::export_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
xls << tab << endl;
|
xls << tab << endl;
|
||||||
}
|
}
|
||||||
xls.close();
|
|
||||||
xvt_sys_goto_url(name, "open");
|
|
||||||
}
|
}
|
||||||
|
if (name.exist())
|
||||||
|
xvt_sys_goto_url(name, "open");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user