![]() |
Datenmegen ausrechnen?!?
Hi...
Ich versuche mich grad daran einen VB Code nach Delphi zu übersetzen. Das klappt auch soweit ganz passabel bis ich an einem Punkt nicht weiterkomme. Der Ausdruck:
Delphi-Quellcode:
Wird als Parameter an eine Sub übergeben.
Optional ByVal AppFlg As APPFLAGS = HASABOUT or HASPREFS
Aus APPFLAGS hab ich ein set gemacht.
Delphi-Quellcode:
jetzt will die SetProp Funktion aber einen Cardinal als Parameter haben.type TApFlgs = (HASPREFS = 1, HASABOUT = 2); TAppFlags = set of TApFlgs; procedure SetFlags(hWnd: HWND; Flags: TAppFlags = [HASPREFS, HASABOUT]);
Delphi-Quellcode:
Hab ich mich mit dem verwenden einer Datenmenge nun selbst ausgesperrt oder kann man das umrechnen? Eigentlich muss ich die Einträge von Flags doch nur OR Verknüpfen, oder? Irgendwie steh ich auf dem Schlauch grad.
SetProp(hWnd, PChar('application'), Flags);
Über einen kurzen Gedankenstoß wär ich sehr Dankbar Toni |
Re: Datenmegen ausrechnen?!?
Ord(Flags) oder einfach Cardinal(Flags) oder, falls es immer 32 Bit sein soll: LongInt(Flags)
Aber natürlich kann man es auch per Hand umrechnen:
Delphi-Quellcode:
var I: TApFlgs;
Flags: TAppFlags; IntFlags: Cardinal; begin IntFlags:=0; for I:=Low(TAppFlags) to high(TAppFlags) do if I in Flags then IntFlags:=IntFlags or (1 shl ord(I)); end; |
Re: Datenmegen ausrechnen?!?
Da lande ich bei einem Problem, dass ich heut schon einige male hatte. Der mittlerweile einigermaßen angesäuerte Compiler meldet mir, dass die typen inkompatibel sind. Coursor steht bei "high(TAppFlags)"
|
Re: Datenmegen ausrechnen?!?
Juhu,
Zitat:
Gruß Reli |
Re: Datenmegen ausrechnen?!?
Ob dus glaubst oder nicht... Das ist alles. Mehr gibts nicht. SetProp findest du unter F1 in der OH und SetFlags kapselt die mit dem standardwert 'application' nachdem geprüft wurde ob hWnd gültig ist.
Delphi-Quellcode:
procedure SetFlags(hWnd: HWND; Flags: TAppFlags = [HASPREFS, HASABOUT]);
begin if IsWindow(hWnd) then SetProp(hWnd, PChar('application'), Flags); end. Toni |
Re: Datenmegen ausrechnen?!?
Hast Du es mal versucht wie in #2 angedeutet? Also mit einem Cast nach LongInt?
|
Re: Datenmegen ausrechnen?!?
Jup, hab ich... Selbes Phänomen...
Ich hab den Code für die "Handarbeit" mal etwas mit gespielt und zum laufen gebracht. De Ausdruck "[HASPREFS, HASABOUT]" ergibt nun aber 6. Kann das sein? Hätte ich, um meine erwartete 3 zu bekommen, im Type bei 0 anfangen müssen? Wenns damit läuft soll es mir egal sein warum der Cast nicht funzt... Obwohls mich eigentlich schon interessiert. :roll: Toni |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz