Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: 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 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1098380673
Maverick
2004-10-21 21:44
2004.11.07
Всем доброго вечера! меня вот интересет один вопрос...


14-1098149318
able
2004-10-19 05:28
2004.11.07
avi2scr


1-1098793672
dim_
2004-10-26 16:27
2004.11.07
Paint


1-1098511945
Андрей Кравцов
2004-10-23 10:12
2004.11.07
Способы хранения списков строк во время работы программы.


14-1098101693
Slider007
2004-10-18 16:14
2004.11.07
Очень интересный глюк 2