Fehlende rmchart.dll abfangen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Fehlende rmchart.dll abfangen

Beitrag 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?
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Fehlende rmchart.dll abfangen

Beitrag 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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fehlende rmchart.dll abfangen

Beitrag 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
a²+b²=mc²
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Fehlende rmchart.dll abfangen

Beitrag von marcelx »

Ich habe mit FileSize auch probiert - gleiche Effekt
Zuletzt geändert von marcelx am 24.02.2017 12:41, insgesamt 1-mal geändert.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Fehlende rmchart.dll abfangen

Beitrag 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")
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Fehlende rmchart.dll abfangen

Beitrag 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....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Fehlende rmchart.dll abfangen

Beitrag 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?
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Fehlende rmchart.dll abfangen

Beitrag von mk-soft »

Die DLL ist eine 32bit Version.
Also das Programm auch als X86 kompilieren...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Fehlende rmchart.dll abfangen

Beitrag von marcelx »

Danke mk-soft
Also das Programm auch als X86 kompilieren...
mache ich die ganze Zeit.
Win-10, PB 5.31 (Windows - x86)
Antworten