Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чем плох статический импорт в interface?


GrayFace ©   (2007-03-07 20:25:00) 

Есть ли смысл объявлять как в Windows.pas? Так:

interface
function FindClose(hFindFile: THandle): BOOL; stdcall;

implementation
function FindClose; external kernel32 name 'FindClose';


Я бы написал так:

interface
function FindClose(hFindFile: THandle): BOOL; stdcall; external kernel32 name 'FindClose';


Есть ли разница?


Джо   (2007-03-08 03:47:00) [1]

> [9] Eraser ©   (08.03.07 03:17)
> > [6] Джо ©   (08.03.07 01:05)
>
> насчет замусоревания вопрос вообще интересный, я вот последнее
> время все заголовки к библиотекам (хоть их и не много) пишу
> с возможностью динамической загрузки, подобно тому, как
> в Джедаях сделано, вот там действительно замусоревание )
> ) ...  хотя в ряде случаев сильно облегчает жизнь.

Да, хитрО в джедаях сделано, и хитро, и удобно. Но — замусорено же! :)


Eraser   (2007-03-08 03:17:00) [2]

> [6] Джо ©   (08.03.07 01:05)

насчет замусоревания вопрос вообще интересный, я вот последнее время все заголовки к библиотекам (хоть их и не много) пишу с возможностью динамической загрузки, подобно тому, как в Джедаях сделано, вот там действительно замусоревание )) ...  хотя в ряде случаев сильно облегчает жизнь.


Плохиш   (2007-03-08 02:47:00) [3]


interface

function memcmp (P1, P2: Pointer; Size: Cardinal): Integer; cdecl;

implementation

{$IFDEF MSWINDOWS}
function memcmp; external 'msvcrt.dll' name '_memcmp';
{$ELSE}
function memcmp;
begin
// Ваяем, чё там фигачат эти не мс-кие системы
end;
{$ENDIF}


Джо   (2007-03-08 01:06:00) [4]

Впрочем, например, в Windows.pas она и так достаточно «замусорена».


Джо   (2007-03-08 01:05:00) [5]

Да, не понимаю того же, что и  [5] Германн ©.
Разве что, это позволяет не замусоривать секцию interface.


Германн   (2007-03-08 00:57:00) [6]


> Игорь Шевченко ©   (08.03.07 00:47) [4]
>
> Германн ©   (08.03.07 00:38) [3]

А в секции interface я не могу так написАть? То бишь я не могу реализовать "условную компилляцию" в секции interface?


Игорь Шевченко   (2007-03-08 00:47:00) [7]

Германн ©   (08.03.07 00:38) [3]


> > Есть. В первом случае ты можешь иметь один и тот же интерфейс,
>
> >  но разную реализацию... например, в зависимости от директив
>
> > компилятора или платформы
> >
>
> Поясни, пожалуйста.


interface

function memcmp (P1, P2: Pointer; Size: Cardinal): Integer; cdecl;

implementation

{$IFDEF USE_CRTL}
function memcmp; external 'msvcrt.dll' name '_memcmp';
{$ELSE}
function memcmp; external 'ntdll.dll' name 'memcmp';
{$ENDIF}


Германн   (2007-03-08 00:38:00) [8]


> DrPass ©   (08.03.07 00:24) [2]
>
>
> > Есть ли разница?
>
> Есть. В первом случае ты можешь иметь один и тот же интерфейс,
>  но разную реализацию... например, в зависимости от директив
> компилятора или платформы
>

Поясни, пожалуйста.


DrPass   (2007-03-08 00:24:00) [9]


> Есть ли разница?

Есть. В первом случае ты можешь иметь один и тот же интерфейс, но разную реализацию... например, в зависимости от директив компилятора или платформы


GrayFace   (2007-03-07 20:26:00) [10]

Ой, извеняюсь. Не туда запостил


Наверх

Титульная страница Поиск, карта сайта Написать письмо