AGB  ·  Datenschutz  ·  Impressum  







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

Datenmegen ausrechnen?!?

Ein Thema von Tonic1024 · begonnen am 12. Dez 2008 · letzter Beitrag vom 12. Dez 2008
Antwort Antwort
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 14:27
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:Optional ByVal AppFlg As APPFLAGS = HASABOUT or HASPREFS Wird als Parameter an eine Sub übergeben.

Aus APPFLAGS hab ich ein set gemacht.

Delphi-Quellcode:
  
type
  TApFlgs = (HASPREFS = 1, HASABOUT = 2);
  TAppFlags = set of TApFlgs;

procedure SetFlags(hWnd: HWND; Flags: TAppFlags = [HASPREFS, HASABOUT]);
jetzt will die SetProp Funktion aber einen Cardinal als Parameter haben.

  SetProp(hWnd, PChar('application'), Flags); 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.


Über einen kurzen Gedankenstoß wär ich sehr Dankbar

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 14:42
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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 14:54
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)"
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 14:59
Juhu,


Zitat von Tonic1024:
Hi...

Delphi-Quellcode:
  
procedure SetFlags(hWnd: HWND; Flags: TAppFlags = [HASPREFS, HASABOUT]);
jetzt will die SetProp Funktion aber einen Cardinal als Parameter haben.

  SetProp(hWnd, PChar('application'), Flags);
Gibst du uns auch noch die Richtige Funktion? Die Eine heißt SetProp die andere SetFlags... so lässt sich schlecht vergleichen

Gruß
Reli
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 15:11
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
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 15:13
Hast Du es mal versucht wie in #2 angedeutet? Also mit einem Cast nach LongInt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Datenmegen ausrechnen?!?

  Alt 12. Dez 2008, 15:38
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.

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:26 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