Главная страница
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
14-1098095756
Igorek
2004-10-18 14:35
2004.11.07
Визуальное проектирование таблиц и отношений в БД


14-1098381867
uji
2004-10-21 22:04
2004.11.07
имортист


3-1097440728
Morrison
2004-10-11 00:38
2004.11.07
SQL: Как переименовать имя поля?


14-1098087893
Vlad Oshin
2004-10-18 12:24
2004.11.07
Outlook 2003 and Outlook 2002 do not access to attachmen


1-1098270188
oleg_
2004-10-20 15:03
2004.11.07
подскажите, как задать название документа word