Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

DLL и QuickReport   Найти похожие ветки 

 
vis79 ©   (2002-10-03 09:43) [0]

Я написал приложение которое использует QuickReport, потом хотел запихать форму вызывающую Preview в DLL форма отображается нормально но на стадии Preview приложение зависает!
Кто нить может высказать свое мнение по данному поводу??


 
Johnmen ©   (2002-10-03 09:49) [1]

Мнение-вопрос : а на хрена здесь DLL ?
(обоснование...?)


 
vis79 ©   (2002-10-03 10:03) [2]

>Johnmen

Там процедура используется которая выводит отчет, выводить форму которая формирует отчет вызовом одной процедуры...


 
Kaban ©   (2002-10-03 10:06) [3]

Вы так и не ответили на главный вопрос: ЗАЧЕМ?


 
vis79 ©   (2002-10-03 10:35) [4]

>Johnmen,Kaban
Вообще-то я поросил высказать по этому поводу свое мнение, а не искать причину ЗАЧЕМ и т.д. Вот ХОЧУ я так вот и вся причина, ну захотел я сделать именно так, именно в DLL...


 
VAleksey ©   (2002-10-03 11:06) [5]

Да кто его знает почему ...
Хоть бы куски кода привел из программы, где у тебя длл вызывается, способ описания внешней функции, как она у тебя в длл оформлена. Тогда и посмотрим.


 
vis79 ©   (2002-10-03 11:48) [6]

>VAleksey
Короче косяк я выкупил, висла эта ДЛЛ по той причине, что неверно передавались строки в процедуры типа BeforePrint, там
объявление такое :
procedure TForm2.QRDBText4Print(sender: TObject; var Value: String);
здесь Value типа String а когда это работает в DLL это значение передается неверное, т.е. не то что надо... (случайный кусок памяти)
а я пытался работать с этим Value, поэтому приложение откуда я вызывал ДЛЛ зависало, но вот вопрос можно что либо сделать чтобы VALUE передавалось в эту процедуру ВЕРНО!!!


 
Kuusiniemi ©   (2002-10-03 13:13) [7]

String в dll?? А предупреждение в начале проекта dll от Борланда читали?


 
vis79 ©   (2002-10-03 14:03) [8]

ЭТО НЕ Я использую string, а qsoft в своих компонентах QReport!
QRDBText4Print(sender: TObject; var Value: String); - это описание метода, который повешен на событие, срабатывающее перед прорисовкой preview для компонента QRDBText4. А когда я это все запихал в ДЛЛ это значение типа СТРИНГ передается неверно, а мне нужно как-то отловить это значение values либо сделать так чтобы оно корректно передавалось.. КАК ЭТО СДЕЛАТЬ????


 
passm ©   (2002-10-03 14:33) [9]

vis79 © (03.10.02 14:03)> Каков формат вызываемой функции из твоей DLL?


 
Kuusiniemi ©   (2002-10-03 15:40) [10]

Епрст!
Dll твоя? Твоя.
Функцию со стрингом в качестве параметра ты вызываешь? Ты.
Смотрел предупреждение Борланда о работе со строками-параметрами в dll? Похоже что нет.


 
vis79 ©   (2002-10-04 05:55) [11]

>Kuusiniemi

Да смотрел я, смотрел предупреждение борланда, ну не знаю почему парни с qsofta используют для метода BeforePrint string в качестве параметра, а не PChar например.. Мне нужно знать текст который берется из НД и вставляется в QRDBText связанной с конкретным полем в БД, поэтому я вызываю событие QRDBText4Print, а у него уже параметры QRDBText4Print(sender: TObject; var Value: String); ну немогу я исправить эту процедуру например на QRDBText4Print(sender: TObject; var Value: PChar); - компилятор ругается на несовместимость параметров... А мне нужно узнать этот текст... КАК?

>passm
Procedure ViewProtInSys; export; stdcall;
Begin
If not Assigned (ReportForm) Then
ReportForm := TReportForm.Create(Application);
ReportForm.ShowModal;
End;
ReportForm - это форма диалог, на ней кнопка по нажатию которой происходит:
If not Assigned (Form2) Then
Form2 := TForm2.Create(Application);
QuickRep1.PreviewModal;
Form2.Close;

А уже на стадии работы Preview вызывается метод:
QRDBText4Print(sender: TObject; var Value: String); - где Value - это текст соответствующий выводу в данный момент в QRDBText4, и он когда все это работает в DLL содержит неверное значение!!!!!


 
Kuusiniemi ©   (2002-10-04 09:53) [12]

Ну раз читал, то Sharemem вставлял ПЕРВЫМ в uses И проекта exe И проекта dll? Ты о главном из этого предупреждения так и не сказал ни разу. :)


 
VAleksey ©   (2002-10-04 09:56) [13]

Замучили парня :))
Uses ShareMem,

первым пунктом в проекте и в длл, но не забудь потом что для работы программы тебе понадобиться borlandmm.dll.


 
vis79 ©   (2002-10-04 10:06) [14]

:)))
если бы мне помог ShareMem... Такого вопроса в форуме не было бы.
P.s. Сразу говорю ставил его первым и в приложение вызывающее ДЛЛ и в в самой ДЛЛ, вот так:
library Project1;
uses
ShareMem,
SysUtils,
Classes,
Forms,
UnitInterSystem in "UnitInterSystem.pas" {InterSystem},
Global in "Global.pas", и т.д.
в проге:
program Project1;
uses
ShareMem,
Forms,
Unit1 in "Unit1.pas" {Form1};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

(Может не туда ставлю ???)


 
VAleksey ©   (2002-10-04 12:23) [15]

дык все вроде туда :))
А длл как выглядит ?


 
Ura   (2002-10-04 13:00) [16]

1. Скомпилируй с пакетами dll .
2. Скомпилируй с пакетами приложение
У них должет быть 1 Aplication и 1 TSCREEN


 
vis79 ©   (2002-10-04 13:04) [17]

>Ura
- Что значит скомпилировать с пакетами ???


 
VAleksey ©   (2002-10-04 15:03) [18]

Формы в длл есть ? Если да то в длл нужно передавать объект Application для их (форм) правильной работы.


 
VAleksey ©   (2002-10-04 15:04) [19]

А потом в длл присвоить Application.Handle переданный тобой Handle.
ЗЫ
То есть не сам Application передать, а его Handle.



Страницы: 1 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.021 c
14-78593
Ajax
2002-09-27 11:14
2002.10.24
Глюки при использовании фреймов.


14-78658
Cker
2002-10-05 00:13
2002.10.24
Unicode


1-78507
Paul 'Spawn' Rysevets
2002-10-13 16:50
2002.10.24
Как Запустить Стороннее Приложение


1-78448
greenrul
2002-10-11 19:50
2002.10.24
Указатели : if (Units


4-78712
Zion
2002-09-10 19:09
2002.10.24
Вопрос о консоли... о ней... родимой =)