Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Dodakaedr

Ветеран


Сообщения: 857
Благодарности: 256

Профиль | Отправить PM | Цитировать


Цитата K.A.V.:
Вам вызвать 2 раза функцию с разным текстом искомой строки религия не позволяет? »
позволяет конечно, пробовал, но не получается.
Цитата K.A.V.:
Не понимаю, чего вы от меня ещё хотите »
как я уже и раньше говорил - примерчик.
Собрал такое, но не работает
Код: Выделить весь код
${LineSum} "$DESKTOP\hosts" $R0 ; в переменную $R0 заносим количество строк в файле
StrCpy $R1 0 ; обновляем счетчик, в этой переменной будет хранится порядковый номер строки, которая читается в данный момент
readnext:
 IntOp $R1 $R1 + 1 ; увеличиваем счетчик и читаем следующую строку
 IntCmp $R1 $R0 0 0 end ; если текущее значение читаемой строки больше, чем общее количество строк в файле - завершаем обработку и прыгаем на метку end
 readlinenow: ; сюда будем прыгать после удаления строки, необходимо после удаления строки ещё раз прочитать эту же строку, т.к. данные в файле будут "сдвинуты" после удаления строки
 ${LineRead} "$DESKTOP\hosts" "$R1" $R3 ; читаем содержимое строки
 ${LineRead} "$DESKTOP\hosts" "$R4" $R5 ; читаем содержимое строки
 ${WordFind} "$R3" "127.0.0.1 winxpregp.narod.ru" "E+1{" $R2 ; ищем фразу в строке
 ${WordFind} "$R5" "127.0.0.1 winxp.narod.ru" "E+1{" $R6 ; ищем фразу в строке
 IfErrors readnext 0 ; если фраза не найдена - прыгаем на метку readnext и читаем следующую строку, если фраза найдена - спускаемся дальше по коду
 ${LineFind} "$DESKTOP\hosts" "" "$R1" "DeleteLineCallback" ; удалем строку, в которой найдена фраза, передавая номер удаляемой строки
 ${LineFind} "$DESKTOP\hosts" "" "$R4" "DeleteLineCallback" ; удалем строку, в которой найдена фраза, передавая номер удаляемой строки
 ${LineSum} "$DESKTOP\hosts" $R0 ; после попытки удаления строки желательно обновить данные о количестве строк в файле, если удалений строк с фразой будет много - будут лишние команды чтения строк
 goto readlinenow ; после удаления строки нужно прочитать эту строку ещё раз, т.к. данные в файле сразу же сдвигаются, прыгаем на метку readlinenow
end:

-------
Inno Setup 5 Ultra Unicode


Отправлено: 23:14, 15-05-2015 | #1631