Название: Поис строки в файле
Отправлено: 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();
Смотрю и не могу понять почему дописывается строка если она уже есть в файле, вроде не должна, может кто подскажет, как проверить наличие строки по другому, так что-то не хочет проверять
Название: Re: Поис строки в файле
Отправлено: Пантер от Февраль 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 в начало.
Название: Re: Поис строки в файле
Отправлено: iks от Февраль 07, 2011, 21:37
Спасибо все заработало, еще вот такая запись QFile *file = new QFile(QDir::homePath()+"/xxx.log"); как-то тоже мозги похоже крутит на будущее перейду на такое QFile file(QDir::homePath()+"/xxx.log");
Название: Re: Поис строки в файле
Отправлено: Etud от Февраль 07, 2011, 22:48
еще вот такая запись QFile *file = new QFile(QDir::homePath()+"/xxx.log"); как-то тоже мозги похоже крутит А куда крутит ? Не забудь объект удалить.
Название: Re: Поис строки в файле
Отправлено: iks от Февраль 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; } Может у меня что криво стоит, но вроде до этого не сталкивался с такими проблемами, на пустом месте =) Прикол ради спортивного интереса сейчас поменял скрипт, на выше написаный в этом топе, все нормально пошло ))))
|