Главная страница
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.038 c
9-1088766735
Sanek_metaller
2004-07-02 15:12
2004.11.07
Дурак


14-1097821651
П7
2004-10-15 10:27
2004.11.07
Души умерших файлов


3-1097235085
basken
2004-10-08 15:31
2004.11.07
Конвертация FR 2.57 в FR 3.02, Подскажите кто знает


4-1096526534
Muhsin
2004-09-30 10:42
2004.11.07
Запуск других приложений


4-1096555506
Алексей
2004-09-30 18:45
2004.11.07
Перехват сообщений Windows