AGB  ·  Datenschutz  ·  Impressum  







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

Set of in Ordinal umwandeln

Ein Thema von Martin K · begonnen am 2. Mai 2006 · letzter Beitrag vom 2. Mai 2006
Antwort Antwort
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 17:48
Hi,

Hab mal gelesen, dass Set of (also so was wie TFontStyles) eigentlich nur ordinale Typen sind.
Hab dazu hier im Forum auch was zur Umwandlung gefunden, allerdings nur mit viel Code.

Meine Frage:
Das müsste doch ganz einfach gehen, hab z.B. folgendes festgestellt:
Delphi-Quellcode:
var i: integer;
//...
  i := Byte(Form1.Font.Style);
Das funktioniert!

Aber wie geht es umgekehrt ?
Gibts da evtl. auch eine ganz einfache Umwandlung?

Das hier:
  Form1.Font.Style := TFontStyles(i); funzt leider nich
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 18:38
Hallo Martin,

vergiss nie, dass ein Set zwischen 1 und 32 Byte groß sein kann. Die von dir angedachte Initialisierung eines Set durch Zuweisung einer passenden Ganzzahl funktioniert generell mit Variablen. Font.Styles ist allerdings eine property, die über einen Setter bestückt wird.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 18:42
Hmm...
Und wie könnte es gehen?

Ich weiß, dass das mit der Unit TypInfo und der Prozedur SetOrdProp geht, aber es muss doch auch igrgendwie allg. mit definierten Set of -Typen gehen.

Das mit FontStyles war ja nur ein Beispiel...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 18:47
So geht es:

Delphi-Quellcode:
var
  fs: TFontStyles;
begin
  fs := Font.Style;
  Byte(fs) := 42; // fiktiver Wert
  Font.Style := fs;
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 18:55
Hm...

Sieht gut aus, danke erstmal

Noch ein Problem:
Es sollte allg. mit Set of -Typen gehen, nicht nur mit TFontStyles.

Gibt es irgendwie einen allgemeinen Typ dafür, den man hier als Variable nehmen kann?

Etwa so was:
Delphi-Quellcode:
var test: TSetOfTyp; //<-- gibt's irgendsowas???
begin
  test := Font.Style;

  //aber auch:
  test := BorderIcons;

  //oder:
  test := Anchors;
end;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 19:20
Nach den Regeln zur Delphi Typkompatibilität: Nein. Ist auch mehr eine technische Spielerei, was wir hier machen - in hohem Maße abhängig von der Implementierung des Mengentyps. Der hier gezeigte Code darf in keinem ernsthaften Programm verwendet werden.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 19:34
Hm...

Ich würde halt gerne so etwas machen (soll eine erweiterte IniFile geben):
Delphi-Quellcode:
procedure TIniFile.WriteSetOf(const Section, Ident: String; const Value: TSetOf {???});
begin
  WriteInteger(Section, Ident, Byte(Value)); //ist eigentlich nicht das Problem
end;

function TIniFile.ReadSetOf(const Section, Ident: String; const Default: TSetOf): TSetOf {???};
begin
  Byte(Result) := ReadInteger(Section, Ident, Byte(Default));
end;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 19:45
Du könntest eine PPropInfo Variable übergeben (oder Object + String-Name der Set-Eigenschaft) und das ganze dann mit RTTI setzen.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Set of in Ordinal umwandeln

  Alt 2. Mai 2006, 19:50
Ja, aber damit geht es doch nur mit Object-Property's und nicht allgemein mit Set of -Typen, oder????
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  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 08:05 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