Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

Загадочный 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
6-1082086812
dreams
2004-04-16 07:40
2004.06.06
Событие открытия нового окна в TWebbrowser


3-1084454956
Адмирал
2004-05-13 17:29
2004.06.06
Создание БД из приложения или выполнение скрипта


4-1083758886
Ragazor
2004-05-05 16:08
2004.06.06
Инфа по COM и LPT


1-1085651976
Dysan
2004-05-27 13:59
2004.06.06
хранение обьектов?


14-1084762100
тихий вовочка
2004-05-17 06:48
2004.06.06
исчезновение информации с винта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский