From a9c34fd78ce632ba94f997858d069a4f288b3ce1 Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 13 Dec 1995 15:13:51 +0000 Subject: [PATCH] checks Aggiunto suonino MB_ICONQUESTION alla yesno_box date COntrollate le date costruite con TDate(NULL) strings Aggiunti checks sui separatori delle TToken_string git-svn-id: svn://10.65.10.50/trunk@2282 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/checks.cpp | 3 ++- include/checks.h | 2 +- include/date.cpp | 2 +- include/strings.cpp | 39 ++++++++++++++++++++++++++++++++------- include/strings.h | 14 +++++--------- 5 files changed, 41 insertions(+), 19 deletions(-) diff --git a/include/checks.cpp b/include/checks.cpp index bc083f036..9dd64a1dd 100755 --- a/include/checks.cpp +++ b/include/checks.cpp @@ -144,7 +144,7 @@ int sorry_box( buildmsg(); #if XVT_OS == XVT_OS_WIN - MessageBeep(MB_OK); + MessageBeep(MB_ICONINFORMATION); MessageBox(GetFocus(), msg, "SPIACENTE", MB_OK | MB_ICONINFORMATION); #else xvt_dm_post_note("%s", msg); @@ -172,6 +172,7 @@ int yesno_box( buildmsg(); #if XVT_OS == XVT_OS_WIN + MessageBeep(MB_ICONQUESTION); int r = MessageBox(GetFocus(), msg, "RICHIESTA", MB_YESNO | MB_ICONQUESTION); return r == IDYES; #else diff --git a/include/checks.h b/include/checks.h index 96c136107..6a37dc892 100755 --- a/include/checks.h +++ b/include/checks.h @@ -50,7 +50,7 @@ extern "C" { // @msg CHECKD | Macro che richiama una per stampare messaggi a video #define CHECKD(p, m, d0) ( (p) ? (void)0 : (void) fatal_box( \ - "Check failed in %s, line %d:\n\r%s%d", \ + "Check failed in %s, line %d:\n%s%d", \ __FILE__, __LINE__, m, d0) ) // @parm | p | Condizione per la stampa del messaggio (stampa se FALSE) // @parm | m | Messaggio da stampare diff --git a/include/date.cpp b/include/date.cpp index 754c53f78..1f6f55d00 100755 --- a/include/date.cpp +++ b/include/date.cpp @@ -95,7 +95,7 @@ TDate::TDate(const char* s) { _val = NULLDATE; - const int len = strlen(s); + const int len = (s && *s) ? strlen(s) : 0; if (len != 8 && len != 10) return; diff --git a/include/strings.cpp b/include/strings.cpp index 258fe6f97..6059e3a13 100755 --- a/include/strings.cpp +++ b/include/strings.cpp @@ -405,8 +405,15 @@ const TString& TString::sub( // Certified 100% TString& TString::cut(int n) -{ - _str[n] = '\0'; +{ + CHECKD(n >= 0, "Invalid TString::cut position ", n); + if (n <= _size) + _str[n] = '\0'; +#ifdef DBG + else + yesnofatal_box("Hai tagliato a %d la stringa '%s' lunga %d(%d)", + n, _str, len(), size()); +#endif return *this; } @@ -1020,19 +1027,30 @@ const TFilename& TFilename::temp( // Certified 100% TToken_string::TToken_string(const char* s, char separator) : TString(s), _separator(separator) -{ +{ + CHECK(_separator, "NULL TToken_string separator"); restart(); } // Certified 100% TToken_string::TToken_string(int n, char separator) -: TString(n), _separator(separator), _last(0) -{} +: TString(n), _separator(separator), _last(-1) +{ + CHECK(_separator, "NULL TToken_string separator"); +} // Certified 100% TToken_string::TToken_string(const TToken_string& s) : TString(s), _separator(s._separator), _last(s._last) -{} +{ + CHECK(_separator, "NULL TToken_string separator"); +} + +void TToken_string::separator(char s) +{ + CHECK(s, "NULL TToken_string separator"); + _separator = s; +} // Certified 100% @@ -1044,6 +1062,8 @@ TObject* TToken_string::dup() const // Certified 90% const char* TToken_string::get() { + CHECK(_separator, "Corrupted TToken_string: NULL separator"); + if (_last < 0) return NULL; const int start = _last; @@ -1082,6 +1102,8 @@ const char* TToken_string::get( // // @xref { + CHECK(_separator, "Corrupted TToken_string: NULL separator"); + if (n < 0) { if (n == -2) @@ -1155,13 +1177,16 @@ long TToken_string::get_long(int n) // Certified 70% bool TToken_string::set_item(const char* v, int n) { + CHECK(_separator, "Corrupted TToken_string: NULL separator"); + int sep = 0; for (int i = 0; sep < n && _str[i]; i++) if (_str[i] == _separator) sep++; if (sep < n) // Aggiunge items mancanti prima della posizione n { - for (;sep < n; sep++) *this << _separator; + for (;sep < n; sep++) + *this << _separator; *this << v; return FALSE; } diff --git a/include/strings.h b/include/strings.h index d41a401d4..c3aec4ad4 100755 --- a/include/strings.h +++ b/include/strings.h @@ -253,11 +253,8 @@ public: // @cmember Distruttore virtual ~TFixed_string(); -#ifndef __WATCOMC__ - virtual -#endif - // @cmember Manda un output formattato alla stringa oggetto - TString& format(const char* fmt, ...); + // @cmember Manda un output formattato alla stringa oggetto + TString& format(const char* fmt, ...); // @cmember Assegna la stringa passata con indirizzo const TString& operator =(const TString& s) @@ -412,18 +409,17 @@ public: TToken_string(const TToken_string& s); // @cmember Setta il carattere separatore a s - void separator(char s) - { _separator = s; } + void separator(char s); // @cmember Rimette all'inizio il puntatore void restart() { _last = empty() ? -1 : 0; } // @cmember Assegna una stringa const TString& operator =(const char* s) - { set(s);restart();return *this; } + { set(s); restart(); return *this; } // @cmember Assegna una stringa const TString& operator =(const TString& s) - { set(s);restart();return *this; } + { set(s); restart(); return *this; } // @cmember Aggiunge una stringa void add(const char* s, int n = -1);