diff --git a/src/include/maskfld.cpp b/src/include/maskfld.cpp index 1bda846b6..00ff9d99f 100755 --- a/src/include/maskfld.cpp +++ b/src/include/maskfld.cpp @@ -1629,7 +1629,31 @@ void TEditable_field::test_drivers() const // Ritorna il messaggio d'errore associato al campo const char* TEditable_field::get_warning() const -{ return _warning ? (const char*)*_warning : ""; } +{ + TString & msg = get_tmp_string(255); + TString str(_warning != nullptr ? *_warning : EMPTY_STRING); + int pos; + + while ((pos = str.find("#")) >= 0) + { + if (pos > 0) + msg << str.left(pos); + + int space_pos = str.find(" ", pos); + short fld = atoi(str.mid(pos + 1, space_pos - pos - 1)); + + if (fld == 0) + msg << get(); + else + msg << mask().get(fld); + if (space_pos >= 0) + str.ltrim(space_pos); + else + str.cut(0); + } + msg << str; + return msg; +} bool TEditable_field::parse_item(TScanner& scanner) { @@ -1713,7 +1737,7 @@ bool TEditable_field::parse_item(TScanner& scanner) if (scanner.key() == "WA") { - const char* msg = dictionary_translate(scanner.string()); + const char* msg = dictionary_translate(scanner.line()); set_warning(msg); return true; } diff --git a/src/include/transaction.cpp b/src/include/transaction.cpp index d6648e37d..82836f8fe 100644 --- a/src/include/transaction.cpp +++ b/src/include/transaction.cpp @@ -671,7 +671,7 @@ const char * TTransaction::record_header(const char * msg) const str << get(fld, -1, _executer) << " "; } else - str << get(m.mid(pos + 1, space_pos - pos - 1), -1, _executer); + str << get(fld, -1, _executer); if (space_pos >= 0) m.ltrim(space_pos); else