| Oper01 | 
| Отправлено: 15.08.2004, 01:03 | 
 
 
 | 
  
Станционный диспетчер 
 
Группа: Участник 
Сообщений: 145 
  
  
 | 
 Как наиболее просто сравнить два TStrings ? Результатом должно быть "одинаковые" и "не одинаковые".  | 
  | 
| Георгий | 
| Отправлено: 15.08.2004, 10:12 | 
 
 
 | 
  
Почетный железнодорожник 
 
Группа: Модератор 
Сообщений: 874 
  
  
 | 
 можно использовать метод Equals| CODE  |  void Fill1(TStrings *s) 
       { 
       s->Clear(); 
       for(int i=0;i<10;++i)s->Add(i); 
       };
  
void Fill2(TStrings *s) 
       { 
       s->Clear(); 
       for(int i=10;i<20;++i)s->Add(i); 
       };
  
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
int i; 
TStrings * ptrStrings[2]; 
for(i=0;i<2;++i)ptrStrings[i]=new TStringList; 
Fill1( ptrStrings[0] ); 
Fill2( ptrStrings[1] ); 
const bool notEqu = ptrStrings[0]->Equals( ptrStrings[1] ); 
Fill2( ptrStrings[0] ); 
const bool Equ = ptrStrings[0]->Equals( ptrStrings[1] ); 
const bool succesful = ((!notEqu) && Equ); 
const AnsiString message = AnsiString("method ") + AnsiString(succesful?"ok":"fauled"); 
Application->MessageBox(message.c_str(), "test complete", MB_OK ); |     | 
  | 
| ** Oper01 | 
| Отправлено: 16.08.2004, 10:00 | 
 
 
 | 
  
Не зарегистрирован
 
 
 
 
 
  
  
 | 
 Спасибо, всё работает как часы !  | 
  | 
| ** Oper01 | 
| Отправлено: 16.08.2004, 10:00 | 
 
 
 | 
  
Не зарегистрирован
 
 
 
 
 
  
  
 | 
 Спасибо, всё работает как часы !  | 
  | 
| Guest | 
| Отправлено: 16.08.2004, 10:17 | 
 
 
 | 
  
Не зарегистрирован
 
 
 
 
 
  
  
 | 
 А не проще ли вот так ?
  
| CODE  |   
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
  AnsiString s1 = ListBox1->Items->Text; 
  AnsiString s2 = ListBox2->Items->Text;
  
  if(s1 == s2) ShowMessage("Ok"); else ShowMessage("No Ok"); 
} 
//--------------------------------------------------------------------------- 
 |     | 
  | 
| Георгий | 
| Отправлено: 16.08.2004, 19:28 | 
 
 
 | 
  
Почетный железнодорожник 
 
Группа: Модератор 
Сообщений: 874 
  
  
 | 
 хм.. 
а по моему вот так ещё проще:| CODE  |  void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
 if( ListBox1->Items->Equals(ListBox2->Items) ) ShowMessage("Ok"); else ShowMessage("No Ok"); 
} |   а тот код, что я выше привёл был всего лишь простеньким тестом корректности работы метода Equals. даже не тестом, а демонстрацией его работоспособности.. 
 | 
  |