работа с StringList (поиск)
TStringList *Log = new TStringList;
Log->LoadFromFile("d//test.txt");
int count = Log->Count;
int index = Log[count].Pos("Missing"); //тут компилятор ругается что для стринг листа Pos не используется
while (index == 0)
{
index++;
if ( index != 0 ) {ShowMessage("есть ошибка");}
}
чем же искать в StringList???
нашел вот такой код Log->Find("Missing", Index);
но как указать что искать надо именно в последней строке?
Код:
int index = Log->Strings[count].Pos("Missing");
? ;)
тока вот если до этого писать
Код:
int count = Log->Count;
то не проканает кой-чего)
[QUOTE=Anton Chik;238350]
Код:
for (int i=Log->Count; i>0; i--)
{
if (Log->Strings.Pos("Missing")>0) // найдено ;
break;
}
{
if (Log->Strings.Pos("Missing")>0) // найдено ;
break;
}
TStringList *Log = new TStringList;
Log->LoadFromFile("test.txt");
int count = Log->Count; получаем количество строк
count--;
int Index = Log->Strings[count].Pos("Missing"); ищем слово Missing в последней строке
while (Index == 0) пока слово не найдено ищем в строке выше и т д
{
Index--;
if ( Index != 0 ) {ShowMessage("есть ошибка");}
}
но он мне выдает в любом случае что ошибка найдена, хотя слова Missing в файле нет
TStringList *sl = new TStringList;
sl->LoadFromFile("test.txt");
int BeforCnt = sl->Count;
for(int i = BeforCnt; --i >= 0; )
{
if( sl->Strings.Pos( "Missing" ) )
sl->Delete(i);
}
if( BeforCnt != sl->Count )
//sl->SaveToFile("file");
ShowMessage (BeforCnt);
delete sl;
бла бла бла Missing -ocb180308.465 бла бла бла
то есть позиция начала и конца слова -ocb180308.465 всегда одна и та же
Цитата: FreeWay
а как мне теперь зная позицию и длинну слова в строке с ошибкой, скопировать это слово,
бла бла бла Missing -ocb180308.465 бла бла бла
то есть позиция начала и конца слова -ocb180308.465 всегда одна и та же
бла бла бла Missing -ocb180308.465 бла бла бла
то есть позиция начала и конца слова -ocb180308.465 всегда одна и та же
а нафига копировать то???
введи переменную AnsiString Slovo_Missing = "Missing";
Цитата: oxotnik333
а нафига копировать то???
введи переменную AnsiString Slovo_Missing = "Missing";
введи переменную AnsiString Slovo_Missing = "Missing";
яж копирую не слово Missing а код -ocb180308.465 который есть в строке с Missing
нашел вот такую функцию:
AnsiString SubOne =sl->Strings[BeforCnt]; //вот тут непойму как в SubOne скопировать строку в которой есть ошибка
SubOne =SubOne.SubString(18, 4);
Цитата: FreeWay
яж копирую не слово Missing а код -ocb180308.465 который есть в строке с Missing
нашел вот такую функцию:
AnsiString SubOne =sl->Strings[BeforCnt]; //вот тут непойму как в SubOne скопировать строку в которой есть ошибка
SubOne =SubOne.SubString(18, 4);
нашел вот такую функцию:
AnsiString SubOne =sl->Strings[BeforCnt]; //вот тут непойму как в SubOne скопировать строку в которой есть ошибка
SubOne =SubOne.SubString(18, 4);
Код:
AnsiString Kod_Oshibki = Stroka_S_Oshibkoy.SubString (Stroka_S_Oshibkoy.Pos("Missing")+7, Stroka_S_Oshibkoy.Lenght() - Stroka_S_Oshibkoy.Pos("Missing")+7);
Код:
AnsiString Stroka_S_Oshibkoy; //глобальные переменные
int i; //глобальные переменные
TStringList *Strings = new TStringList;
Strings->LoadFromFile(file_log);
int BeforCnt = Strings->Count;
for( i = BeforCnt; --i >= 0; )
{
if( Strings->Strings.Pos( "missing" ) ) //если нарушена последовательность
{
Stroka_S_Oshibkoy =Strings->Strings.SubString(78, 12); // выгребаем имя нехватающего файла
int i; //глобальные переменные
TStringList *Strings = new TStringList;
Strings->LoadFromFile(file_log);
int BeforCnt = Strings->Count;
for( i = BeforCnt; --i >= 0; )
{
if( Strings->Strings.Pos( "missing" ) ) //если нарушена последовательность
{
Stroka_S_Oshibkoy =Strings->Strings.SubString(78, 12); // выгребаем имя нехватающего файла