связывание Dll

Тема в разделе "Delphi - СОМ", создана пользователем berserker, 29 окт 2008.

  1. berserker

    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));
     
  2. etc

    etc Гость

    Это как, простите?
    По всем правилам, а как может быть иначе ....
    А вот тут надо подробнее.
    Что говорит справка?


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

    zubr Гость

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

    berserker Гость

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

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

    zubr Гость

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

    SNike Гость

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

Поделиться этой страницей