Avatar billede hr__hallandsen Nybegynder
05. august 2009 - 23:46 Der er 4 kommentarer og
1 løsning

Henvise en funktion til en anden funktion

Jeg har følgende kode i et konsolprogram:

procedure AddBrowserEvents(const I: Integer);
var
  BrowserEvent: DWebBrowserEvents2;
  ConnectionPoint: IConnectionPoint;
  ConnectionPointContainer: IConnectionPointContainer;
  Cookie: Integer;
begin
  WebBrowsers[I].QueryInterface(StringToGUID('{B196B284-BAB4-101A-B69C-00AA00341D07}'), ConnectionPointContainer);
  ConnectionPointContainer.FindConnectionPoint(DIID_DWebBrowserEvents2, ConnectionPoint);
  ConnectionPoint.QueryInterface(DIID_DWebBrowserEvents2, BrowserEvent);
  ConnectionPoint.Advise(BrowserEvent, Cookie);
  BrowserEvent.Invoke := Invoke;
  InsertAdvertisement(I);
end;

samt en Invoke-funktion:

function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; Flags: Word;
  var Params; VarResult, ExcepInfo, ArgErr: Pointer): Integer;
begin

  .............

end;

Problemet er, at linjen

BrowserEvent.Invoke := Invoke;

fejler med en "Not enough actual parameters".

Håber nogen ved, hvordan man kringler denne.

/Hallandsen
Avatar billede hr__hallandsen Nybegynder
05. august 2009 - 23:47 #1
WebBrowsers er et array bestående af IWebBrowser2's
Avatar billede mbsnet Nybegynder
06. august 2009 - 01:32 #2
Når man vil henvise til procedure eller funktion som reference, benyttes: function of object;

På den måde laves en "type" ud af proceduren. (også kaldet events)

eks: function(aArgument1:string):boolean of object;

//mbs
Avatar billede mbsnet Nybegynder
06. august 2009 - 01:45 #3
I øvrigt:

BrowserEvent: DWebBrowserEvents2;
...skal have samme argumenter som din "invoke" funktion,
referencen burde laves som:
BrowserEvent := Invoke;
og ikke
BrowserEvent.Invoke := Invoke;
Avatar billede hr__hallandsen Nybegynder
15. august 2009 - 18:56 #4
Ja, det ser ud til at virke.

Læg et svar.
Avatar billede mbsnet Nybegynder
15. august 2009 - 20:15 #5
ok.
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