![]() |
OleVariantToString?
Guten Morgen zusammen!
Ich habe hier eine importierte Typbibliothek, IBHNETLib_TLB vielleicht kennt die ja jemand. Eine Prozedur erwartet als Var-Parameter eine OleVariant. Meine Frage ist jetzt, wie bekomme ich diese in einen String oder eine StringList, das ganze scheint ein MBCS zu sein. Denn in einem VB-Beispiel das ich habe, bekomme ich eine Liste in der jeder Eintag jeweils aus einer Nummer und dem Zusatz "(Passiv)" oder "(Aktiv)", in Delphi gibt mir ein ShowMessage(OleVariant) hingegen folgendes aus:
Code:
Hat sich schon mal jemand mit solchen OleVarianten rumgeschlagen?
???????????????????????????????????????????????????????????????
|
Re: OleVariantToString?
Man müsste das VB-Beispiel (zumindest die relevanten Codeabschnitte) sehen, um hier einen Rat geben zu können.
Ausserdem wäre der beschreibende Name der ActiveX DLL nützlich. Beispiel: die DLL heisst msado15.dll, der beschreibende Name ist "Microsoft ActiveX Data Objects 2.8 Library" |
Re: OleVariantToString?
Na, damit kann ich dienen ;-)
Name der DLL: IBHNet.dll beschreibender Name: IBHNet 1.0 Type Library (Version 1.0) Der relevante VB-Code:
Code:
Und mein Versuch in Delphi:
Dim netex As IIIBHnet2
Private Sub Command1_Click() Dim Liste As Variant Dim aktiv As String List1.Clear netex.LifeList Text1.Text, Liste For i = 1 To 127 If (Liste(i) = 48) Then aktiv = Str(i - 1) & " (Aktiv)" List1.AddItem (aktiv) End If If (Liste(i) = 32) Then aktiv = Str(i - 1) & " (Passiv)" List1.AddItem (aktiv) End If Next i End Sub
Delphi-Quellcode:
Hoffentlich hilft es jemanden beim Helfen :) Danke schon mal im Voraus fürs Grübeln.
var
test: IIIBHnet2; ole: OleVariant; begin test := CreateComObject(CLASS_IIBHnet) as IIIBHnet2; test.LifeList('TestS7', ole); showMessage(ole); end; |
Re: OleVariantToString?
Die OleVariant Liste ist anscheinend ein Variant-Array, das Zahlen enthält.
Delphi-Quellcode:
var
test: IIIBHnet2; liste: OleVariant; i : integer; s : string; begin test := CreateComObject(CLASS_IIBHnet) as IIIBHnet2; test.LifeList('TestS7', liste); for i := VarArrayLowBound(liste, 1) to VarArrayHighBound(liste,1) do begin s := IntToStr(i)+': '+ liste[i]+ #13#10; end; showMessage(s); end; |
Re: OleVariantToString?
Guten Morgen!
Das war der Anstoß in die richtige Richtung ;-) Ich war davon ausgegangen, dass in der Liste die IDs der angeschlossenen SPSen stehen plus dem Kennzeichen aktiv oder passiv. Aber da steht für jede mögliche Nummer eine Ziffer drin, die bedeutet, nicht vorhanden, aktiv oder passiv. Danke dir, shmia! Schönen Gruß, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz