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

Вниз

Вопрос про кривые 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:="&#209;&#229;&#247;&#229;&#237;&#232;&#229; &#239;&#240;&#238;&#244;&#232;&#235;&#255; X&#244;&#224;&#234;&#242;="+floattostrf(tmpFX,ffFixed,8,2)+"  "+
         " Y&#244;&#224;&#234;&#242;="+floattostrf(tmpFY,ffFixed,8,2)+
         " Y&#242;&#229;&#238;&#240;="+floattostrf(tmpTY,ffFixed,8,2)+
         "  &#207;&#240;&#232;&#239;&#243;&#241;&#234;="+floattostrf(tmpDY,ffFixed,8,2);
    End
    Else
     st:="&#209;&#229;&#247;&#229;&#237;&#232;&#229; &#239;&#240;&#238;&#244;&#232;&#235;&#255; ";
    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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.029 c
1-1169639469
msgipss
2007-01-24 14:51
2007.03.25
как изменить кодировку ответа web службы


15-1172501155
Германн
2007-02-26 17:45
2007.03.25
Бабуины, бабуины. Вот шимпанзе - это да!


15-1172522655
Kerk
2007-02-26 23:44
2007.03.25
Работа


1-1170368901
FAskerQ
2007-02-02 01:28
2007.03.25
Как узнать время создания процесса?


2-1173107320
bagos
2007-03-05 18:08
2007.03.25
использование Access