Библиотека программирование, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

Свойство Color, Color в StatusBar не меняется
Винды полетели!!! На юг, зимовать!!!, Как копировать МоиДокументы...
Media, CD
Screen Saver, Run
Sound, Mute (On/Off)
как создать новый компонент delphi
линия в пиксель между caption формы и рабочей обла, как убрать, закрасить
Window, Minimize
Minimize, Minimize All
TADOConnection и пароль
Sound, Bakance
Подключение
!!!Снимок эксрана, Как сделать?
прописывание полей в DBGrid'e
delphi and word
TListView рисование., OwnerData, OwnerDraw
Импортирование методов DLL
Max Размеры TImage.Bitmap.Width &&, TImage.Bitmap.Heigth
Принтеры: Функция EnumJobs работает неправильно!!
Как Вы относитесь к курящим девушкам?
Зацепить Dll, Динамически подцеплять динамические би..
Сжатие БД Access
Классы и DLL, Разбиение программы на модули
PropertyEditor, Какой предок использовать для TCollectio
Изменение пароля в БД access
Что такое case-средства
БД Pradox, Сортировка в обр. порядке
CD in CD-ROM
Edit-combobox
Как найти слова в текстовом файле?
множественный выбор в таблице?
Зависает програма, когда делаю простой запрос, если запущено несколько копий
WaitForSingleObject
Проблема со шрифтом
Доступ из Delphi к MSSQL, Идиотский вопрос
КУРСОВОЙ ПРОЕКТ (НЕ БЕСПЛАТНО)
Очень важно!!!!, Помогите!!!
Pointer, ?
Как вставить пароль в Web форму.?, Как вставить пароль в Web форму.?
Как установить компонент?, Как установить компонент?
Объясните код, TP 7.0, скрытие курсора
ControlPanel, Как вызывать диалоги из Control Panel
Помогите советом, Pascal
массив компонентов
KBD pascal
динамический двумерный массив
IXMLDocument, кодировочки...
Посмотри, Как достать файл из корзины
Ошибка
Дескриптор окна
Найти корень слова
Неизвестный интерфейс
sql-архивчик
OpenProg, Как открыть файл программой?
Как сделать сервер и клиент?
1245/1000, требуется число из типа integer разделит
Control-ы, Если очень много кнопок.
Отображение изменения значения свойства, в сосбственном компоненте
Создание PathToNode, компонент TTreeview
Recv
PageControl
Цвет шрифта DateTimePicker, в Delphi 6
TStringGrid, удаление строк (столбцов)
Print, Проблемы
Как Вы относитесь к курящим девушкам?
Delphi&Word, Работа с Вордом
вопрос
smxml.dll
помогите надо прогу, Delphi
llPDFLib фильтр экспорта для FastReport, помогите примером !

Платные хостинги     Раскрутка сайта     Книги по программированию


Классы и DLL, Разбиение программы на модули

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Всем привет!Подскажите, плиз, как разбить прогу на несколько DLL и притом чтобы это было поумнее.Вся беда в том, что или нельзя делать классы в DLL или я незнаю как это делать. Вообщем, если кто знает как это сделать, то поделитесь, плиз.Заранее благодарен.

- Выделяешь основные функции, и запихиваешь их в DLL.Я Вам посоветую прежде всего почитать хоть какую-нибудь литературу. Вот могу дать код, он написан в целях обучения моего младшего брата, показывающий, как работать с DLL на самом примитивном уровне. Думаю не сложно будет разобраться.Код DLL:Код library Alex;{ 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  ShareMem, SysUtils, Classes;{$R *.RES}var GV: real;function AddInt(a, b: integer): integer;begin  Result := a + b;end;function AddReal(c, d: real): real;begin  Result := c + d;end;function AddString(e, f: string): string;begin  Result := e + f;end;function DoSomething(): integer;begin  Result := 1;end;exports  AddInt,  AddReal,  AddString name 'AddStringFromDLL';  beginend.highlightSyntax('delphizOGJjM','delphi');Код проекта, подключающего DLL:Код unit Loader;interfaceuses ShareMem,  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls;type  TForm1 = class(TForm)    e1: TEdit;    e2: TEdit;    e3: TEdit;    ee1: TEdit;    ee2: TEdit;    ee3: TEdit;    re1: TEdit;    re2: TEdit;    re3: TEdit;    b1: TButton;    b2: TButton;    b3: TButton;    procedure b1Click(Sender: TObject);    procedure b2Click(Sender: TObject);    procedure b3Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.DFM}function AddInt(a,b:integer): integer;  external 'Alex.dll';function AddReal(c,d:real): real;  external 'Alex.dll';function AddStringFromDll(e,f:string): string;   external 'Alex.dll';procedure TForm1.b1Click(Sender: TObject);begin  re1.text := IntToStr(AddInt(StrToInt(e1.text), StrToInt(ee1.Text)));end;procedure TForm1.b2Click(Sender: TObject);begin  re2.text := FloatToStr(AddReal(StrToFloat(e2.text), StrToFloat(ee2.Text)));end;procedure TForm1.b3Click(Sender: TObject);begin  re3.text := AddStringFromDLL(e3.text, ee3.Text);end;end.highlightSyntax('delphiMTc2ODg','delphi');

- Использование string в dll нежелательно, так как могут возникать проблемы с разделением памяти, вместо этого нужно целесообразней использовать PChar. Что и написано в тексте сгенеренного Дельфи проекта.

- Согласен.

- Народ, может я не так высказался, но то что вы написали всё понятно, проблема в другом, возможно ли каким бы то нибыло образом вынести классы (включая их определения) в DLL.То что можно все методы данного классы туда вынести - это понятно, но хотелось бы вынести САМ КЛАСС!Вопрос то конечно глупый, можно просто использовать activeX, но нехотелось бы...

- Можно, а в чем проблема?

- Да проблема то в том как импортировать - экспортировать метод - понятно, а как это применить к классу???

- Да нет просто использовать его, хотя наследование не исключено

- Самый простой пример - TForm. По аналогии для любого другого класса. И, возможно, ты путаешь класс и экземпляр класса? Есть модуль в котором описан какой-то класс. Включи его в длл и в свою прогу. Ну и юзай его.

- Да ничего я не путаю.Как делается наследование - я знаю. ПРОБЛЕМА В ТОМ, ЧТОБЫ КЛАСС БЫЛ ОПИСАН В DLL!!!

- А по аоводу включения и туда и сюда - не хотелось бы т.к. это всё делается для того, чтобы получить прогу ввиде нескольких модулей и притом маленьких.

- Да там как я понимаю надо описывать TLB.А в это TLB все параметры имеют весьма экзотичный тип.Да иего надо регистрить в реестре, что тоже снижает привлекательность.

- В качестве ДЛЛ можно использовать пакеты Дельфи (BPL), поскольку они на самом деле являются ДЛЛ, но обладают большими возможностями при использовании классов. Какими точно я не помню - все ето я мельком просматривал в книге Марко Кенту "Delphi 6 для профессионалов". Так что поищи материальчик про их юзание. Это сообщение отредактировал <Spawn> - 29.5.2003, 14:51

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | графическое программирование | язык программирования си | оффшорное программирование | пролог программирование | программирование dos | программирование мобильных | программирование мини атс | выпуклое программирование | программирование микросхем | программирование ms | библиотека программирование | программирование 3d | программирование j2me | программирование под windows | коды программирования | программирование статьи | asp программирование | веб программирование | lotus программирование | описания языков программирования | примеры задач программирование | программирование symbian | программирование литература | введение программирование | сравнение языков программирования | Ссылки

Все про веб программирование