Aktuelle Zeit: 18.06.2019 21:17

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: COMatePlus Variant Buffer Problem [ERLEDIGT]
BeitragVerfasst: 02.04.2019 14:53 
Offline
Benutzeravatar

Registriert: 10.10.2014 13:14
Wohnort: Wolfenbüttel
Hallo Zusammen,

ich versuche mich gerade an COMatePlus. Einiges habe ich zum laufen bekommen, jedoch habe ich ein Verständnisproblem.
Einen lauffähigen Code zu posten ist schwierig, hoffe jedoch ihr könnt mir auch so weiterhelfen.

Folgendes sei gegeben:
Zitat:
OpenStream(Buffer: VARIANT)
Reads a file from a buffer (vs. from a file or URL). This is useful if you intend to manage the binary data yourself. The VARIANT must be a “byte array” filled with the binary data of the file. Returns TRUE if the file was read from the buffer correctly. FALSE if the buffer is invalid.

Wenn ich es richtig verstanden habe, sollte es so aussehen:
Code:
Define.COMateObject com
com = COMate_CreateObject("COM_BlaBlubb_Init")
Define *Buffer = ?TestFile

com\GetIntegerProperty("OpenStream(" + Str(*Buffer) + " AS VARIANT BYREF)") ; geht nicht
com\GetIntegerProperty("OpenStream(" + Str(*Buffer) + " BYREF)")                  ; geht nicht
com\GetIntegerProperty("OpenStream(" + Str(*Buffer) + ")")                           ; geht nicht

DataSection
   TestFile:
   IncludeBinary "TestFile"
        ;Data.b $00      ; Nur zum testen
EndDataSection

Wenn ich "TestFile" über ein andere Methode lade bekomme ich -1 (True) zurück ... mit OpenStream() immer 0 (False). Daran ändert auch die Null in der DataSection nichts.
Bin für jeden Rat dankbar.

Edit: "TestFile" ist eine UTF8-XML

_________________
weil einfach einfach einfach ist ... mach' ich es anders


Zuletzt geändert von Imhotheb am 02.04.2019 20:03, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COMatePlus Variant Buffer Problem
BeitragVerfasst: 02.04.2019 20:03 
Offline
Benutzeravatar

Registriert: 10.10.2014 13:14
Wohnort: Wolfenbüttel
Hab die Lösung jetzt doch noch selbst gefunden ... und nebenbei festgestellt das ich den Typ Variant nicht mag :bluescreen:

Folgender fiktiver Code würde funktionieren:
Code:
Procedure Buffer2Variant(*Buffer, BufferSize)
  Protected *SafeArray.SAFEARRAY, SafeArrayBound.SAFEARRAYBOUND
  Protected *Ret_Variant.VARIANT = AllocateStructure(VARIANT)
 
  If *Ret_Variant And *Buffer And BufferSize > 0
    VariantClear_(*Ret_Variant)
    SafeArrayBound\lLbound = 0
    SafeArrayBound\cElements = BufferSize
    *SafeArray = SafeArrayCreate_(#VT_UI1, 1, SafeArrayBound)
    If *SafeArray
      If SafeArrayLock_(*SafeArray) = #S_OK
        CopyMemory(*Buffer, *SafeArray\pvData, BufferSize)
        *Ret_Variant\vt = #VT_ARRAY|#VT_UI1
        *Ret_Variant\parray = *SafeArray
        SafeArrayUnlock_(*SafeArray)
      EndIf
    EndIf
  EndIf
 
  ProcedureReturn *Ret_Variant
EndProcedure

Define com.COMateObject = COMate_CreateObject("COM_BlaBlubb_Init")
Define *Buffer = Buffer2Variant(?TestFile_Start, ?TestFile_End - ?TestFile_Start)


com\GetIntegerProperty("OpenStream(" + Str(*Buffer) + " AS VARIANT BYREF)")


DataSection
   TestFile_Start:
   IncludeBinary "TestFile"
   TestFile_End:
EndDataSection

_________________
weil einfach einfach einfach ist ... mach' ich es anders


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COMatePlus Variant Buffer Problem [ERLEDIGT]
BeitragVerfasst: 02.04.2019 22:43 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Im Packet vom COMate müsste der VariantHelper_Include noch sein...

Aktuelle Version ist hier...

https://www.purebasic.fr/english/viewto ... 14&t=40150

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COMatePlus Variant Buffer Problem [ERLEDIGT]
BeitragVerfasst: 03.04.2019 09:23 
Offline
Benutzeravatar

Registriert: 10.10.2014 13:14
Wohnort: Wolfenbüttel
Danke für den Tip ... dadurch bin ich darauf gekommen das dieser "variant" irgendwie anders ist ... allerdings hab ich dann den Überblick verloren und beschlossen diesen Typ nicht zu mögen.
Aber nach etwas schlaf und einem anständigen Kaffee, komm' ich langsam dahinter ... und weiß nun auch die Include zu schätzen :praise: :praise: :praise:

_________________
weil einfach einfach einfach ist ... mach' ich es anders


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye