Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Доступ к ресурсам   Найти похожие ветки 

 
Познающий   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
15-1171574284
Альберт
2007-02-16 00:18
2007.03.11
Чем же занимаются профессионалы?))))


15-1171423587
Slider007
2007-02-14 06:26
2007.03.11
С днем рождения ! 14 февраля


2-1171975449
Познающий
2007-02-20 15:44
2007.03.11
Доступ к ресурсам


11-1150718660
Arvist
2006-06-19 16:04
2007.03.11
Свернуть в трей, скрыть из таскбара


2-1172051723
Максимус
2007-02-21 12:55
2007.03.11
Связанные таблицы