Форум: "Основная";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизСохранение процедур в файл Найти похожие ветки
← →
maxistent © (2006-01-24 14:50) [0]Приветствую, программеры :-)
Честно говоря вопрос не совсем по Дельфи (желательно бы на ТМТ-паскаль написать)...
Задача: есть какая-то процедура:Procedure proc1;
var
x:byte
begin
x:=random(255);
writeln(x);
end;
и есть указатель (поиньтер тоись) на неё: P:=@Proc1;
Как эту процедуру (ВСЮ!) из памяти сохранить на диск?
А потом загрузить её из файла и использовать?
Надеюсь, вопрос понятен... Буду ждать ответов...
С уважением, maxistent.
← →
Digitman © (2006-01-24 14:55) [1]затея не имеющая смысла
← →
Digitman © (2006-01-24 14:59) [2]затея лишенная смысла
← →
maxistent © (2006-01-24 15:09) [3]Если бы для меня это не имело смысла - я бы здесь не торчал со своим вопросом!!! :"( Какие ещё будут мысли по этому поводу? Мне нужно представить это самую процедуру в виде последовательности байт и записать в файл. Потом другой прогой открыть файл, загрузить из него эту процедуру и выполнить её. Это возможно? Если да, то как это реализовать?
← →
Digitman © (2006-01-24 15:12) [4]
> maxistent © (24.01.06 15:09) [3]
Чем DLL-то не устраивает ?
← →
Джо © (2006-01-24 15:16) [5]> maxistent ©
Затея обломается в тот момент, когда поймешь, что в этой процедуре должен содержаться только позиционно-независимый код.
← →
TUser © (2006-01-24 16:48) [6]procedure Proc1;
begin
// code
end;
procedure ENdOfProc1;
begin
// empty procedure really afeter Proc1
end;
Пиши в файл с адреcа @Proc1 до @Proc2.
← →
Digitman © (2006-01-24 17:08) [7]
> TUser © (24.01.06 16:48) [6]
> Пиши в файл с адреcа @Proc1 до @Proc2.
И запишет он позиционно-зависимый код.
Что дальше ?
← →
VirEx © (2006-01-24 18:26) [8]ну и запишет код, по меткам:
asm
db "lab1";
end;
procedure proc();
begin
...
end;
asm
db "lab1end";
end;
ну или кто знает как эти метки поставить, я не спец. в таких вещах
вообщем запишет в файл, если надо - сохранить в память и из неё запустит, только это сложновато я думаю будет с памятью работать
← →
Германн © (2006-01-24 18:35) [9]Смущает только замечание автора о "ТМТ-паскаль". Не знаю, что это такое, посему молчу.
← →
Leonid Troyanovsky © (2006-01-24 19:33) [10]
> maxistent © (24.01.06 14:50)
> Задача: есть какая-то процедура:
Подробнее, насчет процедуры.
Кто ее пишет, зачем, и на каком основании.
Вообще-то, есть такой язык Forth. Позволяет компилировать налету.
Правда, не всегда в непосредственно исполняемый код (в зависимости
от реализации может требоваться, например, адресный интерпретатор).
Зато есть реализации на паскале для Win32 (groups.google.com go).
--
Regards, LVT.
← →
Digitman © (2006-01-25 11:00) [11]
> VirEx © (24.01.06 18:26) [8]
> вообщем запишет в файл
Ну, предположим, запишет .. Проблем здесь нет ..
> сохранить в память
Ну, предположим, прочитает из файла в память .. Тоже не велика проблема ..
> из неё запустит
А вот здесь как раз и ждет засада - код-то, еще раз повторяю, позиционно-зависимый !
← →
maxistent © (2006-01-30 11:17) [12]
> Digitman © (24.01.06 15:12) [4]
У меня как раз та версия ТМТ-шника, которая НЕ ПОЗВОЛЯЕТ использовать DLL. :-(
> Германн © (24.01.06 18:35) [9]
TMT-паскаль: 32-битовый компиллер под ДОС. Т.е. тот же Турбо Паскаль, только возможностей больше. Например, поддержка SVGA-режимов, и ещё куча всяких вкусностей, которых нет в Турбо Паскале.
> Leonid Troyanovsky © (24.01.06 19:33) [10]
Процедуры пишу я. Но, т.к. ТМТ-паскаль не поддерживает DLL, я пытаюсь создать нечто вроде своей ДЛЛ, т.е. чтобы можно было экспортировать процедуры в какой-то файл, а потом использовать их.
Короче говоря, кто может подсказать, как создать "вручную" свои ДЛЛ и потом использовать их?
← →
Digitman © (2006-01-30 11:30) [13]
> maxistent © (30.01.06 11:17) [12]
Почему бы сразу не сказать, что речь идет именно о ДОС-программах ?
ДОС-программы не знают что такое DLL, но зато позволяют использовать оверлеи.
← →
Cash © (2006-01-30 11:37) [14]maxistent © (30.01.06 11:17) [12]:
Делать тебе больше нечего! :)))
Напиши мелкий, легкий интерпритатор, который просто работал бы с
двуадресными командами, исполни набор команд, систему флагов и
аккомулятор адресов(можно даже два) со счетчиком команд.
И исполняй все свои процедурки через этот интерпритатор.
А чё TMT-шник дает dll-ки писать??? Неверю!
← →
maxistent © (2006-01-30 11:56) [15]
> Digitman © (30.01.06 11:30) [13]
Можно подробнее? Очень уж интересТно
> Cash © (30.01.06 11:37) [14]
Ну ты тут замудрил!!! "..мелкий, лёгкий интерпритатор... с двуадресными командами... флагов, аккомуляторов..." Можно по-проще и подробнее?
У меня ТМТ-Pascal Lite (ms-dos edition). Не даёт ни в какую!!! Стал бы я тут время тратить ради прикола?
← →
Digitman © (2006-01-30 12:04) [16]
> maxistent © (30.01.06 11:56) [15]
> Можно подробнее?
Поподробнее о чем конкретно ?
Вообще-то здесь форум разработчиков Делфи-приложений, а не ДОС-программ, к каковым Делфи не имеет никакого отношения ...
← →
maxistent © (2006-01-30 12:10) [17]
> Digitman © (30.01.06 11:30) [13]
> ...но зато позволяют использовать оверлеи
Что-то знакомое... где-то слышал... :-) Объясни, что куда использовать?
← →
Digitman © (2006-01-30 12:14) [18]http://www.citforum.ru/programming/bp70_lr/lr20.shtml
← →
Cash © (2006-01-30 13:58) [19]maxistent © (30.01.06 11:56) [15]:
ЗЫ: а ведь действительно замудрил! :)))
А про оверлей так и не удосужился вспомнить! :)))
← →
maxistent © (2006-02-03 13:53) [20]Да уж... Ладно, ВСЕМ СПАСИБО за уделённое внимание! Наверное, уже никто ничего "путёвого" не скажет...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c