COM requires that arrays be passed via a special data type known as a SafeArray. You can create and destroy SafeArrays by calling special COM functions to do so, and all elements within a SafeArray must be valid automation-compatible types. The Delphi compiler has built-in knowledge of COM SafeArrays and automatically calls the COM API to create, copy, and destroy SafeArrays.
In the Type Library editor, a SafeArray must specify the type of its elements. For example, the following line from the text page declares a method with a parameter that is a SafeArray with an element type of Integer:
procedure HighLightLines(Lines: SafeArray of Integer);
Note
Although you must specify the element type when declaring a SafeArray type in the Type Library editor, the declaration in the generated _TLB unit does not indicate the element type.
Hjælpefilen har jeg naturligvis haft checket og også fundet ovenstående pasus. Og den er ikke særlig brugbar i forhold til at tilføje elementer til det safearray som returneres fra en funktion a la nedenfor:
function TMyObject.MyProperty: PSafeArray; begin // ?!? end;
Jeg har fundet frem til funktionen SafeArrayPutElement() men umiddelbart har jeg ikke haft heldet med mig til at anvende den - i hvert fald kan jeg ikke se array'ets data i et test-vb script omend mit COM objekt ikke fejler ved kompilering eller anvendelse...
Så derfor søger jeg et eksempel på hvordan man gør...
Har selv løst det. Viser sig at man kan anvende VarArrayCreate() fra variants.pas.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.