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

Вниз

Загадочный system   Найти похожие ветки 

 
vertal ©   (2004-05-23 02:09) [0]

Что из себя представляют функции , определенные в модуле system?
(Речь не о Break или continue , а о "нормальных" функциях).В частности , почему не работает

Var
 p:Pointer;
Begin
 p:=@cos;
...


 
Ihor Osov'yak ©   (2004-05-23 03:30) [1]

часть из них "functions & procedures that need compiler magic "
втч cos aka procedure _COS;


 
Юрий Зотов ©   (2004-05-23 05:00) [2]

> vertal ©   (23.05.04 02:09)  

Такие функции - это стандартная библиотека языка. То есть, подпрограммы, заведомо и всегда известные компилятору. Их реальные имена могут отличаться от тех, под которыми они описаны в документации.


 
vertal ©   (2004-05-23 12:43) [3]

> Такие функции - это стандартная библиотека языка.
Это как раз понятно , хотя вообще-то по-моему правильнее оставить язык программирования только языком с "голым" синтаксисом , а если необходимо использовать какие-то функции , то подключать соотв. модули (так как я могу судить и сделано в C/C++), то есть как-то криво смотрится факт подключения по умолчанию system , даже если его и нет в Uses.
>Их реальные имена могут отличаться от тех, под которыми они описаны в документации.
А можно ли как-то все-таки получить адрес такой процедуры/функции (иногда требуется)?Я попробовал с несколькими функциями из system , но ни с одной не получилось. С другими модулями и моими функциями оператор @ работает без проблем.


 
Anatoly Podgoretsky ©   (2004-05-23 12:52) [4]

vertal ©   (23.05.04 12:43) [3]
Для Паскаля вообще то достаточно, поскольку включает ввод/вывод. Могли бы встроить, а часть встроена, напрямую в компилятор, но посчитали удобнее в отдельную библиотеку.


 
Юрий Зотов ©   (2004-05-23 13:24) [5]

> vertal ©   (23.05.04 12:43) [3]

> А можно ли как-то все-таки получить адрес такой
> процедуры/функции

Если не работает
P := @_cos
то вот "обходной маневр", который сработает железно:

function MyCos(X: extended): extended;
begin
 Result := cos(X)
end;

P := @MyCos;


 
vertal ©   (2004-05-23 15:01) [6]

Видимо , только через такой обходной маневр и можно, хотя и криво
- идентификатор "_cos" компилятор не знает


 
VMcL ©   (2004-05-23 15:12) [7]

function GetCosAddr: Pointer;
asm
 mov    eax, OFFSET System.@Cos
end;


 
Petr V. Abramov ©   (2004-05-23 18:49) [8]

>VMcL ©   (23.05.04 15:12) [7]
IMHO, минимум опасно.
до и после вызова System.@Cos компилятор вставляет команды обмена данными с сопроцессором. (на D6, по крайней мере)


 
VMcL ©   (2004-05-23 20:39) [9]

>>Petr V. Abramov ©  (23.05.04 18:49) [8]

Ну это уже проблемы программиста, рискнувшего использовать [7]. Пусть тогда руками укажет wait после вызова потенциально опасного косинуса.


 
Юрий Зотов ©   (2004-05-23 22:33) [10]

Не вижу, чем одна лишняя процедура в программе (MyCos) лучше или хуже другой лишней процедуры (GetCosAddr).


 
vertal ©   (2004-05-24 00:17) [11]

В принципе cos без посредников должен вызываться быстрее ,однако
GetCosAddr компилируется и отрабатывает , но при вызове

Type
 Math_Funtion=Function(x:Extended):Extended;
Var
 p:pointer;
Begin
 p:=GetCosAddr;
 writeln(Math_Funtion(p)(Pi));//error 207
End;

получаю runtime error 207
Я правильно понимаю , что cos принимает и возвращает аргументы типа Extended?


 
Petr V. Abramov ©   (2004-05-24 03:34) [12]

> vertal ©   (24.05.04 00:17) [11]
> Я правильно понимаю  
 Неправильно
см.
Юрий Зотов ©   (23.05.04 13:24) [5]
Юрий Зотов ©   (23.05.04 22:33) [10]
VMcL ©   (23.05.04 20:39) [9]
и (примажусь) :)
Petr V. Abramov ©   (23.05.04 18:49) [8]



Страницы: 1 вся ветка

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
1-1085195303
EXE
2004-05-22 07:08
2004.06.06
Мастера и их помошники - Как уменьшить Exe файл


6-1080821244
a3a3ello
2004-04-01 16:07
2004.06.06
Как отправить по e-mail прицепленный файл ?


4-1082111100
sapsi
2004-04-16 14:25
2004.06.06
Получение хэндлов окон Word и Exсel


1-1085179106
DelPHist
2004-05-22 02:38
2004.06.06
Компиляция математических выражений


14-1085057631
Соловьев
2004-05-20 16:53
2004.06.06
http://www.grineflip.dk/funstuff/kill/kill.htm#