IMPORT,IMPORTC,ENDIMPORT [Beta3]

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

IMPORT,IMPORTC,ENDIMPORT [Beta3]

Beitrag von Falko »

Habe folgendes ausprobiert, was aber nur mittels Debugger funktioniert!

Code: Alles auswählen

Import "cbw32.lib"
  FlashLED(a) As "_cbFlashLED@4"
  GetBoardName(a,b) As "_cbGetBoardName@8"
EndImport



If GetBoardName(0,@BoardName.c) = 0
  MessageRequester("CBW32_Flashtest","die LED sollte jetzt blinken")
  FlashLED(0)
  Delay(1500)
  MessageRequester("CBW32_Ausgabe",PeekS(@BoardName)) 
Else
  MessageRequester("Fehler", "Zum Test sollte das Modul auf Null stehen.")
EndIf
Ausgabe-Message hat geschrieben: Erste Messagefenster:
---------------------------
CBW32_Flashtest
---------------------------
die LED sollte jetzt blinken
---------------------------
OK
---------------------------

Und das zweite Messagefenster:
---------------------------
CBW32_Ausgabe
---------------------------
PMD-1024HLS
---------------------------
OK
---------------------------
Klappt aber nur mit eingeschalteten Debugger. Sobald ich aber den ausschalte, kommt wohl das Messagefenster mit dem FlashLED wobei
auch am Modul die LED blinkt, aber danach DR Watson der einen Fehlerbericht absenden möchte.

Nun ist die Frage, warum funktioniert das nur mit dem Debugger zusammen?


MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

If GetBoardName(0,@BoardName.c) = 0 
Was der Debugger macht, weiß ich nicht, aber dieser Code ist mit
Sicherheit verkehrt!

Edit1:
Versuch es mal so:

Code: Alles auswählen

Import "cbw32.lib"
  FlashLED(a) As "_cbFlashLED@4"
  GetBoardName(a,b) As "_cbGetBoardName@8"
EndImport

BoardName.s = Space(255)

If GetBoardName(0,@BoardName) = 0
  MessageRequester("CBW32_Flashtest","die LED sollte jetzt blinken")
  FlashLED(0)
  Delay(1500)
  MessageRequester("CBW32_Ausgabe", BoardName)
Else
  MessageRequester("Fehler", "Zum Test sollte das Modul auf Null stehen.")
EndIf
Ob 255 Zeichen als Buffer reichen, kann ich natürlich nicht sagen, evtl. noch mit ImportC probieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Thomas ich danke dir :allright:
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Falko hat geschrieben:Thomas ich danke dir :allright:
Wie, geht jetzt ?
Schööööööönnn

war aber wirklich nicht schwer :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hättest mir ja gestern den Tip auch geben können :mrgreen:
Nun habe ich dort alles gelöscht und hier hingepackt.

Aber trotzdem Daaaaanke für den Tip der Reservierung. Und nun
kann ich weiter :allright:
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Falko hat geschrieben:Daaaaanke für den Tip der Reservierung. Und nun
kann ich weiter :allright:
Für die tatsächlich benötigte Buffergrösse ist bestimmt eine Constante in der Headerdatei definiert. Aber *.c ist nur ein oder zwei byte gross, das langt nie :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Wenn du das aus dem C-Header meinst.
C-Header hat geschrieben:/* Maximum length of board name */
#define BOARDNAMELEN 25


int EXTCCONV cbGetBoardName (int BoardNum, char *BoardName);

int WINAPI cbGetBoardName (int BoardNum, char FAR *BoardName);

short _pascal cbGetBoardName (short BoardNum, char *BoardName);
Also müßte man den Header wohl mit einbinden. Ich dachte es würde automatisch über die Import-Libgeschichte gehen. :lol:

Und warum akzeptiert der Debugger das, wenn es trotzdem vorher falsch war?

Egal, hauptsache es funktioniert so, und man kann es im PB-Code zurechtflicken wie es muß.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich meinte dies: "@BoardName.c", damit haste die Adresse zu einem 1 Byite
(ANSI) bzw. 2 Byte(Unicode) bereich gegeben, da passen also die
erforderlichen 25 Zeichen nicht hinein.

Die Header-Datein sind eigentlich immer erforderlich, ob DLL oder Lib ist
egal. Die definierten Konstanten und Strukturen braucht man doch.

Im PureBasic SDK findeste den Header-Converter, der dir einen Teil des
konvertieren abnimmt, aber die erstellte Datei ist zu prüfen.
C-Grundkenntnisse sind wie immer gefragt, so wie in der Win-API auch.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

das mit dem .c war mir schon klar. Ich hatte es ja auch nur mit
eingeschalteten Debugger getestet. Das in einem Char nicht 25
Buchstaben reinpassen können, stimme ich dir ja auch zu.
Mich hat es eben nur verwundert, warum das wohl im Debugger
automatisch geht. Aber jetzt ist es mir schon klar, was du mir
geschrieben hast.

Übrigens das mit dem Headerconverter werde ich dann gleich mal ausprobieren. Ich hatte mir sonst die constanten etc. immer von Hand herauskopiert und manuell angepasst.


Danke für den Tip :allright:
Bild
Win11 Pro 64-Bit, PB_6.11b1
Gesperrt