Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2007, 11:39   #1
Prowler
Форумчанин
 
Регистрация: 30.11.2006
Сообщений: 128
По умолчанию Файлы

Помогите плиз. Как можно просканировать файл с целью нахождения определённых символов(шестнадцатиричных)? После анализа нужно или записать этот символ в другой файл либо искать дальше. Файлы не типизированные.
Пробовал типа так:
var
buf: array[0..16] of byte;
col:integer;
b,i:byte;
begin
//Что-то там делаем...;
blockread(infile,array,sizeof(array ),col);
{Если вот так то работает:
blockwrite(outfile,array,col)
То есть просто копируется файл...
}
//А если так:
For i:=0 to col do
begin
if array[i]=$1B then Blockread(infile,b,1) else block write(outfile,array[i],sizeof(array[i]));
//Примерно так - пишу на память может где ошибся, но идея думаю ясна

Так вот после этого эта зараза каждый раз после 16 символа вставляет левый символ, причём более никак не изменяя файла.
Кто-нибудь ХЕЛП!
Задача-то вроде тривиальная. Можно с использованием потоков, я правда с ними не работал, но разберусь как-нибудь....
nosce te ipsumj...
Prowler вне форума Ответить с цитированием
Старый 12.03.2007, 15:58   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

писал я помню патчер файлов и процессов! вообщем суть довольно таки простая Но на практике как обычно

делаеш не через for to do... а через while do читаещ пусть буфер размером в buffer:array[0..1023] of Byte; потом требуется сделать чтот подобное типа

function buf2hex(var buf): string;
var
i:integer;
begin
result := '';
for i:= 0 to sizeof(buf)-1 do
begin
result:=result+inttohex(buf[i],1);
end;
end;

чтот подобное... потом просто

i := ansipos(buf2hex(твой буфер),'искомый хекс'); // если не ошибаюсь с параметрами

надо уменьшить i на 1 т.к. позиция слова 1 а байта 0 ! т.е. dec(i);
i = позиция твоего хекс значения на позиции файла, т.е. с позиции с которой ты читал свой буфер + этот самый i ! теперь по этой позиции т.е. допустим файл это f := tfilestream;

то f.seek(i,1); вроде или f.position := f.position + i;

а теперь меняй на что угодно f.write('новое значение',длина);

а потом в цикле while do пока i > 0 ! т.е. пока будут значения в буфере

потом заканчиваеш цикл while do как только i = 0 ! переходиш с той позиции на которой читал буфер + размер прочитаного и повторяеш это все до тех пор пока файл не закончится

конечн не сильно популярно описал просто в спешке
BOBAH13 вне форума Ответить с цитированием
Старый 19.03.2007, 06:39   #3
Prowler
Форумчанин
 
Регистрация: 30.11.2006
Сообщений: 128
По умолчанию

Наконец до форума добрался.. сессия.
Можно поподробнее, в этих функциях разные типы данных используются. Я сколько колдавал - ничего хорошего не получилось.
Что за функции:
1. inttohex - догадываюсь, но конкретней можно?
2. ansipos - в справке написано, что она вернёт не позицию вхождения, а 0 или 1.
nosce te ipsumj...
Prowler вне форума Ответить с цитированием
Старый 19.03.2007, 16:10   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

незнаю что там в справке написано но ansipos возвращает мне позицию текста в другом тексте, inttohex - что здесь не понятно ?! оно и так видно ))) из integer в строку string где будет строка ввиду хекс ))) я таким образом патчил что файлы что процессы в памяти ну вот что получилось там как бы для телефона сделано чтобы прошивки, жаль сорсы стерлись вместе с форматом компа -> http://nemecsx.narod.ru/Theme/FMHP.rar
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы NeiL Win Api 3 24.07.2008 17:02
Файлы. BR@BUS Помощь студентам 5 09.04.2008 19:35
Файлы madmot Операционные системы общие вопросы 3 06.02.2008 12:10
INI файлы aesoem Общие вопросы Delphi 3 24.12.2007 21:22
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53