AGB  ·  Datenschutz  ·  Impressum  







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

Property zusammensetzen

Ein Thema von Killer · begonnen am 19. Aug 2005 · letzter Beitrag vom 21. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#1

Property zusammensetzen

  Alt 19. Aug 2005, 16:59
Hallo habe ein kleines Problem, und zwar möchte ich folgendes machen:

Ich habe eine for Schleife:
for vI := 1 to 5 do begin Weiters hab ich eine Klasse namens TUser, in der verschiedene Informationen gespeichert sind.
Nun kann man einem User mehrere Server zuweisen, diese heißen in der Klasse Server1 - Server5.

Ich möchte in der Schleife alle Properties angefangen von Server1 bis Server5 durchgehen, aber weiß nicht, wie ich das formulieren muss. Wahrscheinlich ist es ganz einfach und ich komm ned drauf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:02
muss man sich die komponente so vorstellen?
Delphi-Quellcode:
TYourComponent = class(TComponent);
public
  property Server1: TKlassex read...;
  property Server2: TKlassex read...;
  property Server3: TKlassex read...;
  property Server4: TKlassex read...;
  property Server5: TKlassex read...;
end;
von welchem Typ ist Server1 bis Server5.

wenn es Objecte sind würde es mit GetObjectProp funktionieren
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:10
Warum nicht gleich so?
Delphi-Quellcode:
property Servers : TServerCollection read ...
...
for Server in aUser.Servers do
oder
Delphi-Quellcode:
property Server[aIndex : Integer] : TServer read ...
...
for i := 0 to aUser.ServerCount - 1 do
Erstere wäre die hübsche Lösung, geht aber erst ab D2005.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:14
Nein das ganze sieht so aus:
Delphi-Quellcode:
type TUser = class
   ...
   public
    property Server1: integer read FServer1 write FServer1;
    property Server2: integer read FServer2 write FServer2;
    property Server3: integer read FServer3 write FServer3;
    property Server4: integer read FServer4 write FServer4;
    property Server5: integer read FServer5 write FServer5;
Ich habe die 5 Properties fix vorgegeben, da nie mehr als 5 existieren dürfen.

@Robert_G:
Deine untere Lösung sieht interessant aus, müsste mal testen ob es so funktioniert wie ich jetzt meine...
Ich progge mit Delphi 7 deshalb geht die obere nicht

Edit:
Wie muss ich das denn schreiben:
property Server[aIndex : Integer] : TServer read ?? write ??; Hab da ja nur fixe Variablen FServer1, FServer2 usw.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:18
ich würde auch die untere Variante von Robert bevorzugen.
Wenn du es jedoch wie jetzt lassen willst kommst du mit GetOrdProp an die Werte ran.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:27
Delphi-Quellcode:
type TSomeEnum = (slFirst, slSecond, slThird, slForth);
...
  property Server[aIndex : TSomeEnum] : TServer;
-> [Ctrl + Schift + C] drücken.
Delphi-Quellcode:
function getServer(aIndex : TSomeEnum) : TServer;
begin
  case aIndex of
    slFirst : result := Server1;
    slSecond : result := Server2;
    slThird : result := Server3;
    slForth : result := Server4;
  else
    result := nil;
  end;
end;
Delphi-Quellcode:
for i := slFirst to slForth do
  Server := aUser.Server[i];
Ehrlich gesagt finde ich es ziemlich hässlich und verstehe den Sinn der 5 Felder nicht.....
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Property zusammensetzen

  Alt 19. Aug 2005, 17:50
Gar nicht übel, Robert, vielleicht mit einer kleinen Anpassung:

Delphi-Quellcode:
type
  TSomeEnum = (slFirst, slSecond, slThird, slFourth);

  TMYClass = class
  private
    FServers: array[TSomeEnum] of TServer;
    function GetServers(AIndex: TSomeEnum): TServer;
  public
    property Server[AIndex : TSomeEnum] : TServer read GetServers;
    property Server1: TServer index slFirst read GetServers;
    property Server2: TServer index slSecond read GetServers;
    property Server3: TServer index slThird read GetServers;
    property Server4: TServer index slFourth read GetServers;
  end;

function TMYClass.GetServers(AIndex: TSomeEnum): TServer;
begin
  Result := FServers[AIndex];
end;
gruß, choose
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Property zusammensetzen

  Alt 19. Aug 2005, 18:12
Hihi, das wäre dann wohl der Kompromiss zwischen 1 Feld, aber rückwärts kompatiblem Interface.
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Property zusammensetzen

  Alt 19. Aug 2005, 20:23
Danke für eure Ansätze, habs nun ein wenig anders gemacht, da ich ja ein Array von Integers brauche:
Delphi-Quellcode:
type TUser = class
   private
      Server: array[0..4] of integer;
      function GetServer(Index: integer): integer;
   public
      property Server[Idx: integer]: integer read GetServer;
end;

function TUser.GetServer(Index: integer): integer;
begin
  Result := FServer[Index];
end;
Danke
  Mit Zitat antworten Zitat
Killer

Registriert seit: 11. Nov 2003
152 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Property zusammensetzen

  Alt 21. Aug 2005, 17:31
So jetzt hab ich aber noch ein Problem damit. Und zwar muss ich in die Property
Server[Idx: integer] auch schreiben können (also ins Array). Nur wie kann ich das lösen?

Hab mir dann gedacht, vielleicht gehts so, aber so kennt er Idx nicht...
property Server[Idx: integer]: integer read GetServer write FServer[Idx];

Edit:
Lösung schon gefunden:
Delphi-Quellcode:
property Server[Idx: integer]: integer read GetServer write WriteServer;

procedure WriteServer(Index: integer; Value: integer);
Delphi-Quellcode:
procedure TUser.WriteServer(Index: integer; Value: integer);
begin
  FServer[Index] := Value;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:11 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