Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Использование TStatusBar в вызовах DLL  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1250
пожалуй оставлю тут, мало ли кому пригодится :)

https://github.com/RefactoringGuru/design-patterns-delphi
1 июн 21, 12:08    [22329758]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
zedxxx,

Доброго дня zedxxx !

Попытался реализовать Ваше предложение
взгляните пожалуйста верно ли Вас понял.

Ошибка ушла - это наверняка

InterAction.pas - здесь описание типов двух серверов
TExeServer - создание сервера-связи в EXE файле
TDllServer -создание сервера-связи в DLL файле

И связь между ними через вызов события EXE сервера,
все ссылки на ячейки и объекты основного EXE попытался исключить.

Код до конца не оптимизировал... кое-что можно наверняка сократить.

Сомнения
Не много ли уделено ресурсов на передачу данных между серверами ?
возможно это можно сделать через возврат переменной процедурного типа ?


Спасибо за Ваши предложения

К сообщению приложен файл (MyDll.rar - 77Kb) cкачать
2 июн 21, 16:05    [22330427]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
Vizit0r

А если совета недостаточно, а нужен только код - то это не разработчик, а копи-пастер.


Вы понимаете русский язык - суда по написанному - "ДА"
Я говорю - "A...."
Какой именно смысл я вложил в содержание фразы ?
Мне кажется гораздо проще изложить всю фразу....

P.S. функцией "копи- пастер" - без разбора содержание и сути здесь не обойдешься
2 июн 21, 16:14    [22330436]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
энди
пожалуй оставлю тут, мало ли кому пригодится :)

https://github.com/RefactoringGuru/design-patterns-delphi


Спасибо за Ваше участие
Не сомневайтесь непременно пригодиться.
Полная и целостная реализация фразы "А" - применима во всех случаях
2 июн 21, 16:20    [22330444]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
HOME_X

zedxxx,

Спасибо за Ваши предложения

Что-то файл на выкладывается ...



К сообщению приложен файл (MyDll.rar - 77Kb) cкачать

Сообщение было отредактировано: 2 июн 21, 16:13
2 июн 21, 16:20    [22330446]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
zedxxx
Member

Откуда:
Сообщений: 93
TDllServer и TExeServer должны реализовывать интерфейсы. А TDllLoop вообще не нужен, возвращайте из dll сразу TDllServer.

В IDllInterface нельзя использовать string в параметре. Вы же данные передаёте в чужое адресное пространство. Замените на WideString или PWideChar. Ну и, соответственно, никаких TComponent в параметрах тоже быть не должно, допустимы только интерфейсные переменные.
2 июн 21, 17:28    [22330500]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
zedxxx
TDllServer и TExeServer должны реализовывать интерфейсы.
А TDllLoop вообще не нужен, возвращайте из dll сразу TDllServer.

В IDllInterface нельзя использовать string в параметре. Вы же данные передаёте в чужое адресное пространство. Замените на WideString или PWideChar. Ну и, соответственно, никаких TComponent в параметрах тоже быть не должно, допустимы только интерфейсные переменные.


TDllLoop = - это базовый класс для прикладной задачи (в данному случае не существенно)
По типам замечания - принято - спасибо !

Хотелось бы услышать по поводу
Сомнения
Не много ли уделено ресурсов на передачу данных между серверами ?
возможно это можно сделать через возврат переменной процедурного типа ?

Не ?????
2 июн 21, 17:55    [22330503]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
zedxxx
Member

Откуда:
Сообщений: 93
Что вы подразумеваете под ресурсами? Сколько раз в секунду должен выполняться данный код?

Альтернативный вариант тут уже предлагали - написать всё на колбеках.
2 июн 21, 18:11    [22330507]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
zedxxx

вариант тут уже предлагали - написать всё на колбеках.


А такой стиль наверное не очень хорошо ?
Но работает ....

type
TReturnMessage = procedure(aValue: Integer);

type IDllInterface = interface(IInterface)
['{EDA14150-3969-44C5-A366-1586D407102A}']
procedure ReturnSave(Id: Integer; Value: TReturnMessage); stdcall;


unit DllInterface;

interface

uses Classes,
     Vcl.ComCtrls;

type
  TReturnMessage = procedure(aValue: Integer);

type IDllInterface = interface(IInterface)
  ['{EDA14150-3969-44C5-A366-1586D407102A}']
  procedure BegRegisterDll(Server: TComponent);     stdcall;
  procedure EndRegisterDll;                         stdcall;
  function  SendMessageDll(aText: String): Boolean; stdcall;
  procedure ReturnSave(Id: Integer; Value: TReturnMessage);      stdcall;
end;

implementation

end.


Спасибо за уделенное время

Сообщение было отредактировано: 2 июн 21, 23:14
2 июн 21, 23:21    [22330644]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
HOME_X,

Опять файл не приложился

К сообщению приложен файл (call_dll.rar - 78Kb) cкачать
2 июн 21, 23:24    [22330647]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
HOME_X
Member

Откуда:
Сообщений: 2685
zedxxx

Что вы подразумеваете под ресурсами?


На серьезный проект особо времени и писанины не жалко
Когда проект невелик - создавать свои классы не особо хочется
В моем конкретном случае - "дырка уже заткнута" с две неделя назад
Подключать связующие сервера не хочется,
Но понять и отработать варианты для дальнейшего нужно
вот и весь смысл текущей темы

Еще раз спасибо
2 июн 21, 23:31    [22330650]     Ответить | Цитировать Сообщить модератору
 Re: Использование TStatusBar в вызовах DLL  [new]
zedxxx
Member

Откуда:
Сообщений: 93
Обычно, написанный код ещё надо и сопровождать какое-то время. Поэтому усилия затраченные на написание хорошо структурированного и читаемого кода, окупают себя сторицей.
3 июн 21, 09:32    [22330735]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить