Avatar billede trer Nybegynder
23. februar 2004 - 00:09 Der er 3 kommentarer og
1 løsning

COM objekter i Delphi

Jeg er ved at lave et automation object i Delphi 6. Objektet skal bruges i VB Script, og jeg vil gerne give nogle af dets properties de samme muligheder som man finder i f.eks. et ADODB.Recordset.

I et Recordset kan man kalde propertien FIELD uden at angive dens navn - i stedet angiver man feltnavnet direkte som en parameter til selve objektet. Altså

rs("bla bla") i stedet for rs.field("bla bla")

samtidig har field propertien "under-felter" som kan kaldes, f.eks. rs.field("bla bla").value og rs.field("bla bla").fieldtype etc.

Hvordan laver jeg tilsvarende egenskaber i min automation object ?

Jeg har allerede forsøgt at lade mit objekt returnere en record. Det fungerer fint fra Delphi siden, men ovre i VB Script ender jeg med en ikke-supporteret brugerdefineret datatype :-(
Avatar billede hrc Mester
25. februar 2004 - 01:11 #1
Tænker du på default operatoren? Hvis det er så simpelt, så er løsningen følgende:

TMyobj = class
private
  fList : TList;
  function GetItem(aIndex : integer) : pointer;
public
  ... (constructor og destructor)
  property Items[aIndex : integer] : pointer read GetItem; default;
end;

... i koden kan du gøre to ting:

begin
  MyObj := TMyObj.Create;
  ...
 
  p1 := MyObj[10]; // vil returnere det 11 element i listen
  p2 := MyObj.Items[10]; // det vil denne her også.
Avatar billede hrc Mester
25. februar 2004 - 01:14 #2
Du kunne også have skrevet

  Items[aField : string] : pointer read GetItems; default;

resulterende i følgende:

  p1 := MyObj['HejHej'];

eller

  p2 := MyObj.Items['HejHej'];

Bemærk, at default kun dur på lister (andet ville heller ikke være fornuftigt).
Avatar billede trer Nybegynder
25. februar 2004 - 09:45 #3
En af tingene jeg er ude efter er en default operatior - bare ikke i Delphi, men når jeg kalder mit COM objekt fra fx VB.

Jeg har fx prøvet at sætte flag som "UI default" i typelib uden held..
Avatar billede trer Nybegynder
09. marts 2004 - 14:23 #4
Ser ikke ud til at der kommer svar her - jeg trækker spørgsmålet tilbage.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester