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

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

Аватара для ChVL

Старожил


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

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


R.i.m.s.k.y.,
Спасибо!
Вторая процедура не работает, изобразил её в классическом виде - всё заработало. Привожу полный код секции, который при деинсталляции программы удаляет указанный текст из указанного файла, например, добавленную при инсталляции строку в hosts. Может ещё кому пригодится. (Первая процедура - Ваша, вторая - классическая).
Код: Выделить весь код
[_code]
procedure RePlaceTextinFile(FilePath:string; find:string; replace:string);
var
  S: TArrayOfString;
  i : Integer;
begin
 // if not FileExists(FilePath) then begin MsgBox)'Файл не найден' + FilePath, mbError, mb_Ok); Exit;end; 
  LoadStringsFromFile(FilePath, S); 
  for i:= 0 to GetArrayLength(S)-1 do begin
    if (Pos(AnsiUpperCase(find), AnsiUpperCase(S[i])) > 0) then begin
      StringChangeEx(S[i], find, replace, True);
    end;
  end;
  SaveStringsToFile(FilePath, S, False); 
and;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
If CurUninstallStep=usPostUninstall
then
  begin
  RePlaceTextinFile(ExpandConstant('{sys}\drivers\etc\hosts'), '127.0.0.1 www.site.com', '');
  end;
end;
Одно замечание: удаляется текст, если же в строке больше нет ничего, то остаётся пустая строка. Неплохо бы в этом случае и строку убрать, но, в принципе, можно смириться...
Проверку наличия файла можно убрать.

Последний раз редактировалось ChVL, 23-12-2010 в 19:45.


Отправлено: 19:24, 23-12-2010 | #206