• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

связывание Dll

  • Автор темы berserker
  • Дата начала
B

berserker

Разрабатываю программу на DELPHI:суть в следующем есть exeшник и штук 10 dll,из еxe файла получаю необходимые данные пересылаю их в одну из dll(она отвечает за все вычисления),она пересылает во все остальные,они что-то делают и отправляют результат обратно.Прогрмма уже написана(с применением ООП) и работает,но пока только вместо dll - раs.

вопрос1: как проще можно организовать предачу данных между dll и взаимодействие с внутренними классами этих dll,если подразумевается что в дальнейшем могут добавляться dll написанные на других языках?

вопрос2: на данном этапе я выбрал в качестве такого инструмента TStream.КАК ИСПОЛЬЗОВАТЬ его МЕТОД Writebuffer?DElphi выдает мне постоянно EAbort на следующее выражение:
obj_stream:=tstream.Create;
obj_stream.writebuffer(a,sizeof(a));
 
E

etc

Это как, простите?
предачу данных между dll
По всем правилам, а как может быть иначе ....
что в дальнейшем могут добавляться dll написанные на других языках
А вот тут надо подробнее.
КАК ИСПОЛЬЗОВАТЬ его МЕТОД Writebuffer?
Что говорит справка?


Кстати, а при чем тут СОМ ?
 
Z

zubr

Передавай указатели на структуры - указатель он и в африке указатель. Естественно размер структур и их структура должны быть индентичны.
 
B

berserker

Отвечаю:"вместо dll pas" означает,что у меня уже написан код и я его хочу вставить в dll
Справка не говорит ничего нового,Delphi почему -то глючит именно на команде WriteBuffer,говорит что Tstream не содержит этого метода,но компилирет и выдает потом EAbort. ReadBuffer - все ОК

А СOM здесь притом,что часть библиотек( сделанных в Matlab) связана с exe через COM и я хочу сделать тоже самое с другими
 
Z

zubr

TStream - это абстрактный класс, поэтому напрямую его использовать нельзя. Используй потомков этого класса, к примеру TMemoryStream.
 
S

SNike

Если хочешь сделать связку через COM - почитай про интерфейсы и т.д.
Если просто DLL - то нужно помнить что у самой программы (Exe) и DLL разные зоны видимости данных, и потому передать в DLL, например, объект, просто так не получится. Так же как и передавать тип String без использования менеждера памяти.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!