String nicht zeichenweise erstellen

27/09/2008 - 07:36 von Karsten W. | Report spam
Hallo,

ich möchte gern aus einem Variant array von Integern (Rückgabewert von
WScript.Shell.RegRead) eine Zeichenkette basteln. Folgendes gibt mir
das Gewünschte, scheint mir aber nicht besonders effizient:

Sub OutlookHauptkategorien()
' gibt für Outlook 2003 die Hauptkategorienliste als ";" getrennte
Zeichenkette zurück
' nicht getestet für Nicht-Ansi-Zeichen...
Dim objWShell As Object
Dim vCategories As Variant ' Categories are stored as REG_BINARY
data
Dim iIter As Integer
Dim iHi, iLo As Integer
Dim iOffset As Integer
Dim iLength As Integer
Dim sAns As String

Set objWShell = CreateObject("WScript.Shell")
vCategories = objWShell.RegRead("HKCU\Software\Microsoft\Office
\11.0\Outlook\Categories\MasterList")
iOffset = LBound(vCategories)
iLength = UBound(vCategories) / 2
sAns = ""

For iIter = iOffset To UBound(vCategories) / 2
iLo = vCategories(iOffset)
iHi = vCategories(iOffset + 1)
iOffset = iOffset + 2
sAns = sAns & ChrW(iLo + &H1000 * iHi)
Next
Debug.Print sAns
End Sub

Was mich besonders stört, ist die Zeile
sAns = sAns & ChrW(iLo + &H1000 * iHi)
Kann man das irgendwie schöner machen? Gibt es vielleicht einen Trick,
die Funktion StrConv zu verwenden?

Über jeden Tipp freut sich
Karsten.
 

Lesen sie die antworten

#1 Eric March
27/09/2008 - 20:58 | Warnen spam
Karsten W. notierte letztens:
Hallo,

ich möchte gern aus einem Variant array von Integern (Rückgabewert von
WScript.Shell.RegRead) eine Zeichenkette basteln. Folgendes gibt mir
das Gewünschte, scheint mir aber nicht besonders effizient:

Sub OutlookHauptkategorien()
' gibt für Outlook 2003 die Hauptkategorienliste als ";" getrennte
Zeichenkette zurück
' nicht getestet für Nicht-Ansi-Zeichen...
Dim objWShell As Object
Dim vCategories As Variant ' Categories are stored as REG_BINARY
data
Dim iIter As Integer
Dim iHi, iLo As Integer
Dim iOffset As Integer
Dim iLength As Integer
Dim sAns As String

Set objWShell = CreateObject("WScript.Shell")
vCategories = objWShell.RegRead("HKCU\Software\Microsoft\Office
\11.0\Outlook\Categories\MasterList")
iOffset = LBound(vCategories)
iLength = UBound(vCategories) / 2
sAns = ""

For iIter = iOffset To UBound(vCategories) / 2
iLo = vCategories(iOffset)
iHi = vCategories(iOffset + 1)
iOffset = iOffset + 2
sAns = sAns & ChrW(iLo + &H1000 * iHi)
Next
Debug.Print sAns
End Sub

Was mich besonders stört, ist die Zeile
sAns = sAns & ChrW(iLo + &H1000 * iHi)
Kann man das irgendwie schöner machen? Gibt es vielleicht einen Trick,
die Funktion StrConv zu verwenden?

Über jeden Tipp freut sich
Karsten.



Formulieren wir's so; ich kapiere das ganze Drumherum im Code nicht.

Du bekommt Integer-Werte zurück (scheinbar aus Outlook?!). Wie?

Wie ist das Array konstruiert; welchen Bereich umfassen diese
Integer-Werte? Sehe ich ChrW() muss ich vermuten, dass du eine Art
Unicode-Website bekommst die in "Buchstaben" verwandelt werden sollen -
um was mit dem Ergebnis anzustellen?

Eric March - eric.march(spambremse)@gmx.net

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.«
„Die Geschichte ist der beste Lehrmeister - mit den unaufmerksamsten
Schülern.“ Indira Gandhi

Ähnliche fragen