Problem bei Übersetzung von Visual Basic nach PB

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Problem bei Übersetzung von Visual Basic nach PB

Beitrag von nicolaus »

Hi,

hoffe ihr könnt mir helfen die folgende Zeile aus VisalBasic nach PB zu übersetzten.

Code: Alles auswählen

  Set wclAPI = New wclAPIX 
Danke euch schon mal

Grüße Nico
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Kiffi »

geht nicht. Dazu müssten wir wissen, aus welchem
Objekt wclAPIX entstammt. Erst dann kann man mit
beispielsweise COMate darauf zugreifen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von nicolaus »

Genauere Infos und Download der WCL findet man unter http://www.btframework.com/download_com.htm
Dies ist eine Lib mit der man über alle gängigen BlueTooth Stacks mit Bluetooth Devices arbeiten kann ohne für jeden Stack ein anderes SDK zu benutzen.

Für diese lib möchte ich gern nen Wrapper für PB schreiben.
Jeder der helfen möchte / kann ist gern eingeladen.

Die WCL gibt es in 4 verschiedenen editionen, COM, MFC, .NET und Delphi.

Hoffe das gilft das Problem zu lösen denn ich komme gerade nicht weiter.

Danke
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Kiffi »

ok, hier der Übersetzung Deiner Zeile (benötigt COMate von srod):

Code: Alles auswählen

IncludePath #PB_Compiler_Home + "srod/comateplus" ; Pfad anpassen!
XIncludeFile "comateplus.pbi"

Define wclAPI.COMateObject

wclAPI = COMate_CreateObject("wcl.wclAPIX")

If wclAPI
  ; Hier mit der Verarbeitung fortfahren...
  ; [...]
  wclAPI\Release()  ; Objekt am Ende freigeben
Else
  Debug "COMate_CreateObject('wcl.wclAPIX') schlug fehlt. Ist die DLL registriert?"
EndIf
a²+b²=mc²
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von nicolaus »

Ich danke dir schon mal Kiffi.
Nun noch eine Frage wegen COMate und der DLL.
Wenn ich jetzt deinen Code mit COMate verwende, kann ich dann die restlichen Funktionen der DLL wieder normal mit CallFunction oder CallFunctionFast benutzen oder muß ich nun alles per COMate machen?

Danke!
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Kiffi »

nicolaus hat geschrieben:Wenn ich jetzt deinen Code mit COMate verwende, kann ich dann die restlichen Funktionen der DLL wieder normal mit CallFunction oder CallFunctionFast benutzen oder muß ich nun alles per COMate machen?
Auf die Funktionalitäten Deiner DLL kannst Du nur mit COMate
(oder einer vergleichbaren Funktionalität) zugreifen.

Mit CallFunction(Fast) kann man nur auf Standard-DLLs zugreifen;
nicht auf ActiveX-DLLs.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von nicolaus »

ersteinmal erneut danke für die schnelle und hilfreiche Antwort.
Bin nun auch schon ein wenig weiter, stehe jedoch nun vor dem nächsten Problem und habe keinen plan wie ich das in COMate umsetzten soll.
Es geht um folgenden code aus VB:

Code: Alles auswählen

Private Sub btEnum_Click()
  Dim Radios As wclBluetoothRadiosX
  Dim Item As ListItem
  
  Set Radios = New wclBluetoothRadiosX
  If Not wclAPI.ShowError(wclBluetoothDiscovery.EnumRadios(Radios)) Then
    lvRadios.ListItems.Clear
    For I = 0 To Radios.Count - 1
      Set Item = lvRadios.ListItems.Add
      Select Case Radios.Items(I).API
        Case baBlueSoleil: Item.Text = "BlueSoleil"
        Case baMicrosoft: Item.Text = "Microsoft"
        Case baToshiba: Item.Text = "Toshiba"
        Case baWidComm: Item.Text = "WidComm"
      Case Else
        Item.Text = "Unknown"
      End Select
    Next I
  End If
End Sub
Mein Problem ist ich nicht weis wie ich folgendes in COMate machen muß:

Code: Alles auswählen

  Set Radios = New wclBluetoothRadiosX
  If Not wclAPI.ShowError(wclBluetoothDiscovery.EnumRadios(Radios))
Wie kann ich das Object Radios als Parameter an wclBluetoothDiscovery.EnumRadios um danach zum beispiel Radios.Count aufrufen zu können?

Ich hoffe du kannst mir ein weiteres mal helfen.
Bin halt was COMate angeht noch nciht so ganz fit :oops:

Grüße,
Nico
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Kiffi »

dürfte so funktionieren:

Code: Alles auswählen

IncludePath #PB_Compiler_Home + "srod/comateplus" ; Pfad anpassen!
XIncludeFile "comateplus.pbi"

Define Radios.COMateObject
Define Radio.COMateObject
Define RadioEnumObject.COMateEnumObject

#baBlueSoleil = 0
#baMicrosoft = 1
#baToshiba = 2
#baWidComm = 3

Radios = COMate_CreateObject("wcl.wclBluetoothRadiosX")

If Radios
  RadioEnumObject = Radios\CreateEnumeration("Items")
  If RadioEnumObject
    Radio = RadioEnumObject\GetNextObject()
    While Radio
      Select Radio\GetIntegerProperty("API")
        Case #baBlueSoleil
          Debug "BlueSoleil"
        Case #baMicrosoft
          Debug "Microsoft"
        Case #baToshiba
          Debug "Toshiba"
        Case #baWidComm
          Debug "WidComm"
        Default
          Debug "Unknown"
      EndSelect
      Radio\Release()
      Radio = RadioEnumObject\GetNextObject()
    Wend
    RadioEnumObject\Release()
  Else
    Debug "!Radios"
  EndIf
  Radios\Release()
Else
  Debug "COMate_CreateObject('wcl.wclBluetoothRadiosX') schlug fehl"
EndIf
Kann's nicht testen, weil ich kein Bluetooth habe.

Grüße ... Kiffi
a²+b²=mc²
Rigoletto
Beiträge: 1
Registriert: 30.03.2006 15:40
Wohnort: near Vienna

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Rigoletto »

Guten Morgen!
ich lese mit Begeisterung, was comate+kiffi so alles kann!

könnte man das (gekaufte) preview.ocx bzw. preview5.dll aus 'www.ppreview.net' ebenfalls mit
comate verwenden?

(Print Preview is an ActiveX which enables you to add print preview capabilities to your Visual Basic applications. It not only adds Preview functiunalities, but also can save to RTF, PDF, JPG, Gif, XML... )

ich wäre dann einen Riesenschritt weiter, VB endlich von meinem Rechner zu eliminieren!

Vielen Dank
LG Rigo
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Problem bei Übersetzung von Visual Basic nach PB

Beitrag von Kiffi »

Rigoletto hat geschrieben:könnte man das (gekaufte) preview.ocx bzw. preview5.dll aus 'www.ppreview.net' ebenfalls mit
comate verwenden?
sollte machbar sein. Nen Sample kann ich allerdings erst frühestens nächste Woche schreiben.

Grüße ... Kiffi

Edit: @Rigoletto -> PN
Zuletzt geändert von Kiffi am 16.07.2011 17:57, insgesamt 1-mal geändert.
a²+b²=mc²
Antworten