** Monster |
Отправлено: 17.11.2003, 13:41 |
|
Не зарегистрирован
|
Почему это не работает?
После второй отличающейся строки i больше не прибовляется и цикл повторяется бесконечно.
CODE |
AnsiString s;
for(int i=0;i<c->Count;i++)
{
s=c->Strings[i];
if(infile->Find(s,i))
ShowMessage("Est takaya stroka");
else
ShowMessage("Naidena Novaya stroka"+ s);
}
|
Отредактировано Admin — 17/11/2003, 15:00 |
|
Георгий |
Отправлено: 17.11.2003, 18:11 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
тебе в переменную i записывают индекс строки s, если она найдена, но i у тебя используется как счётчик цикла, поэтому ,если искомая строка в inifile имеет индекс = 2, а i=3, то в переменную i будет записано число 2, которое будет увеличено на 1 т.е. i=3 и всё повторится снова.
Я не знаю зачем ты счётчик в метод find передаёшь, но думаю, что вот так будет правильно:
CODE | AnsiString s;
for(int i=0;i<c->Count;i++)
{
int temp;
s=c->Strings[i];
if(infile->Find(s,temp))
ShowMessage("Est takaya stroka");
else
ShowMessage("Naidena Novaya stroka"+ s);
}
| |
|
** Monster |
Отправлено: 19.11.2003, 12:11 |
|
Не зарегистрирован
|
Сделал так.
for(int i=0;iCount;i++)
{
c->Sort();
infile->Sort();
s=c->Strings[i];
if(infile->IndexOf(s)==-1)
{
AnsiString namefile="namefile"+IntToStr(a);
infile->Add(s);
infile->SaveToFile("rrr");
i=0;
Ini->WriteString(nameprofile,namefile,s);
a++;
}
else {
infile->Add(s);
infile->SaveToFile("rrr");
i=0;
}
}
Немного вроде напортачено, но зато работает. |
|
|