0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
||||||||||||||||
1 | ||||||||||||||||
Форма с кнопками из потока. Перевести с Дельфи30.03.2013, 13:35. Показов 1119. Ответов 17
Метки нет (Все метки)
Может кто-нибудь помочь с кодом? много не прошу, только понять синтаксис верно
на дельфи я делал dll в которой создавал поток и в потоке создавал форму с кнопками. как сделать то же самое в си билдере? в дельфи делал так:
помогите плз можно какой-нибудь простой пример создания потока, а то пока не врублюсь никак... мне важно синтаксис понять, чтобы откомпилировать нормально Добавлено через 18 часов 7 минут Вобщем сделал я вот так, вроде работает
что произойдет с потоком после закрытия модальной формы ? он завершится ? или нужно как-то дать команду на завершение ? И в начале комментарий про менеджер памяти MEMMGR.LIB, как его надо использовать как его добавить в проект? типа #include "MEMMGR.LIB" или как-то по другому? у меня в DLL будет функция(в потоке самой dll), которая будет экспортироваться тоже и она будет брать данные с формы и передавать их в вызывающую программу. Тут есть один не совсем мне понятный нюанс, при выгрузке DLL из основной программы как правильно уничтожать поток и форму ил они сами уничтожаться ? Добавлено через 11 минут функция передачи параметров будет выглядеть как-то так(может по синтаксису не верно, не проверял еще):
0
|
30.03.2013, 13:35 | |
Ответы с готовыми решениями:
17
перевести програмку из дельфи в си Перевести исходник игры с дельфи на с++ Перевести класс с Дельфи на Билдер Перевести функцию IPAddrToName с Дельфи |
30.03.2013, 18:23 | 2 |
Зачем использовать поток для создания VCL-формы? Компоненты VCL могут стабильно работать исключительно в контексте главного потока, из любого вторичного потока процесса к ним как-либо обращаться небезопасно ввиду существенной возможности конфликта доступа.
Я так понимаю, это плагин к какой-то сторонней программе. В этом случае следует писать его на чистом WinAPI.
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
30.03.2013, 18:40 [ТС] | 3 |
я так подезреваю что "си-шники" как увидят дельфийский код так вам религиозно дурно становится и как видно некоторым даже мерзко
)) а по теме - пытаюсь наладить передачу данных между dll на билдере и приложением дельфи(специально хочу чтобы приложение было на другом языке) вобщем dll статически подключается нормально, а при попытке передать два числа типа integer приложение крашится. вобще смысл перехода на сишную библиотеку в том, что возникают глюки с освобождением памяти после работы си-шного приложения и dll на дельфи Добавлено через 7 минут да, что-то вроде плагина про конфилкты в этом случае я читал, но у меня только чтение с формы состояния кнопок и все. по сути к форме обращается только одна функция для передачи данных в приложение. dll на дельфи у меня работает нормально, но при выгрузке она иногда крашит ту стороннюю прогу, потому что как я понял библиотека на дельфи работает нормально только с приложениями на дельфи, это связано с какими то особенностями освобождения памяти после работы. Смысл же создания отдельного потока в том, чтобы была независимость от приложения, потому что форма созданная в потоке dll некорректно работает с приложением из-за особенностей подключения.. но это муторно обьяснять да и нет смысла. Добавлено через 5 минут кажется я забыл вставить stdcall для экспортируемых функций, вот и крашится
0
|
30.03.2013, 19:34 | 4 |
Этого вполне достаточно, про стабильность уже можешь забыть. Это может оказаться для тебя новостью, но формы можно создавать и средствами WinAPI, что в данном случае и надлежит сделать.
Не по теме: Религиозное восприятие делфийских текстов лучше оставить в стороне, здесь не кружок софистов...
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
||||||
30.03.2013, 20:19 [ТС] | 5 | |||||
BRcr, с winAPI я замучаюсь, хотя есть конечно конструкторы форм.. но зачем
Я же говорю, та же самая DLL на дельфи у меня сейчас работает, то есть форма создается в отдельном потоке, кнопочки жмыкаются, данные в приложение сливаются, никаких сбоев. сбой бывает только при выгрузке моей dll из приложения, точную причину я не знаю. хотя если закрыть форму вручную и завершить поток, то приложение не крашится. Поэтому я решил попробовать сделать эту же DLL на билдере.. Но в гугле уже второй день копаюсь и все как-то очень скудно с примерами по созданию dll. сейчас в DLL сделал простецкую функцию
и... не работает!)) получаю какое-то левое пятизначное число при сложении допустим 8 и 5 пробовал менять stdcall на cdecl без разницы, результата ноль вот сижу репу чешу,что в билдере не так может там не число, а указатель на число передается.. Добавлено через 30 минут вобщем числа в dll не передаются почему-то, пока не разобрался почему а вот результат нормально возвращается,разумеется если задать какое-нибудь готовое число типа return 555;
0
|
30.03.2013, 22:30 | 6 |
Задача какой-то мораз ей богу ...
Нафига тебе dll ? Для этого есть DDE, WinApi - сообщения, разные пайпы итп ... Добавлено через 4 минуты Будут проблемы с VCL проблемы типа этих Создать DLL, которая создаст кнопку на форме Добавлено через 2 минуты Для многопоточных приложений это не показатель ... тем более с DLL. Добавлено через 1 минуту Пипец работает ... а потом еще говорят :
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
30.03.2013, 22:54 [ТС] | 8 |
Avazart, ребята, напишите пожалуйста лучше что-нибудь по теме, если нечего написать, то не надо устраивать холивар. у меня есть задача, которую я хочу решить для себя, причем тут мараз и прочий словесный гон. зачем это писать.
еще раз говорю, с текущей dll на дельфи проблем нет в работе(проверено уже парой месяцев ежедневно с утра до вечера) проблема только при выгрузке. и то дело не в самой dll, а в работе с памятью. да, как вариант я могу на том же дельфи сделать отдельное приложение и оно тоже будет работать через разделяемую память или пайпы и сооветственно ничего не будет крашится, но вот чешется мне именно dll сделать
0
|
30.03.2013, 23:07 | 9 |
Это для тебя работает? и нет проблем?
Действительно дурно и мерзко от этого ... Добавлено через 1 минуту А что тут не по теме ? Тебе уже сказали что так никто не делает и подход твой изначально неверный... Добавлено через 1 минуту Читай тогда то что я привел https://www.cyberforum.ru/post3256602.html коль мазохист ...
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
30.03.2013, 23:33 [ТС] | 10 |
Avazart, вы идите отсюда, кому нибудь другому указывайте что и как делать. ну правда, вам же дурно и мерзко?
и потом. моя dll не создает ничего на форме по теме, я был бы рад если бы ктонибудь выложил простенький проект dll + приложение на билдере с вызовом функции и передачей например параметров типа int туда и обратно ну не могу сам никак осилить, не хватает у меня мозгоф) сижу компилю, ошибки какие-то лезут..
0
|
30.03.2013, 23:47 | 11 | |||||
Ну-ну... быдлокодить это без меня ...
Иногда стоит оглянуться Dynamic-Link Library: Теория + Практика Добавлено через 4 минуты Коментарии из вашего кода
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
31.03.2013, 00:07 [ТС] | 12 |
я вот ейчас сделал dll с функцией суммы двух чисел, ну как в хелпе. результат сразу выводится по ShowMessage.
а сделать приложение не получается то есть я делаю проект VCL приложения, подключаю файл .lib к нему, подключаю заголовочный файл dll-ки объявляю прототип EXPORT void __stdcall SumFunc(const int a, const int b); (где его надо объявлять ни в одном хелпе не пишется, надо быть экстрасенсом чтобы понять) и на форме на кнопку вешаю эту функцию компилятор пишет еррор: Call to undefined function 'SumFunc'
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
31.03.2013, 00:36 [ТС] | 14 |
Avazart, пример с неявной загрузкой отсюда Dynamic-Link Library: Теория + Практика
не работает мне всего лишь надо научиться передавать в dll и обратно integer и string(char), а потом попробовать массивы. никаких больше наворотов не требуется, на форме ничего не меняется никакими функциями, форма только опрашивается на состояние едитов, а кнопки меняют значения глобальный переменных в dll, которые уже юзает функция из приложения. в дельфи очень простой код получается, хотя когда я начинал писать на дельфи, на дельфийском форуме мне тоже твердили что я дурак и прочее. сейчас лишь хочу разобраться с си-билдером
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
31.03.2013, 01:20 [ТС] | 16 |
а, понял про что речь, скачал исходник. скомпилился, работает
спасибки Добавлено через 23 минуты но из приложения дельфи с той же кнопкой эта функция хоть и вызывается, но не передает или не правильно передает параметры в dll. и никакой stdcall не помогает. это странно все же. или может тип integer разный какойнибудь
0
|
0 / 0 / 2
Регистрация: 29.03.2013
Сообщений: 54
|
|
01.04.2013, 14:38 [ТС] | 17 |
Как передать массив в DLL и из DLL ?
Добавлено через 11 минут Хотя уже не надо. не работает dll на билдере с приложением, не видит или хз буду дальше дельфи мучить
0
|
01.04.2013, 14:57 | 18 |
0
|
01.04.2013, 14:57 | |
01.04.2013, 14:57 | |
Помогаю со студенческими работами здесь
18
Форма с кнопками Табличная форма с кнопками таблица 15 запросов и 1 форма с кнопками Двигающаяся форма с четырьмя кнопками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |