AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OleVariantToString?

Ein Thema von Thanatos81 · begonnen am 11. Apr 2007 · letzter Beitrag vom 13. Apr 2007
Antwort Antwort
Thanatos81
(Gast)

n/a Beiträge
 
#1

OleVariantToString?

  Alt 11. Apr 2007, 09:11
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?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: OleVariantToString?

  Alt 11. Apr 2007, 10:56
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"
Andreas
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#3

Re: OleVariantToString?

  Alt 11. Apr 2007, 12:12
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: OleVariantToString?

  Alt 11. Apr 2007, 12:25
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;
Andreas
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: OleVariantToString?

  Alt 13. Apr 2007, 07:50
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ß,
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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