Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OleVariantToString? (https://www.delphipraxis.net/90069-olevarianttostring.html)

Thanatos81 11. Apr 2007 09:11


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?

shmia 11. Apr 2007 10:56

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"

Thanatos81 11. Apr 2007 12:12

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:
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
Und mein Versuch in Delphi:
Delphi-Quellcode:
var
  test: IIIBHnet2;
  ole: OleVariant;
begin
  test := CreateComObject(CLASS_IIBHnet) as IIIBHnet2;
  test.LifeList('TestS7', ole);

  showMessage(ole);
end;
Hoffentlich hilft es jemanden beim Helfen :) Danke schon mal im Voraus fürs Grübeln.

shmia 11. Apr 2007 12:25

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;

Thanatos81 13. Apr 2007 07:50

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 10:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz