Zireael пишет:
Цитата:
нужно считать условный textm и именно в этой строке перезаписать (ym zm) на (ym+1 zm+1), весь остальной файл оставив без изменений
Скачать длл отсюда:
http://kibor-bot.com/forum/topic...m=6&topic=65, закинуть в папку с kibor.exe.
code (Отобразить)CODE:external(INT, "regex_search", "regex_search", pathfolder()+"\regex.dll" );
char result[4][100];
string r="([^\s]+)\s+(\d+)\s+(\d+)\s+(\d+)"; // регулярное выражение для поиска строки вида: 'текст число число число'
string a[1000]; // массив, в который считается содержимое файла
if (fopen ("C:\3.txt", "r")!=0) // если открылся для чтения
{
for(int i=0; freadline(a[i])!=0; i++){} // чтение файла в массив по строкам
fclose();
}
int count_string=i; // количество строк в файле
int y, z;
if (fopen ("C:\333.txt", "w")!=0) // если открылся для записи
{
for(i=0; i<count_string; i++) // для всех строк
{
int x=regex_search(a[i], r, address(#result[0][0]), sizearray(result), sizearray(result[])); // поиск строки по шаблону
if(x>0) // если найдена
{
y=formatsn(format(#result[2][0]))+1; // прибавить 1
z=formatsn(format(#result[3][0]))+1; // прибавить 1
fwrite(format(#result[0][0])+" "+format(#result[1][0])+" "+format(y)+" "+format(z)); fwrite(ENDL); // записать строку
}
else // если строка не соответствует шаблону
{
fwrite(a[i]); fwrite(ENDL); // записать её без изменений
}
}
fclose();
}
Для файла с таким содержимым:
Цитата:
text1 100 200 300
text2 400 500 600
какой-то текст
text3 700 800 900
Результат:
Цитата:
text1 100 201 301
text2 400 501 601
какой-то текст
text3 700 801 901
Спасибо!
Но не совсем то, что нужно. Смысл задачи в формировании базы с нуля и выборки на условия.
Строки в базе вида - text x y z (int x,y,z; string text
Изначально файл пуст. И имеются 3 условия.
В переменную string p получаем какой-то текст (одно слово).
Нужно найти текстовую переменную p в файле С:\1.txt и при выполнении одного из 3 условий добавить 1 в x или y или z. Если же p не найдена то дописать ее в конец файла p x y z.
т.е.
для файла с содержимым
text1 100 200 300
text2 400 500 600
text3 700 800 900
если p=="text2"
и условие1________ условие2__________ условие3
text1 100 200 300___ text1 100 200 300___ text1 100 200 300
text2 401 500 600___ text2 400 501 600___ text2 400 500 601
text3 700 800 900___ text3 700 800 900___ text3 700 800 900
если p=="text4"
и условие1_________ условие2__________ условие3
text1 100 200 300___ text1 100 200 300___ text1 100 200 300
text2 400 500 600___ text2 400 500 600___ text2 400 500 600
text3 700 800 900___ text3 700 800 900___ text3 700 800 900
text4 1 0 0 _________ text4 0 1 0 _________ text4 0 0 1