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
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.