Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с StringList (поиск)

2.1K
18 марта 2008 года
FreeWay
142 / / 03.05.2007
Всем привет, у меня есть текстовый файлик, я его построчно считываю в TStringList, далее с конца файла и вверх. мне надо считывать каждую строку и искать в ней слово missing. задача найти слово missing с конца файла, бриблезительно написал вот так:

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);
но как указать что искать надо именно в последней строке?
1.9K
19 марта 2008 года
Anton Chik
175 / / 26.09.2005
а как насчет
 
Код:
int index = Log->Strings[count].Pos("Missing");

? ;)

тока вот если до этого писать
 
Код:
int count = Log->Count;

то не проканает кой-чего)
2.1K
19 марта 2008 года
FreeWay
142 / / 03.05.2007
[QUOTE=Anton Chik;238350]
11
19 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
 
Код:
for (int i=Log->Count; i>0; i--)
    {
       if (Log->Strings.Pos("Missing")>0) // найдено ;
       break;
    }
2.1K
19 марта 2008 года
FreeWay
142 / / 03.05.2007
делаю так:

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 в файле нет
2.1K
19 марта 2008 года
FreeWay
142 / / 03.05.2007
вот рабочий вариант:

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;
2.1K
19 марта 2008 года
FreeWay
142 / / 03.05.2007
а как мне теперь зная позицию и длинну слова в строке с ошибкой, скопировать это слово,

бла бла бла Missing -ocb180308.465 бла бла бла

то есть позиция начала и конца слова -ocb180308.465 всегда одна и та же
11
19 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: FreeWay
а как мне теперь зная позицию и длинну слова в строке с ошибкой, скопировать это слово,

бла бла бла Missing -ocb180308.465 бла бла бла

то есть позиция начала и конца слова -ocb180308.465 всегда одна и та же



а нафига копировать то???
введи переменную AnsiString Slovo_Missing = "Missing";

2.1K
19 марта 2008 года
FreeWay
142 / / 03.05.2007
Цитата: oxotnik333
а нафига копировать то???
введи переменную AnsiString Slovo_Missing = "Missing";



яж копирую не слово Missing а код -ocb180308.465 который есть в строке с Missing

нашел вот такую функцию:

AnsiString SubOne =sl->Strings[BeforCnt]; //вот тут непойму как в SubOne скопировать строку в которой есть ошибка
SubOne =SubOne.SubString(18, 4);

11
19 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: FreeWay
яж копирую не слово Missing а код -ocb180308.465 который есть в строке с Missing

нашел вот такую функцию:

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);
2.1K
20 марта 2008 года
FreeWay
142 / / 03.05.2007
Всем спасибо за помощь, задача решена)


Код:
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); // выгребаем имя нехватающего файла
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог