vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Re: "For...Each" individuell implementieren durch das IEnumVariant-Interface 
Autor: Symundo
Datum: 17.09.09 11:17

Die Imlementierung der Typelib ist leider falsch.

Möglicherweise ist das auch die Ursache, dass hier große Umwege (NextReDef) gegangen werden.

Die korrekte Definition ist

[
uuid(AE5B6874-EC3E-4C16-A6E9-DFB8A2F2C580)
]
library IEnumVariantVB {
importlib("stdole2.tlb");

[
uuid(00020404-0000-0000-C000-000000000046),
odl
]
interface IEnumVARIANT : IUnknown
{
typedef enum NextRet {
S_OK = 0,
S_FALSE
} NextRet;

HRESULT Next([in] long celt, [in, out] VARIANT* rgvar, [in, out] long* pceltFetched,
[out, retval] long * lngRetval);
HRESULT Skip([in] long celt);
HRESULT Reset();
HRESULT Clone([in, out] IEnumVARIANT** ppenum);
};
}

Zu beachten ist, dass pceltFetched ein Referenzparameter ist. Eine VB-Collection liefert hier die Trefferzahl zurück.

Dann fehlt die Clone-Implementierung. Sie ist erforderlich, damit bei verschachtelten For-Each-Schleifen für jede Schleife ein neues Objekt erzeugt wird.

Private Sub IEnumVARIANT_Clone(ppenum As IEnumVariantVB.IEnumVariant)
Set ppenum = New IEnumVariant
End Sub

Desweiteren fehlt die Reset-Implementierung

Private Sub IEnumVARIANT_Reset()
Idx = 0
End Sub

Hier sollte der interne Listenindex zurückgesetzt werden.

Weitere Infos für die Standardimplementierung unter

http://msdn.microsoft.com/en-us/library/ms221053.aspx

Gruß von Symundo
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Workshop 97: "For...Each" individuell implementieren durch d...5.213Dirk13.05.09 14:10
Re: "For...Each" individuell implementieren durch das IEnumV...2.198Symundo17.09.09 11:17

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel