Вниз
Скачать: CL | DM;

DLL&ModalForm - Возвращение значения от DLL   Найти похожие ветки 

← →
Максим   (2004-10-21 16:02) [0]

Мастера -  Здрасте!
 Вот такая штука - Есть Dll в которой есть форма с TRichEdit, там же имеется процедура создания формы:

function ShowForm(AHandle: THandle; var Lines: TStrings): word;
var
 MyForm: TForm1;
begin
 Application.Handle := AHandle;
 MyForm := TForm.Create(Application);
 try
   Result := MyForm.ShowModal;
   Lines := MyForm.RichEdit1.Lines;
 finally
   MyForm.Free;
 end;
end;

  И есть приложение, которое вызывает эту процедру.
procedure TForm1.Button1Click(Sender: TObject);
var
 Strs: TStrings;
begin
 Strs := TStrings.Create;

 ShowTextEditor(Handle, Strs);
 Form1.RichEdit1.Lines := L;

 Strs.Free;
end;
Вызвали первый раз -  Форма создается. При закрыти Созданной формы вызывается ошибка
" Cannot assign a TRichEditStrings to a TRichEditStrings"
Вызываем во-второй и последующие разы -  Форма создается. При закрыти Созданной формы вызывается ошибка" Access violation"

 А если возвращать не TStrings а String то все работает нормально.
 Есть предположение что при вызове метода MyForm.Free  MyForm.RichEdit1.Lines попросту не существует. Так ли это?

Помогите...

Заранее спасибо.


← →
Digitman ©   (2004-10-21 16:07) [1]

собери оба проекта с опцией использования ран-тайм-пакетов и не мучайся


← →
Максим   (2004-10-21 16:22) [2]

возвращается пустое значение с сообщенем
 Control "" has no parent Window - обратите внимане на "", даже неизвестен контрол


← →
Digitman ©   (2004-10-21 16:30) [3]


> Максим   (21.10.04 16:22) [2]


да у тебя тут вообще - полный бардак

MyForm := TForm.Create(Application);
try
  Result := MyForm.ShowModal;
  Lines := MyForm.RichEdit1.Lines; //ты сослался на ПОКА ЕЩЕ существующий объект класса TStrings
finally
  MyForm.Free; // а здесь форма и TStrings-объект, на который ты сослался как на возвр.значение, уничтожаются тобой явно !
end;

вопрос тебе на засыпку : на кой шут вызывающему коду нужна ссылка на объект TStrings, которого уже нет ? который ты убил собственными руками в вызываемом коде ?


← →
Максим   (2004-10-21 16:57) [4]

Ну сделал я по другому - создал немодальную форму
Но как врзвратить строки при закрытии???


← →
Digitman ©   (2004-10-21 17:02) [5]


> сделал я по другому - создал немодальную форму


что это меняет ? ничего !

по поводу возврата строк - внимательно читай комментарий, вставляемы Визардом при генерации ДЛЛ-проекта



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
6-1093885434
Zahar
2004-08-30 21:03
2004.11.07
Как сохранить attachement в файл ???


8-1091957143
Delphi5.01
2004-08-08 13:25
2004.11.07
... края силуэта ... плавно переходили в фон


3-1095523928
Zif
2004-09-18 20:12
2004.11.07
Проблема со скролингом в DBLookupListBox.


6-1091875870
начинающий
2004-08-07 14:51
2004.11.07
IP+Name


14-1098271287
Бар
2004-10-20 15:21
2004.11.07
Какой функцией прочесть время создания файла?




   Наверх