Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2018, 15:40   #11
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Кажется нашел проблему,
я в одном из модулей dll подключаю "Vcl.DBGrids;" - и когда я его подключаю возникает ошибка
KBO вне форума Ответить с цитированием
Старый 31.12.2018, 00:02   #12
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Спасибо, что выложили проект. Я его собрал и сделал всё, как вы писали, но у меня вообще никаких ошибок не появилось, всё работает... Запускал под отладкой как приложение, так и саму dll (если использовать скомпилированную dll из архива, то ошибки есть). Возможно у вас какие-то файлы в Delphi изменены?

Цитата:
Сообщение от KBO Посмотреть сообщение
Цитата:
Сообщение от Terran
В процедуре OPEN_MAKE_DOC при вызове shellexecute у вас передаётся не проинициализированный handle (лучше такое имя для переменной не использовать);
Насчет этого, в help по "shellexecute" (- что это хендл родительского окна), как проинициализировать handle, если в dll даже окна нет? Или сюда нужно передавать тогда дескриптор окна вызывающего приложения?
Всё зависит от поставленной задачи. Если есть необходимость принимать сообщения от запущенного приложения, то его нужно указывать. Если нет (операция не связана с окном), то можно указать 0.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 31.12.2018, 00:21   #13
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

А я нашел, отчасти вы были правы,
и впоследствии, все получилось вот так:

создание объекта с "CoInitialize(Nil)";

Код:
function CreateWord: boolean;
//create word application
begin
  CoInitialize(Nil);
  CreateWord := true;
  try
    Words_Templs := CreateOleObject('Word.Application');
  except
    begin
      showmessage('Пакет Microsoft Office не найден');
      CreateWord := false;
    end;
  end;
End;
работа с ним (у меня не было разрушения объекта "Unassigned", не знаю как у вас работает - значит везет)
и разрушение с "Unassigned" и "CoUninitialize;"

Код:
function SaveDocAs(ANamePath, ANameFile: string; AOpenDoc: integer):boolean; export;
//save created doc
{
LOpenDoc
  0 - not open created doc
  1 - open created doc
}
var
  LPath: string;
begin
  SaveDocAs := true;
  try
    begin
      Words_Templs.ActiveDocument.SaveAs(ANamePath+'result_doc.rtf');
      CloseDoc;
      Close_Document(0);
      if AOpenDoc = 1 then
        OPEN_MAKE_DOC(ANamePath, 'result_doc.rtf', '', 0, LPath);
      Words_Templs := Unassigned;
      CoUninitialize;
    end;
  except
    SaveDocAs := false;
  end;
end;
далее посмотрим, этот кусочек только часть dll, сейчас его вставлю и посмотрю...

Еще раз спасибо

Последний раз редактировалось KBO; 31.12.2018 в 00:36.
KBO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с переносом кода с С++ на С# (Машина Тьюринга) Konark C# (си шарп) 3 19.02.2015 17:26
Проблемы с переносом кода с Delphi 7 на Delphi XE2 MORPEH Общие вопросы Delphi 1 05.08.2013 14:09
При выполнение кода выводится Debugger exception notification sasha198407 БД в Delphi 0 31.03.2012 11:50
ошыбка unhandled exception of type 'system.argumentNullexception' occurred in mscorlib.dll Pein95 C# (си шарп) 3 10.08.2011 11:04
ошыбка Project vk_id.exe raised exception class eoserror with message System error Pein95 Общие вопросы Delphi 6 17.06.2011 20:38