Главная страница
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.023 c
8-1091791010
SNV-Soft
2004-08-06 15:16
2004.11.07
Масштабирование формы


1-1098655862
saNat
2004-10-25 02:11
2004.11.07
Глюки TMemo


1-1098081997
samumka
2004-10-18 10:46
2004.11.07
Проверка создания mdichild формы?


1-1098353405
digger
2004-10-21 14:10
2004.11.07
Описание объектной модели Object Pascal


3-1097230190
Samick
2004-10-08 14:09
2004.11.07
получается чтото вроде поиска