Перейти к содержанию
Fire Monkey от А до Я

Поиск сообщества

Показаны результаты для тегов 'DLL'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

Найдено: 9 результатов

  1. Ребята здарова! выручайте) весь уже измучился =( не получается =( Тема такая, работаю с хуком, использую WH_KEYBOARD_LL тк нужно работать и с 32 битной и 64 битной разрядностью. и вообще мне нравится с ним работать всё очень просто и удобно но появилось одно НО =( WH_KEYBOARD_LL работает до добавления сообщения в очередь в контексте потока. и это действительно так =( дело в том что я через хук ловлю введённую информацию и потом обрабатываю это через idHTTP (ищу в интернете ответ)... если сигнал хороший то всё круть... а когда связь не очень.. и происходят небольшие задержки.. как я понимаю в WH_KEYBOARD_LL складируются результаты которые он не может передать и затем хук выбивается... тоесть чтобы всё вновь заработало нужно сделать так KeyboardHandle:=SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHook, HInstance, 0); и хук по прежнему работает до тех пор пока не вылетит вновь. Чтобы решить эту проблему как я понял нужно использовать PeekMessage или GetMessage и удалять излишки... Но в сети очень мало информации о том как ими пользоваться я не понимаю куда и как их вставлять. Я делал вот так... писал в ДЛЛке function KeyboardHook(code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var msg:TMsg; begin if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; if code>=0 then begin if (wParam=WM_KEYDOWN) then begin SendMessage(FindWindow('TForm1', 'Form1'), KeyboardEvent, 0,PBDLLHOOKSTRUCT(lParam).vkCode); end; end; Result:=CallNextHookEx(KeyboardHandle, code, wParam, lParam) end; // if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; // типа если есть излишки выходи так же вставлял там это: while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; но не помогает =( Может это где-то в ЕХЕшнике нужно вставлять? я не понимаю как с ним работать =( Может кто на форуме знает? помогите пожалуйста ответом
  2. Здравствуйте. Возникла следующая проблема. Создал dll библиотеку с формой FireMonkey. Из приложения на VCL подключаю библиотеку, вызываю функцию создания формы procedure CreateHD; begin FormHD := TFormHD.Create(nil); FormHD.Caption := 'HD'; FormHD.Show; end; форма создаётся, далее вызываю функцию закрытия и уничтожения формы FM procedure CloseHD; begin FormHD.Close; FreeAndNil(FormHD); end; Но при попытке выгрузить dll приложение зависает. Возможно уничтожение формы FM как-то отличается от VCL и нужно что-то вызвать ещё кроме FreeAndNil или проблема в другом? (dll и приложение написаны в Delphi XE6) Приложение.zip
  3. Интересует вопрос и ноу-хау. Если есть код на Питоне, который нужно выполнять в рамках Андроид и айОС приложений - как это лучше всего делать и как это будет выглядеть? Читал, что есть Python4Delphi и это речь про DLL. Хотелось бы понять, как это будет выглядеть на iOS и Android - это дополнительный файл надо с собой такскать как в Windows или он будет внутри APK/APP ?
  4. Здравствуйте. Есть проблема, с которой не могу разобраться уже на протяжении какого-то времени. Суть проблемы. Создаю dll библиотеку и сую туда форму со своим функционалом (Delphi, RAD Studio XE5). Динамически подгружаю в приложение и по сути всё работает, но... Когда же я хочу выгрузить приложение я получаю, либо ряд ошибок AV, либо зависание всего приложение при выполнении FreeLibrary, либо неизвестную мне ошибку "DXGI ERROR: CreateDXGIFactory cannot be called from DllMain. [ MISCELLANEOUS ERROR #76: ]". Так же не могу понять, как передать Handle приложения в библиотеку (в VSL это было довольно просто). К сожалению никакой информации по данным вопросам я не смог найти, кроме не больших вырезок со своими недочётами. Прошу вас помочь в решении данных проблем. Большое спасибо. С уважением, Ethernet.
  5. Win32 приложение на Firemonkey Есть DLL написанная на C++. В ней есть экспортная функция. int getStatusFlags (int *fatalStatus, int *currentFlagsStatus, int *documentStatus); импортирую функцию следующим способом function getStatusFlags (var fatalStatus, currentFlagsStatus, documentStatus:Integer):integer; stdcall; external DllName; В режиме компиляции Debug все идеально, но если откомпилировать в Release то приложение наглухо виснет при вызове функции. Подозреваю что я неправильно импортирую функцию и происходит неправильная работа с памятью. Пробовал менять тип передаваемых переменных на PInteger с передачей указателей, но все равно падает. Кто сталкивался. Помогите!
  6. Есть какой-то базовый класс. Необходимо расширить его функционал и вынести во внешний модуль(плагин). Модуль необходимо подгружать динамически из папки. Каким образом могу это реализовать?
  7. Pulsarius

    C++ Builder и BORLNDMM

    Привет всем! Кто-нибудь уже заметил, что приложения для десктоп, скомпилированные в последней версии C++ Builder (RAD Studio 10 Seattle), стали зависеть от BORLNDMM.dll? В предыдущих версиях студии такого не было. Я знаю, что это Борландовская библиотека для работы с памятью, и от неё зависели программы, написанные на ранних версиях C++ Builder, ещё будучи при Борланде. Чем же интересно обосновано возвращение такой зависимости и можно ли как-нибудь от неё избавиться? P.S. Я пишу DLL. Пробовал избавиться от зависимости, отключив в настройках проекта "Use 'classic' Borland compiler", т.е. чтобы использовать Clang. Пришлось немного отредактировать код. Зависимость исчезла, но, при выгрузке моей DLL в главной программе функцией FreeLibrary, вылетает ошибка типа access violation. Такая ошибка возникает только тогда, когда DLL скомпилирована в режиме Release, в режиме Debug всё работает нормально, и поэтому отследить в чём дело очень сложно. Когда возникает ошибка, при отладке главной программы, отладчик перебрасывает в окно дизассемблера, где вместо ассемблерных команд знаки вопроса. Т.е. такое ощущение, что при вызове функции FreeLibrary, в каком-то месте происходит "прыжок" на адрес в памяти, где нет никаких инструкций. Если скомпилировать DLL с использованием классического компилятора Borland, то и в режиме Debug, и в режиме Release всё работает нормально.
  8. Помогите пожалуйста разобраться с кодом С#, в коде загружается dll и используются функции из неё, хочу перевести на дельфи. загрузка dll [DllImport("opus.dll", CallingConvention = CallingConvention.Cdecl)] internal static extern IntPtr opus_decoder_create(int Fs, int channels, out IntPtr error); [DllImport("opus.dll", CallingConvention = CallingConvention.Cdecl)] internal static extern void opus_decoder_destroy(IntPtr decoder); [DllImport("opus.dll", CallingConvention = CallingConvention.Cdecl)] internal static extern int opus_decode(IntPtr st, byte[] data, int len, byte[] pcm, int frame_size, int decode_fec); public static OpusDecoder Create(int outputSampleRate, int outputChannels) { if (outputSampleRate != 8000 && outputSampleRate != 12000 && outputSampleRate != 16000 && outputSampleRate != 24000 && outputSampleRate != 48000) throw new ArgumentOutOfRangeException("inputSamplingRate"); if (outputChannels != 1 && outputChannels != 2) throw new ArgumentOutOfRangeException("inputChannels"); IntPtr error; IntPtr decoder = API.opus_decoder_create(outputSampleRate, outputChannels, out error); if ((Errors)error != Errors.OK) { throw new Exception("Exception occured while creating decoder"); } return new OpusDecoder(decoder, outputSampleRate, outputChannels); } public unsafe byte[] Decode(byte[] inputOpusData, int dataLength, out int decodedLength) { if (disposed) throw new ObjectDisposedException("OpusDecoder"); byte[] decoded = new byte[MaxDataBytes]; int frameCount = FrameCount(MaxDataBytes); int length = 0; if (inputOpusData != null) length = API.opus_decode(_decoder, inputOpusData, dataLength, decoded, frameCount, 0); else length = API.opus_decode(_decoder, null, 0, decoded, frameCount, (ForwardErrorCorrection) ? 1 : 0); decodedLength = length * 2; if (length < 0) throw new Exception("Decoding failed - " + ((Errors)length).ToString()); return decoded; } private void button3_Click(object sender, EventArgs e) { OpusDecoder _dec= OpusDecoder.Create(48000, 1); byte[] segDec = new byte[4000]; byte[] seg = new byte[4000]; seg[0] = 8; seg[1] = 11; seg[2] = 230; seg[3] = 61; seg[4] = 36; seg[5] = 236; seg[6] = 195; seg[7] = 220; seg[8] = 192; int len = 9; segDec = _dec.Decode(seg, len, out len); } код на C# работает, но когда перевожу его на дельфи он начинает ругаться "stackoverflow" загрузка dll function opus_decoder_create(Fs:LongInt; channels:Integer; var Error:Integer):OpusDecoder; cdecl; external 'opus.dll'; function opus_decode(st:OpusDecoder; data:array of Byte; len:Integer;var pcm: array of Byte; frame_size: Integer; decode_fec:Integer):Integer; cdecl; external 'opus.dll'; procedure opus_decoder_destroy(st:OpusEncoder); cdecl; external 'opus.dll'; использование функций procedure TMain.Decode_2Click(Sender: TObject); var OPDecoder: OpusDecoder; Error: Integer; PreEnc:array of Byte; PreDec:array of Byte; begin Error := 0 ; OPDecoder := opus_decoder_create(48000, 1, Error); SetLength(PreEnc, 4000); SetLength(PreDec, 4000); PreEnc[0] := 8; PreEnc[1] := 11; PreEnc[2] := 230; PreEnc[3] := 61; PreEnc[4] := 36; PreEnc[5] := 236; PreEnc[6] := 195; PreEnc[7] := 220; PreEnc[8] := 192; Error := opus_decode(OPDecoder, PreEnc, 9, PreDec, 2000, 0); end; в процедуру dll ки значения подаются одинаковые в обеих случаях, никак не могу разобраться в чём дело.
  9. Всем доброго времени суток. Возможно ли описать и создать визуальные компоненты в dll, а отобразить их на форме (или, например на TLayout этой формы) приложения, использующего эту dll? Среда: Delphi XE7.
×
×
  • Создать...