Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.057 c