Форум: "Начинающим";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
ВнизДоступ к ресурсам Найти похожие ветки
← →
Познающий (2007-02-20 15:44) [0]Подскажите пожалуйста господа специалисты,
есть у меня процедурка, которая читает текстовый файл из ресурса самой проги. Мне необходимо в другой процедурке при необходимости произвести коррекцию текста и сохранить в ресурсах уже изменённый вариант. Извращение? наверное, но так нужно.
Читать из ресурса я могу. Вот как бы сохранить опять там же, учитывая что размер останентся тот же?
По идее это же где-то в памяти находится.
Может как-то можно узнать адрес и работать с участком памяти где находится нужный мне ресурс?
Я пока плаваю, извините если криво вопрос поставил.
Помогите хоть идеями, так как наврядли кто-то так извращался.
← →
Elen © (2007-02-20 16:01) [1]
> Познающий (20.02.07 15:44)
А зачем запихивать файл в ресурсы? оставь его рядом с прогой. Или напиши процедуру, которая будет передавать содержимое этого файла другой проге например через MapFiles
← →
Познающий (2007-02-20 16:20) [2]Нет, мне именно так нужно.
В том-то и дело.
Я бы кучу красивых других вариантов нашол бы,
но есть условие работы только с ресурсами проги.
Мне нужно написать только процедурку зная название ресурса и всё.
Процедура должна только расшифровать текстовый ресурс для дальнейшего нормального его использования.
Да, криво, боком ну так хотят.
А для меня просто стало интересно как можно это реализовать.
← →
Сергей М. © (2007-02-20 16:23) [3]
> Познающий (20.02.07 15:44)
Документированными способами задача не реализуема.
← →
Elen © (2007-02-20 16:24) [4]
> Познающий (20.02.07 16:20) [2]
Ну тогда сделай обмен между прогами (например через сокеты - лично мое мнение это особенно удобно)
> Нет, мне именно так нужно.
Это не ответ. Один и тот же результат можно получить разными способами, и лучше выбирать из них более подходящие для обстановки. Может твое решение не единственное тебе подходящее.
← →
Elen © (2007-02-20 16:25) [5]
> Познающий (20.02.07 16:20) [2]
Так подожди ты хочеш вытянуть из проги ресурс не запуская ее?
← →
Сергей М. © (2007-02-20 16:32) [6]
> Elen © (20.02.07 16:25) [5]
Он хочет запустить свою "прогу" и, наплевав на документированную невозможность модификации файла соотв. РЕ-модуля, изменить в этом файле секцию, содержащую ресурсы оного модуля.
← →
Познающий (2007-02-20 16:44) [7]2Сергей М.
Почти так и есть.
В своей же проге при её загрузке модифицировать вложенный в неё ресурс.
А как не документированными способами?
Извините, я пока плохо разбираюсь, но разве настолько тяжело узнать адрес в памяти где находится нужный ресурс и модифицировать его?
← →
Elen © (2007-02-20 16:45) [8]
> но разве настолько тяжело узнать адрес в памяти где находится
> нужный ресурс и модифицировать его?
Нет, но НАФИГА???? Задача какая?
← →
Сергей М. © (2007-02-20 16:48) [9]
> А как не документированными способами?
А никак не надо.
Ты рискуешь быть битым табуреткой от рук юзеров твоей программы, когда она в одночасье рухнет из-за использования недокументированных возможностей ОС.
> узнать адрес в памяти где находится нужный ресурс и модифицировать
> его
В памяти модифицируй себе сколько угодно.
А в соотв.файле модифицировать оные же документированными способами запрещено.
← →
Познающий (2007-02-20 17:06) [10]2Сергей М.
Так мне и нужно в памяти модифицировать когда прога загружена.
Как узнать адрес где ресурс находится?
что бы потом типа такого:
asm
mov si, offset resource
mov cx, 1024
m1:
xor byte ptr [si + cx], $f0
loop m1
end;
← →
Сергей М. © (2007-02-20 17:16) [11]Кулхацкер ?)
> mov si
Ты вообще в курсе, что ВАП прикладного процесса в Win32 - 32-хразрядное ?
← →
koha © (2007-02-20 17:18) [12]> Познающий (20.02.07 17:06) [10]
- Однако тебе на другой форум нужно.
← →
Познающий (2007-02-20 17:41) [13]да я не про то.
написал как попало побыстрей что бы понятно было.
я же в своей же проге это
делаю, причем тут кулхацкеры...
прога у меня на дельфях, кусок кривого асма для примера.
ну так можно или нет?
чирканите пару строчек если не в лом, или пол дня вас упрашивать поделиться знанием ;)
← →
koha © (2007-02-20 17:47) [14]- я так думаю ИХМО, что тебе надо туда, где "кодеры-ковбои пасут на лугах mikrosoft священных коров говорящих на асемблере"
← →
Познающий (2007-02-20 18:13) [15]procedure workResource(myOffset: DWord);
begin
// Как на паскале это будет выглядеть?
end;
begin
workResource(Как узнать адрес нужного ресурса);
end;
2koha ©
а Вам бы посоветовал если отсутствует желание помогать другим просто хотя бы не отвечать
Я бы написал на паскале если бы знал как.
Для меня первое узнать адрес.
Процедуру уже бы сам вычислял как написать.
← →
koha © (2007-02-20 18:48) [16]- Так то есть клыссы которые работают с ресурсами:
TResourceStream, function FindResource, TResHeader
← →
Познающий (2007-02-20 20:05) [17]Я так понимаю создастся отдельный поток с данным ресурсом, а мне нужно изменить ресурс в памяти самой проги, что бы далее другие вызовы TResourceStream.create(hinstance, "test.txt", RT_RCDATA) уже читали мои изменённые данные.
Суть в том, что посторонний человек пишет прогу, которая работает с данными в ресурсе. Мне нужно написать только процедуру, которую он добавит на создание формы, которая проверит регистрацию и если всё гуд, то расшифрует данные, находящиеся в ресурсе, с которыми он сам будет дальше работать через TResourceStream.create
Мне было бы проще самому переписать его прогу и забыть про это, но парень молодой, пусть сам учится и хвастается перед своими друзьями, мне только вот нужно помочь с этим детским вариантом декриптора, а сам только по базам данным что-то волоку.
← →
koha © (2007-02-20 20:51) [18]Не знаю даже возможно ли это стандартными средствами, TResourceStream.Write Объявлена так:
function TResourceStream.Write(const Buffer; Count: Longint): Longint;
begin
raise EStreamError.CreateRes(@SCantWriteResourceStreamError);
end;
Но если перенаследовать класс и перекрыть эту процедуру своей то впринципе можно и добиться результата. TResourceStream он потомок TCustomMemoryStream - а у этот и как читает так и пишет в памать.
А еще стоит в процедуру инициализации заглянуть в общем там тоже может что переделыввать нужно будет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c