AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Operator not applicable

Ein Thema von EWeiss · begonnen am 21. Apr 2007 · letzter Beitrag vom 21. Apr 2007
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

Re: Operator not applicable

  Alt 21. Apr 2007, 09:25
Zitat von Apollonius:
Die Funktion scheint ja einen Zeiger zu erwarten (long* count). Probiere einfach mal, @intval zu übergeben.
Kein erfolg!
Bei intval mit oder ohne Zeiger
[Pascal Error] WMPUnit.pas(221): E2018 Record, object or class type required

If Assigned(IWmpEffects) Then
[Pascal Error] WMPUnit.pas(218): E2008 Incompatible types

If IWmpEffects <> nil Then
[Pascal Error] WMPUnit.pas(218): E2015 Operator not applicable to this operand type

Arrrrggghhhh

Gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

Re: Operator not applicable

  Alt 21. Apr 2007, 09:28
Zitat von mkinzler:
Du mußt es auf eine Instanz und nicht auf das Interface selber anwenden.
Jetzt verstehe ich ehrlich gesagt nur Bahnhof .. sorry
In C# OK da gibts diverse Beispiele an die man sich halten kann.

Mit der Instanz verstehe ich jetzt nicht was du da meinst.

Gruss Emil
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Operator not applicable

  Alt 21. Apr 2007, 09:31
Mir fällt da gerade was auf... in der Interfacedeklaration deines ersten Posts ist GetPresetCount eine Prozedur. Ich vermute stark, dass da die Typinkompatibilität liegt, denn du versuchst ja das nicht vorhandene Ergebnis result zuzuweisen.

Und: hast du eine Instanz(~Variable) deines interfaces? Du rufst die Routine nämlich am interface auf, du musst sie an der Variablen aufrufen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Operator not applicable

  Alt 21. Apr 2007, 09:31
IWmpEffects ist ein Interface und keine Instanz, die es implemnetiert.

Genausowenig wie du z.B. if Integer = 0 schreibst sondern
Delphi-Quellcode:
i: integer;
...
   if i = 0
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

Re: Operator not applicable

  Alt 21. Apr 2007, 09:36
Zitat von mkinzler:
IWmpEffects ist ein Interface und keine Instanz, die es implemnetiert.

Genausowenig wie du z.B. if Integer = 0 schreibst sondern
Delphi-Quellcode:
i: integer;
...
   if i = 0
Ahh ja danke jetzt verstehe ich was du meinst.

Werds mal versuchen

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

Re: Operator not applicable

  Alt 21. Apr 2007, 09:46
So gehts jetzt bis auf einen Fehler

Delphi-Quellcode:
function GetPresetCount(var count: LongInt): HRESULT;
Var
  IntVal: LongInt;
  WmpEffects: IWmpEffects;

begin
  If Assigned(WmpEffects) Then
    begin
       IntVal := 0;
       result := WmpEffects.GetPresetCount(IntVal);
       count := IntVal;

    end else
    result := -1;

end;
result := WmpEffects.GetPresetCount(IntVal);
[Pascal Error] WMPUnit.pas(222): E2010 Incompatible types: 'HRESULT' and 'procedure, untyped pointer or untyped parameter'

Gruss Emil
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Operator not applicable

  Alt 21. Apr 2007, 09:49
Delphi-Quellcode:
WmpEffects.GetPresetCount(IntVal);
result := IntVal;
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

Re: Operator not applicable

  Alt 21. Apr 2007, 09:58
Zitat von mkinzler:
Delphi-Quellcode:
WmpEffects.GetPresetCount(IntVal);
result := IntVal;
Delphi-Quellcode:
function GetPresetCount(var count: LongInt): HRESULT;
Var
  IntVal: LongInt;

begin
  If Assigned(PWmpEffects) Then
    begin
       IntVal := 0;
       PWmpEffects.GetPresetCount(IntVal);
       result := IntVal;
       count := IntVal;

    end else
    result := -1;

end;
So gehts nun! Vielen Dank an alle die geholfen haben
Aber eine frage noch im Anhang warum geht es nicht über die direkte Abfrage
result := PWmpEffects.GetPresetCount(IntVal); nur auf deine weise ?

gruss Emil
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Operator not applicable

  Alt 21. Apr 2007, 10:06
Ich habe schon mal einen Post dazu geschrieben (#13). In deiner Interfacedeklaration ist getPresetCount eine Prozedur, und die gibt nunmal nichts zurück, das du zuweisen könntest.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Operator not applicable

  Alt 21. Apr 2007, 10:06
Zitat:
Aber eine frage noch im Anhang warum geht es nicht über die direkte Abfrage
Weil die Methode keinen Rückgabewert hat, sondern einen var-Parameter(Zeiger)

Delphi-Quellcode:
IWMPEffects = interface(IUnknown)
   ['{D3984C13-C3CB-48e2-8BE5-5168340B4F35}']
   procedure GetPresetCount(var pnPresetCount : LongInt); safecall;
Deshalb wird versucht Result die Methode zuzuweisen, was obigen Fehler auslöst.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz