Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 03.10.2012, 21:36
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ещё бы, как минимум на двух форумах в один голос советовали одно и то же.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #17  
Старый 20.01.2013, 21:18
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

подскажите, а какой самый простой способ передачи массива из трех чисел из dll
или просто три числа надо передать.
писать три функции не хочется, хочется одной обойтись
можно конечно сконвертировать их в string? а потом разбирать их, но тоже как-то громоздко
а вот про передачу массива ничего не понял совсем.
Ответить с цитированием
  #18  
Старый 20.01.2013, 21:40
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
procedure SuperProcWithThreeParams(var a, b, c: integer)
begin
 a := 1;
 b := 2;
 c := 3;
end;
Значение возвращается в виде трех чисел.
Если чисел именно три, то этот способ самый простой. Но о расширяемости в этом случае можно забыть.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #19  
Старый 20.01.2013, 21:45
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Код:
procedure SuperProcWithThreeParams(var a, b, c: integer)
begin
 a := 1;
 b := 2;
 c := 3;
end;
Значение возвращается в виде трех чисел.
Если чисел именно три, то этот способ самый простой. Но о расширяемости в этом случае можно забыть.

то есть эта процедура будет находится в dll, верно?
а как ее вызывать потом в моей программе и использовать эти переменые ?
Ответить с цитированием
  #20  
Старый 20.01.2013, 23:00
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вызывать как всегда.
Код:
SuperProcWithThreeParams(v1, v2, v3);
В результате переменные v1, v2, v3 будут содержать значения, пришедшие из функции.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #21  
Старый 20.01.2013, 23:16
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

все, разобрался, работает

обьявил в проге после var переменные a,b,c: integer;
потом вызывал процедуру с ними в виде Proc(a,b,c);
и после получал данные например Edit1.Text:=IntTostr(a);

спасибки, а то не доходило никак долго
Ответить с цитированием
  #22  
Старый 21.01.2013, 00:04
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

Есть еще маленький вопрос не совсем по теме
у меня из проги вызывается длл форма
так вот на ней нет иконки сворачивания, только крестик, и как ее добавить я пока не врублюсь
а так же чтобы эта форма всегда была поверх остальных окон

Последний раз редактировалось harbor, 21.01.2013 в 00:06.
Ответить с цитированием
  #23  
Старый 21.01.2013, 00:08
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

BorderStyle, BorderIcons.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
harbor (21.01.2013)
  #24  
Старый 21.01.2013, 17:21
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

Не сочтите за наглость но у меня очередная проблема

надо сделать такую задачу - приложение открывает dll, а эта dll должна вызвать другую dll уже с формой. Предыдущая dll закрывается, остается только приложение и 2-я dll. И вот между ними мне нужно организовать связь - по сути - делать запрос одной функции с передачей 3 чисел..
сильно ли трудно такое реализовать?
очень буду благодарен за подсказки
Ответить с цитированием
  #25  
Старый 21.01.2013, 18:23
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вызывай из приложения сразу нужную функцию из нужной библиотеки. так можно делать!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #26  
Старый 21.01.2013, 18:33
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

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

Последний раз редактировалось harbor, 21.01.2013 в 18:56.
Ответить с цитированием
  #27  
Старый 21.01.2013, 18:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Вопрос

в курсе вообще для чего dynamic-link library нужны?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #28  
Старый 21.01.2013, 18:46
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

не в курсе пока. я с созданием dll и все что с ними связано только дня три разбираться как начал, ну написал обычную статическую с вызовом из приложения - работает.

а блин dynamic-link library это и есть dll ))
ну это то я в курсе, а вот как задачу свою решить не знаю.

Последний раз редактировалось harbor, 21.01.2013 в 18:51.
Ответить с цитированием
  #29  
Старый 21.01.2013, 19:00
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

DLL (англ. dynamic-link library — «библиотека динамической компоновки», «динамически подключаемая библиотека») — понятие операционных систем Microsoft Windows и IBM OS/2, динамическая библиотека, позволяющая многократное использование различными программными приложениями. K DLL относятся также элементы управления ActiveX и драйверы. В мире UNIX аналогичные функции выполняют так называемые общие объекты (англ. shared objects).

Формат файлов DLL придерживается тех же соглашений, что и формат исполняемых файлов, сочетая код, таблицы и ресурсы, отличаясь лишь интерпретацией некоторых полей.
[править]
Цели введения

Первоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только один экземпляр библиотечного модуля для различных приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти.

Далее, предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того, динамические библиотеки могли использоваться разнотипными приложениями — например, Microsoft Office, Microsoft Visual Studio и т. п.

В дальнейшем идея модульности выросла в концепции Component Object Model и System Object Model.

Фактически, полных преимуществ от внедрения динамически подключаемых библиотек получить не удалось по причине явления, называемого DLL hell («ад DLL»). DLL hell возникает, когда несколько приложений требуют одновременно различные, не полностью совместимые, версии библиотек, что приводит к сбоям в этих приложениях и к конфликтам типа DLL hell, резко снижая общую надёжность операционных систем. Поздние версии Microsoft Windows стали разрешать параллельное использование разных версий DLL (технология SxS), что свело на нет преимущества изначального принципа модульности.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #30  
Старый 21.01.2013, 19:30
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

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


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter