Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

Так, если вы собираетесь делать какие-то действия с любым типом OLE-сервера, то для этого вам необходимо будет использовать все нудные и противные рутинки из набора Windows SDK. Но будет лучше, если всем этим будет заправлять специализированный компонент. Но этот вопрос уже не к Borland. 

OLE сервер

Delphi 1 

Следующий код компилируется без проблем. Он не так ясен и понятен, но он может вам помочь:

unit Unit1;

interface

function OLEfunction(x, y, z: integer): integer; cdecl; export;


implementation


function OLEfunction(x, y, z: integer): integer;

begin

end;


procedure buildOLEstructure;

var F: pointer;

begin

 F := @OLEfunction; { Компилируется без проблем … }

end;


end.

Используйте метод, приведенный ниже. Вы должны объявить одну вызывающую функцию к каждой комбинации параметров, которые вы собираетесь передавать. Затем вы вызываете вызывающую функцию (сорри) и передаете ей как указатель функцию, которую вы хотите вызвать (еще раз сорри). Непонятно? Поясню на примере:

library pcdecl;

function olefunction(a1: pchar; a2: longint; x: integer): integer; cdecl; export;

begin

end;


function callolefunction(func: pointer; a1: pchar; a2: longint; x: integer): integer; assembler;

asm

 push x { помещаем параметры в обратном порядке }

 push word ptr a2 + 2 { если 32-битная величина передается в этих двух шагах, то начинаем с самой «высокой» (high) части }

 push word ptr a2

 push word ptr a1 + 2

 push word ptr a1

 call func

 add sp, 10 { восстанавливаем стек добавлением вытолкнутых байтов. Обратите внимание на то, что func не была вытолкнута }

end;


procedure buildolefunction;

var

 f: pointer;

 reslt: integer;

begin

 f := @olefunction;

 { --- }

 reslt := callolefunction(f, 'Здравствуй, мир', 1000000, 25);

 { --- }

end;


begin

 { --- }

end.

На моем компьютере это компилируется без проблем. Должно работать и у вас. Предупреждение. Обращение к методам должно быть немного другим, нежели к функциям. 

Как я могу избавиться от 'зарегистрированного' имени сервера, если я не хочу использовать его далее?

Nomadic советует:

Запустите исполняемый файл сервера с ключом /UNREGSERVER:

MYSERVER.EXE /UNREGSERVER

Это обычный путь разрегистрации саморегистрирующегося сервера автоматизации OLE. 

Миграция 

Delphi 2 

Совместимость D1/D2

Какая может быть причина того, что программа, работающая в среде W31, не работает в W95 ?

Похоже на то, что данные, сохраненные в двоичном файле, читаются неправильно.

Имеется масса отличий в фундаментальных типах между Delphi 1.0 и Delphi 2.0, которые могут повлиять на двоичный файл. Вот некоторые из них:

1. строки в Delphi 1.0 не эквивалентны строкам по умолчанию (длинным) в версии 2.0

2. «integer» 16-битный в Delphi 1.0 и 32-битный в 2.0

3. записи автоматически упаковываются в Delphi 1.0, но не в Delphi 2.0

 – Rick Rogers 

Delphi 3 

Куда из Delphi 3 делся модуль для работы с ReportSmith? А мои любимые модули работы с OLE: ole2, oleauto и olectl?

Одной строкой 

Nomadic отвечает:

Они лежат в X:\DELPHI3\LIB\DELPHI2.

Ошибки 

Delphi 1 

Ошибка маски редактирования на быстрых пентиумах

Delphi 1 

Данное поведение уже упоминалось ранее. Это, похоже, происходит только на быстрых машинах. Если у вас имеется исходный код RTL, вы можете сделать следующие изменения:

В MASK.PAS, замените

for I := Low(NewKeyState) to High(NewKeyState) do NewKeyState[I] := 0;

На

NewKeyState := KeyState;

– Steve Schafer 

PASDBK16.DLL вызывает GPF

Delphi 1 

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT