- Aggiunto CHECK presenza del tracciato letto su file testo

- Corretta la gestione dl default per i file dei Fieldref (ora prende
	il main della relazione su cui si scrive/legge)
- Spostate funzioni di formattazione dalla sezione public a protected


git-svn-id: svn://10.65.10.50/trunk@5490 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-10-30 10:05:32 +00:00
parent 27c611a099
commit 83a91f61f2
2 changed files with 22 additions and 18 deletions

@ -237,10 +237,6 @@ void TFile_text::set_rec_parm(TConfig& config, const char* section)
{
TFieldref field;
field = obj;
if (field.file()==0 && tmprel )
{
field.set_file(tmprel->lfile().num());
}
tc.set_field(field);
continue;
}
@ -310,7 +306,7 @@ void TFile_text::set_rec_parm(TConfig& config, const char* section)
}
tr->set_relation(tmprel);
//aggiungo il tracciato record all'assoc_array dei tracciati record
//aggiungo il tracciato record all'assoc_array dei tracciati record
_tracciati_record.add(sectkey, tr);
}
@ -413,13 +409,14 @@ int TFile_text::read(TRecord_text& rec)
TString tipo = buffer.mid(_typepos, _typelen);
tipo.trim();
rec.set_type(tipo);//istanzio il tipo del record text
TTracciato_record& tr = *t_rec(tipo);
TTracciato_record* tr = t_rec(tipo);
CHECK(tr,"Tipo di tracciato record non riconosciuto");
//ora che ho il tracciato record devo scandire i tracciati campo e caricare il record text
TArray& a_tc = tr.tracciati_campo();
TArray& a_tc = tr->tracciati_campo();
int items = a_tc.items();
for (int i = 0; i < items; i++)
{
TTracciato_campo& tc = tr.get(i);
TTracciato_campo& tc = tr->get(i);
int pos = tc.position();
int len = tc.length();
lavoro = buffer.mid(pos, len);
@ -518,7 +515,9 @@ void TFile_text::_autoload(TRecord_text& rec, TCursor& cur , TTracciato_record&
for (int i = 0; i < items; i++)
{
TTracciato_campo& tc = tr.get(i);
const TFieldref& field = tc.field();
TFieldref field = tc.field();
if (field.file()==0)
field.set_file(rel.lfile().num());
if (!field.name().empty())
campo = field.read(rel);
TString message = tc.message();
@ -567,9 +566,11 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
for (int i = 0; i < items; i++)
{
const TTracciato_campo& tc = tr.get(i);
const TFieldref& field = tc.field();
TFieldref field(tc.field());
if (field.name().not_empty())
{
if (field.file()==0)
field.set_file(rel.lfile().num());
valore = rec.row(i);
// formatta il campo del file di testo secondo le specifiche del campo su file isam
// preformat_field(rel,field,rec,valore);
@ -600,7 +601,7 @@ int TFile_text::_autosave(TRelation& rel, const TRecord_text& rec, TTracciato_re
}
break;
default:
valore = format_field(tc, valore);//formatta il campo secondo le specifiche del record
valore = format_field(tc, rel.lfile().num(), valore);//formatta il campo secondo le specifiche del record
break;
}
@ -716,9 +717,9 @@ TString& TFile_text::format_textfield(const TTracciato_campo& tc, TString& campo
}
//Formatta la stringa in base al field del file isam
TString& TFile_text::format_field(const TTracciato_campo& tc, TString& campo)
TString& TFile_text::format_field(const TTracciato_campo& tc, short lfile, TString& campo)
{
const TRectype record(tc.field().file());
const TRectype record(tc.field().file() ? tc.field().file() : lfile);
int length = tc.field().len(record);
if (!fpicture(tc).blank())

@ -158,6 +158,14 @@ protected:
void _autoload(TRecord_text& rec, TCursor& cur , TTracciato_record& tr );
// @cmember caricamento automatico della relazione definita nel tracciato dal record_text
int _autosave(TRelation& rel, const TRecord_text& rec, TTracciato_record& tr );
// @cmember formatta la data
void format_date(const TDate& data, const TString& form, TString& data_str);
// @cmember formatta il campo secondo il suo tracciato
TString& format_textfield(const TTracciato_campo& tc, TString& campo);
// @cmember formatta il campo secondo il suo tracciato
TString& format_field(const TTracciato_campo& tc, short lfile, TString& campo);
//effettua modifiche particolari dal cursore al record_text
// <cur> è il cursore della relazione
// <rec> è il record da modificare
@ -231,11 +239,6 @@ public:
//scarica dal record_text il campo di nome <name>
const TString& get_field(const TRecord_text& rec, const char* name);
void format_date(const TDate& data, const TString& form, TString& data_str);//formatta la data
// @cmember formatta il campo secondo il suo tracciato
TString& format_textfield(const TTracciato_campo& tc, TString& campo);
// @cmember formatta il campo secondo il suo tracciato
TString& format_field(const TTracciato_campo& tc, TString& campo);
};
#endif //__FILETEXT_H