Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизДлина тела функции Найти похожие ветки
← →
Verder (2005-07-27 13:50) [0]Как определить длину тела функии в Delphi? Есть консольное приложение, основной и модуль с одной единственной функцией.
program SimpleProg;
{$APPTYPE CONSOLE}
uses
SysUtils,
func in "func.pas";
begin
Prob();
end.
Нужно определить длину тела функции Prob();
← →
MBo © (2005-07-27 13:54) [1]Вычесть из адреса следующей за Prob функции (если такой нет, ввести пустышку) адрес самой Prob
← →
Verder (2005-07-27 14:41) [2]Адрес начала следующей процедуры не равен следующему за адресом окончания предыдущей процедуры. Надо ли учитывать эту разницу при определении длины?
← →
Leonid Troyanovsky © (2005-07-27 14:50) [3]
> Verder (27.07.05 14:41) [2]
> Адрес начала следующей процедуры не равен следующему за
> адресом окончания предыдущей процедуры. Надо ли учитывать
> эту разницу при определении длины?
Зависит от цели, для которой оная длина определяется.
Например, если для "перемещения" кода, то от лишних
пары байт вреда, IMHO, не будет.
--
Regards, LVT.
PS Кстати, ранние версии Дельфи (<=3) умели делать SizeOf
(не очень понятно зачем).
← →
begin...end © (2005-07-27 14:53) [4]> Verder (27.07.05 14:41) [2]
> Адрес начала следующей процедуры не равен следующему
> за адресом окончания предыдущей процедуры.
В смысле?
← →
jack128 © (2005-07-27 14:57) [5]Leonid Troyanovsky © (27.07.05 14:50) [3]
(не очень понятно зачем).
Мда?? Семерка вот такой код тоже пропускаетprocedure Test;
но возвращает ноль. Я так понимаю, что этот код интерпритируется как определение размера РЕЗУЛЬТАТА функции, а так как в данном случае мы имеем процедуру, то размер её результата - 0. В ранних версиях не так было?
begin
ShowMessage("fwfd");
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := IntToStr(SizeOf(Test))
end;
← →
Leonid Troyanovsky © (2005-07-27 15:10) [6]
> jack128 © (27.07.05 14:57) [5]
> end; но возвращает ноль. Я так понимаю, что этот код интерпритируется
> как определение размера РЕЗУЛЬТАТА функции, а так как в
> данном случае мы имеем процедуру, то размер её результата
> - 0. В ранних версиях не так было?
Еще в D3 SizeOf возвращал размер процедуры в байтах.
Далее, все правильно - размер результата.
--
Regards, LVT.
← →
Verder (2005-07-27 15:14) [7]begin...end © (27.07.05 14:53) [4]
Адрес начала процедуры Prob() — 00407F94, окончание 00407FB1. Адрес же начала процедуры Prob1() — 00407FC4.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c