Patch level : XX.282

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Riportata la versione 01.05 patch 282


git-svn-id: svn://10.65.10.50/trunk@8021 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1999-04-06 16:31:40 +00:00
parent a0a36d6b33
commit 583a7074cb
19 changed files with 118 additions and 257 deletions

View File

@ -519,18 +519,6 @@ void TApplication::set_perms()
}
}
void TApplication::open_files(int logicnum, ...)
{
va_list marker;
va_start(marker, logicnum);
while (logicnum > 0)
{
CHECKD(_used_files.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
_used_files.add(new TLocalisamfile(logicnum), logicnum);
logicnum = va_arg(marker, int);
}
}
// @doc EXTERNAL
// @mfunc Legge il parametro /uUTENTE e lo toglie dalla lista

View File

@ -10,21 +10,6 @@
#include <statbar.h>
/* COLOR MASK_BACK_COLOR = COLOR_DKCYAN;
COLOR MASK_LIGHT_COLOR = COLOR_CYAN;
COLOR MASK_DARK_COLOR = COLOR_GRAY;
COLOR BTN_BACK_COLOR = COLOR_LTGRAY;
COLOR BTN_LIGHT_COLOR = COLOR_WHITE;
COLOR BTN_DARK_COLOR = COLOR_GRAY;
COLOR TOOL_BACK_COLOR = COLOR_GRAY;
COLOR NORMAL_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_LTGRAY;
COLOR DISABLED_COLOR = COLOR_GRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = NORMAL_COLOR;
COLOR FOCUS_BACK_COLOR = COLOR_CYAN;
BOOLEAN CAMPI_SCAVATI = FALSE;
BOOLEAN AUTOSELECT = FALSE; */
COLOR MASK_BACK_COLOR = COLOR_LTGRAY;
COLOR MASK_LIGHT_COLOR = COLOR_WHITE;
COLOR MASK_DARK_COLOR = COLOR_GRAY;
@ -38,8 +23,8 @@ COLOR DISABLED_COLOR = COLOR_DKGRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = NORMAL_COLOR;
COLOR FOCUS_BACK_COLOR = COLOR_YELLOW;
BOOLEAN CAMPI_SCAVATI = FALSE;
BOOLEAN AUTOSELECT = FALSE;
bool CAMPI_SCAVATI = FALSE;
bool AUTOSELECT = FALSE;
#ifndef STX_DATA
// Very deep hacking

View File

@ -430,7 +430,6 @@ void TDate::addyear(int nyear)
_val = makedata(wday, wmonth, wyear);
}
bool TDate::isdate(const char* s)
{
const int len = strlen(s);
@ -475,16 +474,6 @@ bool TDate::ok() const
return _val > 0;
}
TDate& TDate::operator +=(long nday)
{
const long d = day() + nday;
if (d > 0 && d < 29)
_val += nday;
else
_val = julian2date(date2julian() + nday);
return *this;
}
// @doc EXTERNAL

View File

@ -1,7 +1,5 @@
#define __FORM_CPP
#include <ctype.h>
#include <stdlib.h>
#include <applicat.h>
#include <currency.h>
#include <defmask.h>
@ -613,7 +611,7 @@ bool TForm_item::update()
{
if (_prompt.right(1) == "#")
{
TString256 prompt(_prompt);
TString prompt(_prompt);
for (int i = prompt.len()-2; i >= 0; i--)
if (prompt[i] != '#') break;
prompt.cut(i+1);
@ -644,19 +642,19 @@ void TForm_item::print_on(TToken_string& row) const
const TString& TForm_item::picture() const
{
NFCHECK("Can't get the picture of a generic form item!");
return EMPTY_STRING;
CHECK(0, "Can't get the picture of a generic form item!");
return _prompt;
}
void TForm_item::set_picture(const char*)
{
NFCHECK("Can't set the picture of a generic form item!");
CHECK(0, "Can't set the picture of a generic form item!");
}
TToken_string& TForm_item::memo_info()
{
NFCHECK("Can't get a memo of a generic form item!");
return (TToken_string&)EMPTY_STRING;
CHECK(0, "Can't get a memo of a generic form item!");
return TToken_string();
}
short TForm_item::x()
@ -838,7 +836,6 @@ bool TForm_subsection::print_qtitle()
bool TForm_subsection::parse(TScanner& s)
{
_section->add_subsection(this);
name(s.pop());
//_width = s.integer(); // ...unused
@ -953,8 +950,7 @@ bool TForm_subsection::print_body(sec_print_mode showfields)
if (cur->is_first_match(_file_id))
{
bool again;
do
{
do {
form().match_result(_file_id);
ok |= _ssec.update_and_print(showfields,at_newpage);
_ssec.set_repeat_count(++i);
@ -962,8 +958,8 @@ bool TForm_subsection::print_body(sec_print_mode showfields)
again=form().last_match_result(_file_id);
else
again= cur->next_match(_file_id);
} while (again);
ok |= (_ssec.repeat_count()>0); // (ovvero, sempre true: se c'e' un first match)
} while (again);
ok |=_ssec.repeat_count()>0; // (ovvero, sempre true: se c'e' un first match)
}
// _ssec.set_repeat_count(0);
}
@ -973,84 +969,6 @@ bool TForm_subsection::print_body(sec_print_mode showfields)
}
bool TForm_subsection::edit(TMask& m)
{
// mask con nome e bottone edit contents / annulla
TMask mu("ba2100u");
mu.set(F_CAPTION, _name);
mu.set(F_WIDTH, _width);
mu.set(F_HEIGHT, _height);
mu.set(F_X, _x);
mu.set(F_Y, _y);
mu.set_handler(F_BUT_FILE1, but_file_handler_sub);
if (_file_id != -1)
{
// set file description
form().rel_desc().set_cur_file(_file_id);
TString80 desc; desc << form().rel_desc().file_desc();
mu.set(F_FILE1, desc);
}
KEY k;
// vedere se e' nuova etc.
// gestire aggiunta / modifica menu
while ((k = mu.run()) != K_ESC)
{
if (mu.field(F_CAPTION).dirty())
_name = mu.get(F_CAPTION);
if (mu.field(F_WIDTH).dirty())
_width = mu.get_int(F_WIDTH);
if (mu.field(F_HEIGHT).dirty())
_height = mu.get_int(F_HEIGHT);
if (mu.field(F_X).dirty())
_x = mu.get_int(F_X);
if (mu.field(F_Y).dirty())
_y = mu.get_int(F_Y);
if (mu.field(F_FILE1).dirty())
{
if (mu.get(F_FILE1).empty())
_file_id = -1;
else
_file_id = form().rel_desc().file_num();
}
if (k == K_INS)
_ssec.edit(_name);
else if (k == K_DEL)
{
// remove myself
}
else if (k == K_ENTER)
break;
}
return k != K_ESC;
}
void TForm_subsection::print_on(ostream& out) const
{
out << "SEZIONE " << _name << ' ' << _width << ' ' << _height
<< ' ' << _x << ' ' << _y;
if (_file_id != -1)
out << " FILE " << _file_id;
out << "\n";
for (word i = 0; i < _ssec.fields(); i++)
out << _ssec.field(i);
out << "\nEND" << "\n";
}
// @mfunc Abilita (default) o disabilita la stampa di tutti i campi della sottosezione
/*void TForm_subsection::show(bool on)
@ -1159,7 +1077,7 @@ void TForm_string::put_paragraph(const char* s)
#ifdef DBG
if (plen>0 && *s)
NFCHECK("Nei form la stampa di un item su più righe con prompt ora non pone più il prompt isolato sulla prima riga ma allinea a sinistra del prompt ");
yesno_box("Nei form la stampa di un item su più righe con prompt ora non pone più il prompt isolato sulla prima riga ma allinea a sinistra del prompt ");
#endif
for (int i=0; (s = p.get()) != NULL && i < h; i++)
{
@ -1464,57 +1382,25 @@ const char* TForm_number::example() const
///////////////////////////////////////////////////////////
class TForm_currency : public TForm_number
{
TString16 _driver_id;
TForm_item* _driver;
protected: // TForm_string
virtual const char* class_name() const { return "VALUTA"; }
virtual bool parse_head(TScanner& scanner);
virtual bool parse_item(TScanner& scanner);
virtual bool update();
const char* codval();
public:
virtual TObject* dup() const;
TForm_currency(TPrint_section* section);
TForm_currency(TPrint_section* section) : TForm_number(section) {}
virtual ~TForm_currency() {}
};
///////////////////////////////////////////////////////////
// TForm_currency
///////////////////////////////////////////////////////////
bool TForm_currency::parse_head(TScanner& scanner)
{
return TForm_item::parse_head(scanner);
}
bool TForm_currency::parse_item(TScanner& scanner)
{
if (scanner.key() == "DR") // DRIVENBY
{
_driver_id = scanner.pop();
return TRUE;
}
return TForm_number::parse_item(scanner);
}
const char* TForm_currency::codval()
{
if (_driver == NULL)
{
if (_driver_id.empty())
return "_FIRM";
_driver = &find_field(_driver_id);
}
return _driver->get();
}
TObject* TForm_currency::dup() const
{
TForm_currency *fn = new TForm_currency(_section);
copy_to_form_item(fn);
fn->_driver_id = _driver_id;
return fn;
}
@ -1524,43 +1410,25 @@ bool TForm_currency::update()
{
TForm_item::update();
int nm = 0;
if (_message.objptr(1) != NULL)
{
const real oldn(get());
if (oldn.is_zero())
nm =1;
}
const real oldn(get());
const int nm = (_message.objptr(1) != NULL && oldn.is_zero()) ? 1 : 0;
do_message(nm);
const real n(get());
TCurrency curr(n, codval(), ZERO, _flag.price != 0);
real n(get());
TCurrency curr(n, "_FIRM");
curr.set_price(_flag.price != 0);
const TString& codval = form().get_curr_codval();
if (codval.not_empty())
curr.change_value(codval);
const TString& pic = picture();
TString80 str;
if (n.is_zero())
{
if (pic.not_empty() && pic.right(1) != "#")
str = curr.string(TRUE);
}
else
{
const bool dotted = pic.empty() || pic.find('.') >= 0;
str = curr.string(dotted);
}
str.right_just(width() - prompt().len());
put_paragraph(str);
// Niente apply_format(), la picture viene ignorata per i TForm_currency
const bool dotted = picture().empty() || picture().find('.') >= 0;
put_paragraph(curr.string(dotted));
}
return TRUE;
}
TForm_currency::TForm_currency(TPrint_section* section)
: TForm_number(section), _driver(NULL)
{ }
///////////////////////////////////////////////////////////
// TForm_date
@ -2346,28 +2214,27 @@ bool TPrint_section::update()
return ok;
}
TForm_item& TPrint_section::find_field(short id) const
{
TForm_item * f = find_field_everywhere(id,this);
if (f) return *f;
NFCHECK("Can't find item with id %d", id);
yesnofatal_box("Can't find item with id %d", id);
return field(0);
}
// Ricerca i campi verso l'alto:
// prima la sezione attuale, poi le sezioni sopra
TForm_item* TPrint_section::find_field_everywhere(short id,const TPrint_section *starting_section) const
TForm_item *TPrint_section::find_field_everywhere(short id,const TPrint_section *starting_section) const
{
TForm_item * f ;
for(word i = 0; i < fields(); i++)
{
f = &field(i);
if (f->id() == id)
return f;
if (f->id() == id) return f;
}
// look into the section above ("father" )
if (section_above() && section_above() != starting_section)
{
if (section_above() && section_above()!=starting_section) {
f=section_above()->find_field_everywhere(id,this);
if (f)
return f;
@ -2376,12 +2243,11 @@ TForm_item* TPrint_section::find_field_everywhere(short id,const TPrint_section
for (int j = 0; j < subsections(); j++)
{
const TPrint_section &bs=subsection(j)->printsection();
if (&bs!=starting_section)
{
f = bs.find_field_everywhere(id,this);
if (&bs!=starting_section) {
f=bs.find_field_everywhere(id,this);
if (f)
return f;
}
}
}
return NULL;
}
@ -2390,7 +2256,7 @@ TForm_item& TPrint_section::find_field(const char *sec_name) const
{
TForm_item * f = find_field_everywhere(sec_name,this);
if (f) return *f;
NFCHECK("Can't find item with id %s", sec_name);
yesnofatal_box("Can't find item with id %s", sec_name);
return field(0);
}
@ -2399,15 +2265,13 @@ TForm_item& TPrint_section::find_field(const char *sec_name) const
TForm_item *TPrint_section::find_field_everywhere(const char *sec_name,const TPrint_section *starting_section) const
{
// search here
for (int j = 0; j < subsections(); j++)
{
for (int j = 0; j < subsections(); j++) {
const char *n=subsection(j)->name();
if (strcmp(n,sec_name)==0)
return subsection(j);
}
// search down
for (j = 0; j < subsections(); j++)
{
for (j = 0; j < subsections(); j++) {
TForm_item *it=subsection(j)->printsection().find_field_everywhere(sec_name,starting_section);
if (it)
return it;
@ -2549,14 +2413,14 @@ bool TForm::parse_sortedjoin(TScanner& scanner)
if (filter.empty() && sortexp.empty())
yesnofatal_box("Sort senza espressioni di ordinamento o filtri");
TRelation * sortrel=new TRelation(atoi(j));
while (scanner.popkey() != "JO" )
while (ok && scanner.popkey() != "JO" )
{
if (scanner.key() == "US") // USING keyword
{
TString16 subj(scanner.pop()); // File or table
parse_join_param(scanner,sortrel,subj,atoi(j));
} else
NFCHECK("Token non riconosciuto in SORT:%s",scanner.key());
yesnofatal_box("Token non riconosciuto in SORT:%s",scanner.key());
}
int to = 0;
@ -3237,15 +3101,37 @@ void TForm::arrange_form()
TString str_pos;
TMask m("ba2100c");
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT
/*
char defPrinter[80];
char szDevice[50];
// get default printer driver
GetProfileString ("windows", "device", ",,,", defPrinter, sizeof(defPrinter));
TToken_string pdev (defPrinter, ',');
GetProfileString ("devices", pdev, "", szDevice, sizeof(szDevice));
pdev.add(szDevice);
device = pdev.get(2);
device = device.left(4); //Legge solo LPTx...
*/
#else
TString device(printer.printername());
FILE* lpt = fopen(device,"w");
if (lpt == NULL)
fatal_box("Impossibile aprire il device %s.",device);
#endif
// _ipy viene assunto uguale per entrambi i posizionamneti
str_pos = "\017"; // Questo e' 15 in ottale...
for (i=1; i < _ipy; i++) str_pos << "\n";
os_open_spool_row(printer().printername());
os_spool_row(str_pos);
os_close_spool_row();
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT
os_spool_row(str_pos);
#else
fprintf(lpt,"%s",(const char*) str_pos);
fflush(lpt); // Salta le righe...
fclose(lpt);
#endif
str_pos = ""; //Azzera la stringa di posizionamento
for (i=1; i < _ipx; i++) str_pos << " "; //Aggiunge gli spazi necessari...
if (_ipx > 0)
@ -3258,9 +3144,16 @@ void TForm::arrange_form()
// TString bspc; bspc.fill('\b',str_pos.len()); // Questi servono per tornare indietro...
do
{
os_open_spool_row(printer().printername());
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_NT
os_spool_row(str_pos);
os_close_spool_row();
#else
lpt = fopen(device,"w");
if (lpt == NULL) fatal_box("Impossibile aprire il device %s.",device);
// fprintf(lpt,"%s",(const char*) bspc);
fprintf(lpt,"%s\r",(const char*) str_pos);
fflush(lpt);
fclose(lpt);
#endif
} while (m.run() == K_ESC); // cicla sulla stampa posizionamento...
/* const int h = height(odd_page);
str_pos.cut(0);
@ -4555,7 +4448,7 @@ void TForm::match_result(int file,int val)
info.match_number=((TForm_skip_info &)_skip_info[file]).match_number;
if (val)
info.match_number++;
info.match_result = val != 0;
info.match_result=val;
_skip_info.add(info,file);
}
}

View File

@ -1768,7 +1768,7 @@ int TSystemisamfile::update(
if (toconvert)
fname = filename();
if (toconvert) && (dir.eox() > 0L || fname.exist()))
if (toconvert && (dir.eox() > 0L || fname.exist()))
{
TRecnotype ni = 0L;
TFilename tmpfname; tmpfname.temp("tf");
@ -2198,10 +2198,10 @@ int TSystemisamfile::load(
s2[strlen(s2) - 1] = '\0';
}
if (curr().type((const TString&) fld[j]) == _memofld)
sfld = esc(s2);
s1 = esc(s2);
else
sfld = s2;
put((const TString&) fld[j], sfld);
s1 = s2;
put((const TString&) fld[j], s1);
}
}
@ -2409,7 +2409,7 @@ void TRectype::init(int logicnum)
if (wdir.is_com())
wdir.get(_logicnum, _nolock, _comdir, _sysdirop);
_length = wdir.len();
has_memo_fld = _length > 0 && lf_has_memo(_logicnum);
has_memo_fld = _length > 0 && rec_has_memo(rec_des());
}
_rec = new char [ _length ];
*_tab = '\0';

View File

@ -1178,7 +1178,6 @@ const char* TEditable_field::prompt() const
return _prompt ? _prompt->caption() : "";
}
<<<<<<< maskfld.cpp
TOperable_field* TEditable_field::add_driver(short id)
{
@ -1966,7 +1965,7 @@ int TBrowse::input_fields()
{
if (*fld != '"' && strchr(fld, '@') == NULL)
{
TMask_field& f = field(f.atodlg(fld));
TMask_field& f = field(field().atodlg(fld));
if (f.active() && f.is_editable())
inp++;
}

View File

@ -459,9 +459,6 @@ public:
// @cmember Esegue il messaggio <p n>-esimo sul campo
bool do_message(int n);
// @cmember Ritorna il messaggio <p n>-esimo del campo
TToken_string* message(int m, bool crea = FALSE);
// @cmember Controlla se il campo ha un messaggio
virtual bool has_message() const
{ return _message != NULL; }

View File

@ -223,8 +223,6 @@ public:
// @cmember Controlla se l'utente ha salvato la disposizione delle colonne
bool user_saved_columns_order() const;
// @cmember Setta la disposizione delle colonne
void set_columns_order(TToken_string* order = NULL);
// @cmember Setta la larghezza della colonna
void set_column_width( const int col, const int width ) const;

View File

@ -619,6 +619,36 @@ BOOL TSocketClient::ReadLine(DWORD, TString& str)
BOOL TSocketClient::HttpGetFile(const char* remote, const char* local)
{
if (!cur_socket->is_open())
return FALSE;
BOOL ok = FALSE;
TString buf(4096);
buf << "GET " << remote << " HTTP/1.0\r\n\r\n";
cur_socket->sync();
cur_socket->write(buf, buf.len());
cur_socket->flush();
if (cur_socket->good())
{
const clock_t start = clock();
long size = 0;
for (int r = 0; !cur_socket->eof(); r++)
{
cur_socket->getline(buf.get_buffer(), buf.size(), '\n');
if (buf.blank())
break;
if (r == 0 && buf.find("404") > 0)
return FALSE; // File not found
if (buf.compare("Content-length:", 15, TRUE) == 0)
{
const int colon = buf.find(':');
size = atol(buf.mid(colon+1));
}
}
ofstream outfile(local, ios::out | ios::binary);
if (outfile.good())
{
TString msg;

View File

@ -314,6 +314,7 @@ int TFile_info::open_low(bool exclusive, bool index)
err = get_error(_handle);
}
return err;
}
int TFile_info::close_low()
{

View File

@ -1289,7 +1289,7 @@ bool TPrint_application::print_one (
to = atoi ((const char *) ttt.get ());
}
// get field val
const TRectype& f = _cur->curr(ln);
TLocalisamfile &f = _cur->file(ln);
if (ft->_flags & TRANS_FLAG)
{
_Transfield *tr = NULL;
@ -1325,16 +1325,16 @@ bool TPrint_application::print_one (
else if (ft->_flags & NUMBER_FLAG)
{
TString80 pict;
real r(f.get(fn));
real r(f.get (fn));
bool isreal = f.type(fn) == _realfld;
bool isreal = f.curr ().type (fn) == _realfld;
if (ft->_flags & PICTURE_FLAG)
pict = pic;
else if (!(ft->_flags & DEC_FLAG) && _picture.not_empty() && isreal)
else if (!(ft->_flags & DEC_FLAG) && *_picture && isreal)
pict = _picture;
if (pict.not_empty())
if (pict.len () > 0)
toprint = r.string (pict);
else if (ft->_flags & DEC_FLAG)
toprint = r.string (ft->_size, ft->_dec);
@ -1346,7 +1346,7 @@ bool TPrint_application::print_one (
}
else if (ft->_flags & STRING_FLAG)
{
toprint = f.get (fn);
toprint = f.curr().get (fn);
// perform string extraction
if (from != -1)
toprint = toprint.sub (from, to);
@ -1453,8 +1453,6 @@ bool TPrint_application::print_one (
break;
}
case 'r':
{
if (pr->_fmt.len () == 2 && _picture.not_empty())
{
const real& rrr = *(real*)pr->_what;
const char* fff = pr->_fmt;
@ -1520,7 +1518,7 @@ bool TPrint_application::print_one (
break;
}
//if (_auto_ff && last /* _maxrox */ < printer().formlen ())
if (_auto_ff && printer().rows_left() > 0)
if (_auto_ff && prn.rows_left() > 0)
printer().formfeed ();
delete pos;

View File

@ -452,7 +452,7 @@ real& real::operator /= (const real & b)
bool real::is_zero () const
{
return diszero (ptr ());
return (bool) diszero (ptr ());
}
// @doc EXTERNAL

View File

@ -155,11 +155,6 @@ class real : public TObject
// @cmember:(INTERNAL) Numero reale
DEC _dec;
// @access Protected Member
protected:
// @cmember Permette di stampare l'oggetto
virtual void print_on(ostream& out) const;
// @access Protected Member
protected:
// @cmember Permette di stampare l'oggetto

View File

@ -1563,7 +1563,6 @@ void TRelation_application::mask2ini(const TMask& m, TConfig& ini)
ini.set("Firm", get_firm(), "Transaction");
TString16 defpar; defpar << get_relation()->lfile().num();
TString str(80);
for (int f = 0; f < m.fields(); f++)
{

View File

@ -920,7 +920,6 @@ static bool _last_created = FALSE;
// @rdesc Ritorna l'handle del file aperto
FILE* TCursor::open_index(
bool create) // @parm Indica se creare l'indice nel caso manchi (default FALSE)
<<<<<<< relation.cpp
{
_last_created = create;
if (_indexname.empty())

View File

@ -108,7 +108,6 @@ void operator delete(
}
#endif // FOXPRO
#endif // DBG

View File

@ -265,7 +265,7 @@ TString& TString::operator <<(const TObject& obj)
ostrstream out(spark.get_buffer(), spark.size());
obj.print_on(out);
out << ends;
return operator <<(spork);
return operator <<(spark);
}

View File

@ -82,7 +82,6 @@ TString & TVariable_field::get() const
{
CHECK(_rec, "NULL Record pointer with an expression");
_rec->set_variables(_e);
_e->setvar(i, _rec->get(_e->varname(i)));
v = _e->as_string();
}
else

View File

@ -126,12 +126,6 @@ public:
// @cmember Setta l'<p n>.esime entry della paletta al colore <p c>
void set_clut(byte n, COLOR c);
// @cmember Legge il colore del pixel
COLOR get_pixel(int x, int y) const;
// @cmember Setta il colore del pixel
void set_pixel(int x, int y, COLOR c);
// @cmember Costruttore. Viene passato il nome del file
TImage(const char* n);
// @cmember Costruttore. Viene passato l'identificatore dell'immagine sul file di risorsa
@ -231,8 +225,6 @@ public:
// @cmember Ritorna il descrittore della finestra
virtual WINDOW win() const
{ return _win; }
// @cmember Ritorna il descrittore della finestra padre
WINDOW parent() const;
// @cmember Gestisce la pressione del tasto
virtual bool on_key(KEY)