Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизВопрос про кривые OCX Найти похожие ветки
← →
Elen © (2007-02-28 12:11) [0](Колеги попросили)
Проблема такая. Имеется программа на VisualFoxPro, в котрой надо отобразить два набора данных в графическом виде.
Для этого сделали на Делфях ActiveX компонент на базе TChart Было это года 3 назад.
Компонент вставили в программу Фокса, предварительно зарегавши его через Regsvr32.
Теперь понадобилось перенести эту прогу на другую машину. Фокспро поставили, и тут проблема с ActiveX - При регистрации RegSvr32 выдает "DllRegisterServer в uDBChart2proj3 завершился успешно", но затем MessageBox с ошибкой "Программа обратилась по адресу ХХХХХХХХ память не может быть read", а затем мессиджбокс "Runtime error 216 at 007E389A". Соответственно прога фоксовская не запускается. Пробовали регистрировать на другой машине - выдает "Ошибка при вызове LoadLibrary("uDBChart3Proj3.ocx") - Не найден указанный модуль"
Вопрос что это может быть? Криво написанный OCX? или что-то с оськой (WinXP)?
← →
tesseract © (2007-02-28 12:21) [1]Криво написан компонент вроде. Версии винды не указаны, права под которыми регистрируется ocx тоже.
← →
alex_*** © (2007-02-28 12:23) [2]Надо исходники смотреть. На предмет что вы там пользовали постороннего. Посмотрите зависимости самого .ocx
← →
Elen © (2007-02-28 12:25) [3]
> tesseract © (28.02.07 12:21) [1]
Да я вот тоже так думаю, но ведь на моей машине заработал... Да была ошибка 216, но заработал.
Права при регистрации конечно админские, ось WinXP.
← →
alex_*** © (2007-02-28 12:31) [4]
> Да я вот тоже так думаю, но ведь на моей машине заработал.
> .. Да была ошибка 216, но заработал.
:) не пофик где он работал, если на рабочей машине не работает? Чего-то не доставили.
← →
Elen © (2007-02-28 12:59) [5]
> alex_*** ©
Так значит одну ошибку нашли - в uses присутствовал Qdialogs (откуда он там взялся?). Теперь значит вопрос про вторую ошибку "Ошибка при вызове LoadLibrary("uDBChart3Proj3.ocx") - Не найден указанный модуль"
Что это может быть? кроме Tchart на форме больше ничего нет.uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, uDBChart3Proj3_TLB, StdVcl, TeEngine, Series,
ExtCtrls, TeeProcs, Chart;
type
TuDBChart = class(TActiveForm, IActiveFormX3)
Chart: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Series4: TLineSeries;
procedure ChartMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
.........................
// Это процедуры через которые идет взаимодействие с Фоксом.
procedure SetTitle(const Title: WideString); safecall;
procedure ClearSeriesAll; safecall;
procedure AddToSeries(x, y: Double; Series: SYSINT); safecall;
procedure ClearSeries(Series: SYSINT); safecall;
public
........................
/////////////////////////////////////////////
procedure TuDBChart.SetTitle(const Title: WideString);
begin
Chart.Title.Text.Append(title);
end;
procedure TuDBChart.ClearSeriesAll;
var t:integer;
begin
for t:=0 to chart.SeriesCount-1 do
begin
chart.Series[t].Clear;
//Chart.series[t].Clear;
End;
end;
procedure TuDBChart.ClearSeries(Series: SYSINT);
begin
chart.Series[Series].Clear;
end;
procedure TuDBChart.AddToSeries(x, y: Double; Series: SYSINT);
begin
//if x=0 then chart.Series[series].Addy(y) else
//if y=0 then chart.Series[series].Addx(x) else
chart.Series[series].Addxy(x,y)
end;
procedure TuDBChart.ChartMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var XF,XT,YF,YT:Double;
tmpFX,tmpFY,tmpTX,tmpTY,tmpDY:Variant;
st:String;
ChartRect:TRect;
begin
If (chart.Series[0].Count>0) and
(chart.Series[1].Count>0) Then
Begin
chart.Series[0].getcursorvalues(XF,YF);
chart.Series[1].getcursorvalues(XT,YT);
ChartRect:=Chart.ChartRect;
If (Y>=ChartRect.Top) and (Y<=Chart.ChartRect.Bottom) and
(X>ChartRect.Left) and (X<Chart.ChartRect.Right) then
Begin
tmpFX:=XF;
NPP:=tmpFX*10;
if npp<0 then npp:=Chart.Series[0].Count+NPP;
tmpFY:=Chart.Series[0].YValue[NPP];
tmpTX:=XT;
tmpTY:=Chart.Series[1].YValue[NPP];
tmpDY:=tmpFY-tmpTY;
st:="Ñå÷åíèå ïðîôèëÿ Xôàêò="+floattostrf(tmpFX,ffFixed,8,2)+" "+
" Yôàêò="+floattostrf(tmpFY,ffFixed,8,2)+
" Yòåîð="+floattostrf(tmpTY,ffFixed,8,2)+
" Ïðèïóñê="+floattostrf(tmpDY,ffFixed,8,2);
End
Else
st:="Ñå÷åíèå ïðîôèëÿ ";
chart.Title.Text.Clear;
Chart.Title.Text.Append(st);
End;
End;
{}
////////////////////////////////////////////////////
initialization
TActiveFormFactory.Create(
ComServer,
TActiveFormControl,
TuDBChart,
CLASS_ActiveFormX3,
1,
"",
OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
tmApartment);
Может здесь чего не так?
> Посмотрите зависимости самого .ocx
Всмысле? Как?
← →
Ketmar © (2007-02-28 13:17) [6]а не собирали, часом, с пакетами?
← →
alex_*** © (2007-02-28 13:22) [7]
> > Посмотрите зависимости самого .ocx
>
> Всмысле? Как?
хотя бы через Depends.exe
и runtime пакеты посмотрите, действительно
← →
Elen © (2007-02-28 13:22) [8]
> Ketmar © (28.02.07 13:17) [6]
Всмысле с bpl ? Не, вроде нет.
← →
Elen © (2007-02-28 13:25) [9]
> alex_*** © (28.02.07 13:22) [7]
Требует : Kernel32, user32, advapi32, Oleaut32, gdi32, ole32, comctl32.
Не вроде стандарт. Build with runtime package отключено.
← →
Elen © (2007-02-28 13:27) [10]Такое впечатление что в оське че-то не то. Может это единичный случай, т.к. после того как убрали QDIalogs на двух других компах зарегалось.
← →
Ketmar © (2007-02-28 13:40) [11]антивирь-мониторы? прочая подобная ерунда?
← →
Elen © (2007-02-28 13:51) [12]
> антивирь-мониторы? прочая подобная ерунда?
Да нет там ничего такого. Такая же конфигурация как и у меня. (Хотя может и есть какие различия). Антивирь Semantec - у меня пропускает.
← →
Ketmar © (2007-02-28 14:34) [13]ошибка в LoadLibrary -- это или нет ocx, или нет чего-то, чего ей надо. поставить filemon и посмотреть, чего ей надо. %-)
← →
tesseract © (2007-02-28 14:36) [14]
> QDIalogs на двух других компах зарегалось.
Ну так всё ясно - не хватает Qt-библиотеки :-)
← →
Elen © (2007-02-28 14:51) [15]
> Ну так всё ясно - не хватает Qt-библиотеки :-)
Ну от этого мы уже несколько постов назад благополучно избавились :)
> Ketmar © (28.02.07 14:34) [13]
Хорошая идея! На моей тачке филимон показывает что regsvr32 при выполнении юзал только наш ocx (и его файловые потоки). Ща попробую на той тачке где не ставится...
← →
Elen © (2007-02-28 15:00) [16]Не, филемон кроме этого OCX ничего не ловит. :-/
← →
Ketmar © (2007-02-28 15:45) [17]тогда конфликтует с кем-то?
или солнечная радиация.
← →
isasa © (2007-02-28 17:59) [18]Если еще актуально. А под uDBChart3Proj3_TLB *.ocx где?
Это ж используемый внутри ActiveX, его и нет.
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, uDBChart3Proj3_TLB, StdVcl, TeEngine, Series,
ExtCtrls, TeeProcs, Chart;
← →
isasa © (2007-02-28 18:07) [19]Торможу.
В смысле uDBChart3Proj3.ocx, может и есть, но ему тоже надо делать regsvr32.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.049 c