Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2010, 18:13   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию Symbol "Resident" is deprecated

Вот:
Код:
library Maths;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes;

{$R *.res}

Type
    WorldMatrix = array[1..4,1..4] of Integer;

Const
     RadToGrad = Pi/180;
     E = 2.7182818284590452;

Function Pow(X:Double;Y:Integer):Double;Export;
Var I:Integer;T:Double;
Begin
     T:=X;
     For I:=1 to Y-1 do
     X:=T*X;
     Pow:=X;
End;

Function MinPow(X:Double;Y:Integer):Double;Export;
Var T:Double;
Begin
     T:=Pow(X,Y);
     MinPow:=1/T;
End;

Function Degrees(X:Double):Double;Export;
Begin
     Degrees:=X/RadToGrad;
End;

Function Radians(X:Double):Double;Export;
Begin
     Radians:=X*RadToGrad;
End;

Function ArcSin(X:Double):Double;Export;
Var M:Double;
Begin
     M:=X/sqrt(1-x*x);
     M:=(Arctan(M));
     ArcSin:=Degrees(M);
End;

Function ArcCos(X:Double):Double;Export;
Var M:Double;
Begin
     M:=Sqrt((1-X)/2);
     ArcCos:=2*ArcSin(M);
End;

Function ArcTg(X,Y:Double):Double;Export;
Begin
     X:=X/Y;
     ArcTg:=ArcTan(X);
End;

Function Ceil(X:Double):Integer;Export;
Begin
     if Frac(x) = 0 then Ceil:=Trunc(X)
     else
     Ceil:=Trunc(X+(1-Frac(X)));
End;

Function Sinh(X:Double):Double;Export;
Var T,T1:Double;
Begin
     T:=Pow(E,Trunc(X));
     T1:=MinPow(E,Trunc(X));
     T:=T-T1;
     Sinh:=T/2;
End;

Function Cosh(X:Double):Double;Export;
Var T,T1:Double;
Begin
     T:=Pow(E,Trunc(X));
     T1:=MinPow(E,Trunc(X));
     T:=T+T1;
     Cosh:=T/2;
End;

Function TgH(X:Double):Double;Export;
Begin
     TgH:=Sinh(X)/Cosh(X);
End;

Function CtgH(X:Double):Double;Export;
Begin
     Ctgh:=1/TgH(X);
End;

Function Floor(X:Double):Integer;Export;
Begin
     if Frac(X) = 0 then Floor:=Trunc(X)
     else
     Floor:=Trunc(X-(1-Frac(X)));
End;

Function VectorL(X0,X1,Y0,Y1:Double):Double;Export;
Begin
     VectorL:=sqrt(sqr(X0-X1)+sqr(Y0-Y1));
End;

Function SecH(X:Double):Double;Export;
Begin
     SecH:=1/Cosh(X);
End;

Function CosecH(X:Double):Double;Export;
Begin
     CosecH:=1/SinH(X);
End;

Function Lerp(X,Y,S:Double):Double;Export;
Begin
     Lerp:=X+S*(Y-X);
End;

Function Max(A,B:Double):Double;Export;
Begin
     Max:=B;
     if A>B then Max:=A;
End;

Function Min(A,B:Double):Double;Export;
Begin
     Min:=A;
     if A>B then Min:=B;
End;

Function RSqrt(X:Double):Double;Export;
Begin
     RSqrt:=1/Pow(X,2);
End;

Function Sign(X:Double):Integer;Export;
Begin
     Sign:=0;
     if X<0 then Sign:=-1;
     if X>0 then Sign:=1;
End;

Function SmoothStep(Min,Max,X:Double):Integer;Export;
Begin
     SmoothStep:=0;
     if X<Min then SmoothStep:=-1;
     if X>Max then SmoothStep:=1;
End;

Function Step(a,X:Double):Integer;Export;
Begin
     Step:=0;
     if X>=A then Step:=1;
End;

Function Sec(X:Double):Double;Export;
Begin
     Sec:=1/Cos(Radians(X));
End;

Function Cosec(X:Double):Double;Export;
Begin
     Cosec:=1/Sin(Radians(X));
End;

Exports
      Degrees resident,
      Radians resident,
      Pow resident,
      MinPow resident,
      ArcSin resident,
      ArcCos resident,
      ArcTg resident,
      Ceil resident,
      Sinh resident,
      Cosh resident,
      TgH resident,
      CtgH resident,
      Floor resident,
      VectorL resident,
      SecH resident,
      CoSecH resident,
      Lerp resident,
      Max resident,
      Min resident,
      RSqrt resident,
      Sign resident,
      SmoothStep resident,
      Step resident,
      Sec resident,
      Cosec resident;

begin
end.
Что значит эта ошибка?(в названии темы)
_-Re@l-_ вне форума Ответить с цитированием
Старый 11.08.2010, 18:32   #2
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Что эта директива устарела
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 02:49   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Вы, часом, Delphi не по книжке по Паскалю учите? Там есть некоторые различия.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2010, 02:59   #4
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Код:
Exports
      Degrees resident,
      Radians resident,
      Pow resident,
      MinPow resident,
      ArcSin resident,
      ArcCos resident,
      ArcTg resident,
      Ceil resident,
      Sinh resident,
      Cosh resident,
      TgH resident,
      CtgH resident,
      Floor resident,
      VectorL resident,
      SecH resident,
      CoSecH resident,
      Lerp resident,
      Max resident,
      Min resident,
      RSqrt resident,
      Sign resident,
      SmoothStep resident,
      Step resident,
      Sec resident,
      Cosec resident;

begin
end.
Функция не может быть в делфи с пробелами! Выше уже сказали про паскали и иже с ними
r9m вне форума Ответить с цитированием
Старый 12.08.2010, 08:00   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Вы, часом, Delphi не по книжке по Паскалю учите? Там есть некоторые различия.
Нет, огорчу вас, это не так. Я вообще редко читаю книжки про Delphi. В интернете смотрю. А в Delphi как это будет?
Цитата:
Функция не может быть в делфи с пробелами!
Не понял...
_-Re@l-_ вне форума Ответить с цитированием
Старый 12.08.2010, 08:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А в Delphi как это будет?
Никак. В Делфи нет Resident, это касаемо только TP7. В Делфи эта директива игнорируется компилятором, о чем он тебя и предупреждает.

Цитата:
Не понял...
Не к теме, но r9m имел ввиду что resident - это часть названий твоих функций )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.08.2010, 10:26   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Спасибо, Stilet. Теперь понял.
_-Re@l-_ вне форума Ответить с цитированием
Старый 12.08.2010, 13:25   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Нет, огорчу вас, это не так.
Откуда тогда вы взяли это resident?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2010, 15:34   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Из Delphi 1, видимо
Я вот завис на этом куске текста
Цитата:
В Windows существует понятие "резидентных функций" DLL, то есть тех функций, которые находятся в памяти на протяжении всего времени существования DLL в памяти, в Lazarus имеются средства для организации и такого рода экспорта:

exports

ExportByName name 'MYEXPORTPROC' resident;
Какая-то фигня со времён windows 3.1 чтоли?

--

Во, нашёл, так и есть. Эта фишка была для экономии памяти, когда ещё Borland Pascal With objects for Windows собирал 16-битные NE-файлы под win3.1.
Цитата:
Wait, did I say the exported names table? I'm sorry, that was an oversimplification. There are actually two exported names tables, the resident names table and the non-resident names table. As their names suggest, the names in the resident names table remain in memory as long as the DLL is loaded, whereas the names in the non-resident names table are loaded into memory only when somebody calls GetProcAddress (or one of its moral equivalents). This distinction is a reflection of the extremely tight memory constraints that Windows had to run within back in those days. For example, the window manager (USER) has over six hundred export functions; if all the exported names were kept resident, that would be over ten kilobytes of data. You'd be wasting four percent of the memory of your 256KB machine remembering things you don't need most of the time.
пыщь

Последний раз редактировалось JTG; 12.08.2010 в 15:46.
JTG вне форума Ответить с цитированием
Старый 12.08.2010, 15:38   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наверное имелось что резидентные функции не выгружаются из памяти даже если они не нужны... Хотя... Чем история не шутит
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50