Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1136942463
DimonS
2006-01-11 04:21
2006.03.05
Как составить правильно отчет?


2-1139987098
Officeman
2006-02-15 10:04
2006.03.05
Читаем файл Read(f1, Ch)


4-1134466210
DelphiN!
2005-12-13 12:30
2006.03.05
NetUserEnum в XP/Win2k3 возвращает пистой буффер


3-1136930772
Святослав
2006-01-11 01:06
2006.03.05
Проблема с удалением строк в базе данных


15-1139762670
Admeral
2006-02-12 19:44
2006.03.05
Шаровары или Денейтвары?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский