Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Operator will wieder nicht! (https://www.delphipraxis.net/92839-operator-will-wieder-nicht.html)

DeddyH 27. Mai 2007 09:25

Re: Operator will wieder nicht!
 
Hallo,
mit
Delphi-Quellcode:
GetCapabilities(dwCaps);
bekommt er ja eine Longint befüllt. Also bleibt sich das im Endeffekt gleich, außer dass er bei einem Set die Konstantendefinition wie aus meinem Posting wählen müsste, um das Set zu befüllen und anschließend wieder abzufragen, oder habe ich da was falsch verstanden?

EWeiss 27. Mai 2007 09:27

Re: Operator will wieder nicht!
 
Zitat:

Zitat von DeddyH
Hallo,
mit
Delphi-Quellcode:
GetCapabilities(dwCaps);
bekommt er ja eine Longint befüllt. Also bleibt sich das im Endeffekt gleich, außer dass er bei einem Set die Konstantendefinition wie aus meinem Posting wählen müsste, um das Set zu befüllen und anschließend wieder abzufragen, oder habe ich da was falsch verstanden?

Hier mal die Function um sich ein Bild machen zu können. ;)

Delphi-Quellcode:
    // called to retrieive the capabilities of the effect (fullscreen? property page?, etc.)
procedure GetCapabilities(var pdwCapabilities : DWORD); safecall;
Delphi-Quellcode:
function GetCapabilities(var caps: LongInt): HRESULT;
Var
  DwVal: DWORD;

begin
  if Assigned(_IWmpEffects) then
    begin
      DwVal := 0;
      _IWmpEffects.GetCapabilities(DwVal);
      caps := DwVal;
      result := DwVal;
  end else
  result := -1;

end;
gruss Emil

DeddyH 27. Mai 2007 09:30

Re: Operator will wieder nicht!
 
Hab ich ja gesagt ;)

Hawkeye219 27. Mai 2007 09:45

Re: Operator will wieder nicht!
 
Hallo,

beim harten TypeCast mit Boolean ist zu beachten, daß dieser nur funktioniert, wenn der umzuwandelnde Wert (wie in diesem Beispiel) im Bytebereich liegt. Bei höheren Werten sollte man LongBool verwenden.

Gruß Hawkeye

EWeiss 27. Mai 2007 09:55

Re: Operator will wieder nicht!
 
Zitat:

Zitat von Hawkeye219
Hallo,

beim harten TypeCast mit Boolean ist zu beachten, daß dieser nur funktioniert, wenn der umzuwandelnde Wert (wie in diesem Beispiel) im Bytebereich liegt. Bei höheren Werten sollte man LongBool verwenden.

Gruß Hawkeye

Du meinst das wäre empfehlendswert ?
Oder kann ich es so belassen.

gruss Emil

SirThornberry 27. Mai 2007 10:04

Re: Operator will wieder nicht!
 
du kannst auch einfach anstelle des Casts auf > 0 prüfen (wie bereits oben gepostet (nicht von mir))

Hawkeye219 27. Mai 2007 10:05

Re: Operator will wieder nicht!
 
Hallo Emil,

Zitat:

Du meinst das wäre empfehlendswert ?
Oder kann ich es so belassen.
Es schadet nicht, wenn du auf LongBool umstellst. Sollten in Zukunft höhere Werte auftreten, ersparst du dir damit unter Umständen eine aufwendige Fehlersuche:

Delphi-Quellcode:
const
  EFFECT_ONLYFORDEMO = $00010000;
var
  value : Cardinal;
begin
  value := $ffffffff;

  if Boolean(value and EFFECT_ONLYFORDEMO) then
    ShowMessage ('sollte nicht angezeigt werden');

  if LongBool(value and EFFECT_ONLYFORDEMO) then
    ShowMessage ('sollte angezeigt werden');
end;
Die erste IF-Abfrage sieht doch gut aus, hättest du da einen Fehler vermutet?

Gruß Hawkeye

EWeiss 27. Mai 2007 10:15

Re: Operator will wieder nicht!
 
Zitat:

Zitat von Hawkeye219
Hallo Emil,

Zitat:

Du meinst das wäre empfehlendswert ?
Oder kann ich es so belassen.
Es schadet nicht, wenn du auf LongBool umstellst. Sollten in Zukunft höhere Werte auftreten, ersparst du dir damit unter Umständen eine aufwendige Fehlersuche:

Delphi-Quellcode:
const
  EFFECT_ONLYFORDEMO = $00010000;
var
  value : Cardinal;
begin
  value := $ffffffff;

  if Boolean(value and EFFECT_ONLYFORDEMO) then
    ShowMessage ('sollte nicht angezeigt werden');

  if LongBool(value and EFFECT_ONLYFORDEMO) then
    ShowMessage ('sollte angezeigt werden');
end;
Die erste IF-Abfrage sieht doch gut aus, hättest du da einen Fehler vermutet?

Gruß Hawkeye

Nein sieht und ist auf den ersten Blick ja auch das gleiche.
Habe trotzdem ein problem bekomme mit miner Funktion immer einen 0 wert zurückgeliefert müßte aber eigentlich FullScreen möglich sein.
Na muss mal schaun.

EDIT:
Funktioniert doch richtig ;)

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.
Seite 2 von 2     12   

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