Patch level : 12.0 no-patch
Files correlati : Commento : xml.ccp Aggiunto Append e corretta SetAttr msksheet.cpp modificata delete in safe_delete
This commit is contained in:
parent
b82b932ff4
commit
f1e9dcb75e
@ -2939,10 +2939,9 @@ bool TSheet_field::is_kind_of(word cid) const
|
|||||||
// Certified 100%
|
// Certified 100%
|
||||||
TSheet_field::~TSheet_field()
|
TSheet_field::~TSheet_field()
|
||||||
{
|
{
|
||||||
if (_sheetfile!=NULL)
|
safe_delete(_sheetfile);
|
||||||
delete _sheetfile;
|
if (!_external_record)
|
||||||
if (_linee_rec!=NULL && !_external_record)
|
safe_delete(_linee_rec);
|
||||||
delete _linee_rec;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3899,8 +3898,8 @@ void TSheet_field::check_row(int n, int mode)
|
|||||||
// Certified: ...under debug..
|
// Certified: ...under debug..
|
||||||
void TSheet_field::set_lines_record(TRecord_array & r_a)
|
void TSheet_field::set_lines_record(TRecord_array & r_a)
|
||||||
{
|
{
|
||||||
if (_linee_rec && !_external_record)
|
if (!_external_record)
|
||||||
delete _linee_rec;
|
safe_delete(_linee_rec);
|
||||||
_linee_rec= & r_a;
|
_linee_rec= & r_a;
|
||||||
_external_record = true; // il record attuale è esterno...
|
_external_record = true; // il record attuale è esterno...
|
||||||
}
|
}
|
||||||
@ -3933,7 +3932,7 @@ TRectype* TSheet_field::putkey(const TRelation& r)
|
|||||||
}
|
}
|
||||||
return &_sheetfile->curr();
|
return &_sheetfile->curr();
|
||||||
}
|
}
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Certified: ...under debug..
|
// Certified: ...under debug..
|
||||||
@ -3989,7 +3988,7 @@ bool TSheet_field::autoload(const TRelation& rel)
|
|||||||
for (int i = 1; i <= last_line; i++)
|
for (int i = 1; i <= last_line; i++)
|
||||||
autoload_line(i,_linee_rec->row(i, true));
|
autoload_line(i,_linee_rec->row(i, true));
|
||||||
|
|
||||||
return(0);
|
return false;
|
||||||
}
|
}
|
||||||
return _enable_autoload;
|
return _enable_autoload;
|
||||||
}
|
}
|
||||||
|
@ -358,12 +358,15 @@ int TRecord_array::read(TRectype* filter)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
_data.destroy();
|
_data.destroy();
|
||||||
set_key(filter);
|
set_key(filter);
|
||||||
|
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
|
|
||||||
if (!filter->empty())
|
if (!filter->empty())
|
||||||
{
|
{
|
||||||
TLocalisamfile f(_file);
|
TLocalisamfile f(_file);
|
||||||
TRectype* rec = (TRectype*)filter->dup();
|
TRectype* rec = (TRectype*)filter->dup();
|
||||||
|
|
||||||
err = rec->read(f, _isgteq);
|
err = rec->read(f, _isgteq);
|
||||||
for (int e = err; e == NOERR && good(*rec); e = rec->next(f))
|
for (int e = err; e == NOERR && good(*rec); e = rec->next(f))
|
||||||
{
|
{
|
||||||
|
@ -96,7 +96,7 @@ enum TIsamerr {
|
|||||||
_islocked = 225, // @emem Record bloccato
|
_islocked = 225, // @emem Record bloccato
|
||||||
_isbadtrc = 226, // @emem Tracciato Record errato o mancante
|
_isbadtrc = 226, // @emem Tracciato Record errato o mancante
|
||||||
_istrcerr = 227, // @emem Tracciato record incoerente
|
_istrcerr = 227, // @emem Tracciato record incoerente
|
||||||
_isnowarning = 86552 // @emem Il messaggio di errore è già stato visualizzato
|
_isnowarning = 86552 // @emem Il messaggio di errore è già stato visualizzato - Doppia puttanata di Mattia Tollari per l'idea e per il valore
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef long TRecnotype;
|
typedef long TRecnotype;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <dongle.h>
|
#include <dongle.h>
|
||||||
#include <real.h>
|
#include <real.h>
|
||||||
|
#include <utility.h>
|
||||||
#include <xml.h>
|
#include <xml.h>
|
||||||
|
|
||||||
#include <incstr.h>
|
#include <incstr.h>
|
||||||
@ -142,7 +143,7 @@ TXmlItem& TXmlItem::SetAttr(const char* strAttr, const char* strVal)
|
|||||||
if (m_Attributes == NULL)
|
if (m_Attributes == NULL)
|
||||||
m_Attributes = new TAssoc_array;
|
m_Attributes = new TAssoc_array;
|
||||||
m_Attributes->remove(strAttr);
|
m_Attributes->remove(strAttr);
|
||||||
if (strVal && *strVal)
|
if (strVal)
|
||||||
m_Attributes->add(strAttr, new TXmlAttr(strVal));
|
m_Attributes->add(strAttr, new TXmlAttr(strVal));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -518,7 +519,11 @@ void TXmlItem::AsString(TString& str) const
|
|||||||
{
|
{
|
||||||
char* buf = str.get_buffer(nSize);
|
char* buf = str.get_buffer(nSize);
|
||||||
memset(buf, 0, nSize);
|
memset(buf, 0, nSize);
|
||||||
|
#ifdef WIN32
|
||||||
ostrstream outf(buf, nSize);
|
ostrstream outf(buf, nSize);
|
||||||
|
#else
|
||||||
|
ostringstream outf(buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
Write(outf, 0);
|
Write(outf, 0);
|
||||||
if (buf[nSize-1] == '\0')
|
if (buf[nSize-1] == '\0')
|
||||||
@ -532,6 +537,15 @@ void TXmlItem::Save(const char* strFilename) const
|
|||||||
Write(outf, 0);
|
Write(outf, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TXmlItem::Append(const char* strFilename) const
|
||||||
|
{
|
||||||
|
bool AppendToExisting = fexist(strFilename);
|
||||||
|
ofstream outf;
|
||||||
|
|
||||||
|
outf.open(strFilename, ios::app);
|
||||||
|
Write(outf, AppendToExisting);
|
||||||
|
}
|
||||||
|
|
||||||
bool TXmlItem::Load(const char* strFilename)
|
bool TXmlItem::Load(const char* strFilename)
|
||||||
{
|
{
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
|
@ -67,6 +67,7 @@ public:
|
|||||||
|
|
||||||
void Save(const char* strFilename) const;
|
void Save(const char* strFilename) const;
|
||||||
bool Load(const char* strFilename);
|
bool Load(const char* strFilename);
|
||||||
|
void Append(const char* strFilename) const;
|
||||||
|
|
||||||
TXmlItem* ForEach(XmlItemCallback cb, long jolly = 0);
|
TXmlItem* ForEach(XmlItemCallback cb, long jolly = 0);
|
||||||
TXmlItem* FindFirst(const char* strTag) const; // Recursive
|
TXmlItem* FindFirst(const char* strTag) const; // Recursive
|
||||||
|
Loading…
x
Reference in New Issue
Block a user