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