Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
8-78531
antistatic
2002-05-21 07:34
2002.10.24
Нужно проиграть звук при наведении на компонент


14-78606
Sergey13
2002-10-01 11:20
2002.10.24
Как думаете - попрутся наши вояки в Грузию или нет?


3-78238
Tat
2002-10-01 11:20
2002.10.24
Live result set + SQL


1-78468
Groove
2002-10-12 19:35
2002.10.24
А на Cpp?


7-78690
Геннадий
2002-08-17 22:29
2002.10.24
Работа с модемом...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский