IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Замена строки в файле
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Нужно написать программу, которая заменяла бы в другом файле одну строку на другую, в смысле именно внутри файла. Нашёл код, который это делает, но там условие, чтобы заменяемая и заменяющая строки были одной длины, а мне надо, чтобы заменяющая строка могла быть больше... В принципе, можно сделать, чтобы заменяемая строка была дополнена сторонними символами, пробелами, например, а при замещении при надобности их удалять. Но, может быть, можно при замещении большей строкой "сдвигать" оставшуюся часть файла?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


В итоге получилось следующее:) Через HEX-редактор я нашёл в файле адрес нужной строки(в изменяемой программе эта строка предварительно была дополнена пробелами, чтобы был запас длины) и в "билдере" патчил файл побайтно.


var f:thandle;
fils:integer;
mes:string;
i:integer;
c:byte;
BytesRead,c2:DWORD;
begin
mes:=smemo1.text;
c2:=$5C64;
for i:=1 to length(mes) do
begin
c:=ord(char(pchar(mes[i])));
SetFilePointer(f, c2, nil, 0);
WriteFile(f, c, SizeOf©, BytesRead, nil);
inc(c2);
end;
end;


Хорошо, что оказался возможным инкремент DWord'а.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.06.2024 0:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name