Seite 1 von 1

Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 10:51
von marcelx
Hallo,

ich benutze gern rmchart und wollte das fehlenden von rmchart.dll in meine Programm abfangen.
Ich teste mit RMChart_MiniDemo.pb.
In RMChart.pbi wird eine Variable RMC_DLL definiert

Code: Alles auswählen

Global RMC_DLL.l
und das fehlende der dll abgefangen.

Code: Alles auswählen

  RMC_DLL.l = OpenLibrary(#PB_Any,#RMCDLL)
  If RMC_DLL
    ;{ GetFunction Add...
Ich wollte RMC_DLL verwenden um das Fehlende abzufangen.
Leider lässt sich RMChart_MiniDemo.pb nicht kompilieren.

EDIT: lässt sich als exe kompilieren und beim starten gibt MS die Meldung: "... funktioniert nicht mehr"

Hat jemand ein Idee?

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 11:02
von NicTheQuick
Wo hast du den Code her? Da sollte definitiv kein .l hinter RMC_DLL stehen, sondern .i.
Und wenn das an der Stelle schon falsch ist, dann ist es das bestimmt auch an anderen.

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 11:05
von Kiffi
marcelx hat geschrieben:ich benutze gern rmchart und wollte das fehlenden von rmchart.dll in meine Programm abfangen.
mit FileSize() kannst Du prüfen, ob die Datei vorhanden ist.

Grüße ... Peter

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 11:18
von marcelx
Ich habe mit FileSize auch probiert - gleiche Effekt

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 11:25
von marcelx
In RMChart.pbi:

Code: Alles auswählen

  If FileSize(#RMCDLL) = -1
    ProcedureReturn
  EndIf
  RMC_DLL.l = OpenLibrary(#PB_Any,#RMCDLL)
in RMChart_MiniDemo.pb:

Code: Alles auswählen

Procedure Test()
  If FileSize(#RMCDLL) = -1
    ProcedureReturn
  EndIf
;   If RMC_CreateChart(WindowID(#ID_WINDOW), #ID_CHART, 0, 0, 800, 600) = #RMC_NO_ERROR
;     Debug "1"
;     RMC_AddRegion(#ID_CHART, 5, 5, -5, -5,"Test")
;     RMC_AddGrid(#ID_CHART, #ID_REGION)
;     RMC_AddXAxis(#ID_CHART, #ID_REGION, #RMC_XAXISBOTTOM)
;     RMC_AddYAxis(#ID_CHART, #ID_REGION, #RMC_YAXISLEFT)
;     RMC_AddXYSeries(#ID_CHART, #ID_REGION, ?LabX, 10, ?LabY, 10, #Black, #RMC_XY_LINE, #RMC_LSTYLE_SPLINE,0,0,0,0)
;     RMC_SetCaptionBGColor(#ID_CHART,#ID_REGION,0)
;     RMC_Draw(#ID_CHART)
;   EndIf
EndProcedure
So ist OK und wenn ich die Kommentar raus nehme, dann ist nicht OK

EDIT:
liegt daran, dass in RMChart.pbi die RMC_ -Funktion festgelegt werden

Code: Alles auswählen

F_RMC_CreateChart.P_RMC_CreateChart  = GetFunction(RMC_DLL,"RMC_CREATECHART")

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 13:27
von Bisonte
marcelx hat geschrieben:In RMChart.pbi:

Code: Alles auswählen

  If FileSize(#RMCDLL) = -1
    ProcedureReturn
  EndIf
  RMC_DLL.l = OpenLibrary(#PB_Any,#RMCDLL)
Nic sagte es schon : Nicht LONG sondern INTEGER ! RMC_DLL.I <--- !

Ich schätze diese Demo ist ein bisschen älter und eigentlich auch für x86 gemacht gewesen....

Re: Fehlende rmchart.dll abfangen

Verfasst: 23.02.2017 14:27
von marcelx
Nic sagte es schon : Nicht LONG sondern INTEGER ! RMC_DLL.I <--- !
Gut, habe ich geändert, hat aber kein Einfluss zu den Fehler.
Ich denke, der Compiler hat keine Adresse-Zuweisung für die Funktion (z.B. RMC_CreateChart), weil GetFunction nicht aufgerufen wurde.

EDIT: gibt es da eine Lösung?

Re: Fehlende rmchart.dll abfangen

Verfasst: 24.02.2017 17:50
von mk-soft
Die DLL ist eine 32bit Version.
Also das Programm auch als X86 kompilieren...

Re: Fehlende rmchart.dll abfangen

Verfasst: 24.02.2017 19:25
von marcelx
Danke mk-soft
Also das Programm auch als X86 kompilieren...
mache ich die ganze Zeit.