Russian Qt Forum
Ноябрь 26, 2024, 02:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Поис строки в файле  (Прочитано 2901 раз)
iks
Гость
« : Февраль 07, 2011, 20:14 »

Усть вот такой код
Код:
QString patchPacet = strPachProg+"/"+strNamePacet;
QFile *file = new QFile(QDir::homePath()+"/xxx.log");
file->open(QIODevice::WriteOnly | QIODevice::ReadOnly | QIODevice::Append);
QTextStream streamFile(file);
bool prov = true;
while(!streamFile.atEnd())
{
     if(streamFile.readLine() == patchPacet)
     {
         prov = false;
     }
}
if(prov==true) {
    streamFile << patchPacet << "\n";
}
file->close();
Смотрю и не могу понять почему дописывается строка если она уже есть в файле, вроде не должна, может кто подскажет, как проверить наличие строки по другому, так что-то не хочет проверять
« Последнее редактирование: Февраль 07, 2011, 20:17 от iks » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 07, 2011, 20:49 »

Код
C++ (Qt)
QString patchPacet = strPachProg+"/"+strNamePacet;
QFile file (QDir::homePath()+"/xxx.log");
file.open(QIODevice::ReadWrite | QIODevice::Append);
file.seek (0);
QTextStream streamFile(&file);
bool prov = true;
while(!streamFile.atEnd())
{
    if(streamFile.readLine() == patchPacet)
    {
        prov = false;
    }
}
if(prov) {
   streamFile << patchPacet << endl;
}
 
Вот так должно заработать. Append перемещает указатель в конец файла, поэтому нужно сделать seek в начало.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
iks
Гость
« Ответ #2 : Февраль 07, 2011, 21:37 »

Спасибо все заработало, еще вот такая запись
Код:
QFile *file = new QFile(QDir::homePath()+"/xxx.log");
как-то тоже мозги похоже крутит
на будущее перейду на такое
Код:
QFile file(QDir::homePath()+"/xxx.log");
Записан
Etud
Гость
« Ответ #3 : Февраль 07, 2011, 22:48 »

еще вот такая запись
Код:
QFile *file = new QFile(QDir::homePath()+"/xxx.log");
как-то тоже мозги похоже крутит

А куда крутит ?

Не забудь объект удалить.
Записан
iks
Гость
« Ответ #4 : Февраль 07, 2011, 23:32 »

Да попробовал сходу не иеня скрипт применить на такое
Код:
QString patchPacet = strPachProg+"/"+strNamePacet;
QFile *file = new QFile(QDir::homePath()+"/xxx.log");
file->open(QIODevice::ReadWrite | QIODevice::Append);
file->seek (0);
QTextStream streamFile(file);
bool prov = true;
while(!streamFile.atEnd())
{
     if(streamFile.readLine() == patchPacet)
     {
         prov = false;
     }
}
if(prov) {
    streamFile << patchPacet << endl;
}
file->close();
Все равно писалась строка пока полностью не заменил на
Код:
QString patchPacet = strPachProg+"/"+strNamePacet;
QFile file (QDir::homePath()+"/xxx.log");
file.open(QIODevice::ReadWrite | QIODevice::Append);
file.seek (0);
QTextStream streamFile(&file);
bool prov = true;
while(!streamFile.atEnd())
{
     if(streamFile.readLine() == patchPacet)
     {
         prov = false;
     }
}
if(prov) {
    streamFile << patchPacet << endl;
}
Может у меня что криво стоит, но вроде до этого не сталкивался с такими проблемами, на пустом месте =)
Прикол ради спортивного интереса сейчас поменял скрипт, на выше написаный в этом топе, все нормально пошло ))))
« Последнее редактирование: Февраль 07, 2011, 23:37 от iks » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.072 секунд. Запросов: 23.