AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriff auf Public nur wenn Bedingung erfüllt ist
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Public nur wenn Bedingung erfüllt ist

Ein Thema von stOrM · begonnen am 1. Mai 2010 · letzter Beitrag vom 7. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#1

Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:39
Hallo,
irgendwie hab ich grad nen Knoten im Kopf.

Ich würde gerne folgendes erreichen, falls irgendwie sauber machbar:

Sagen wir mal es gibt eine Basisklasse:

TUpdateEngine und mehrere weitere Klassen abhängig vom Betriebssystem z.b.

TWin7,
TWinVista,
TWinXP

Die Basisklasse TUpdateEngine soll beim Create prüfen, um welches Zielbetriebssystem es sich handelt.
Wenn das erledigt ist, sollen nur die Funktionen und Proceduren aus dem Publicteil von aussen ansprechbar sein, die auch zum Zielbetriebssystem passen. Diese Functionen und Proceduren möchte ich gerne in die Klassen TWin7 usw. auslagern.

Mir ist nicht klar, wie ich die Klassen aufbauen muss, damit dies möglich ist, sollte es überhaupt möglich sein?
Zu mal ich gerne alles in einer Unit unterbringen würde.

Vielleicht kann mir jemand mal auf die Sprünge helfen...

Viele Grüsse
s!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:43
Führe die entsprechenden Eigenschaften erst in den jeweiligen Unterklassen ein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:46
Ok,
Aber wie komm ich von der TUpdateEngine nach z.b. TWin7 mit den Functionen für Win7 nach dem ermitteln des Betriebssystems in TUpdateEngine? Das ist mir nicht klar.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:46
Delphi-Quellcode:
type
  TWin7 = class(TUpdateEngine)
    ...
  end;
  TWinVista = class(TUpdateEngine)
    ...
  end;
  TWinXP = class(TUpdateEngine)
    ...
  end;

function GetEngine(): TUpdateEngine;
begin
  if TheSystem = '7then
    Result := TWin7.Create
  else if TheSystem = 'Vistathen
    Result := TWinVista.Create
  else if TheSystem = 'XPthen
    Result := TWinXP.Create
  else
    Fehler;
end;
Tja und nun könnte man extern in den Ableger casten, welcher erstellt wurde.
Delphi-Quellcode:
var Engine: TUpdateEngine;

Engine := GetEngine;
Engine.MachWasWelchesÜberallGeht;
if Engine.isWinXP then // oder if Engine is TWinXP then
  TWinXP(Engine).MachEtwasWelchesNurInWin7Geht;
Ansonsten alles in TUpdateEngine reinmachen und nur die Zugriffe auf die Property/Funktionen intern unterdrücken (eventuell mit Exceptions), welche im aktuellen System nicht verfügbar sind.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:49
Zitat:
Ansonsten alles in TUpdateEngine renmachen und nur die Zugriffe auf die Property/Funktionen intern unterdrücken (eventuell mit Exceptions)
Hehe nun ist die Verwirrung perfekt
Irgendwie nicht mein Tag heute
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:51
Das geht z.B. bei Methoden, wenn du die Abfrage in disen machst und beim falschen OS eine Exception auslöst.
Besser ist aber die andere Alternativ, da sie dem Prinzip der OOP folgt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:53
Zitat von stOrM:
Hehe nun ist die Verwirrung perfekt
Delphi-Quellcode:
TUpdateEngine = class
  property isWin7: Boolean ...;
  procedure NurFürWin7;
  procedure NurFürWin7oderXP;
end;

procedure TUpdateEngine.NurFürWin7;
begin
  if not isWin7 then
    raise Exception.Create('ist nicht erlaubst');
  ...
end;

procedure TUpdateEngine.NurFürWin7oderXP;
begin
  if not (isWin7 or isWinXP) then
    raise Exception.Create('ist nicht erlaubst');
  ...
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 17:57
Zitat von himitsu:
Zitat von stOrM:
Hehe nun ist die Verwirrung perKfekt
Delphi-Quellcode:
TUpdateEngine = class
  property isWin7: Boolean ...;
  procedure NurFürWin7;
  procedure NurFürWin7oderXP;
end;

procedure TUpdateEngine.NurFürWin7;
begin
  if not isWin7 then
    raise Exception.Create('ist nicht erlaubst');
  ...
end;

procedure TUpdateEngine.NurFürWin7oderXP;
begin
  if not (isWin7 or isWinXP) then
    raise Exception.Create('ist nicht erlaubst');
  ...
end;
Mein Gott Himi bist du wieder schnell lol hab grad schon roten Kasten bekommen
Also Cast wäre besser wenn ich das richtig verstehe als die Exceptionmethode?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 18:00
Zitat:
Also Cast wäre besser wenn ich das richtig verstehe als die Exceptionmethode?
Ja. Weil hier dann immer nur die verfügbaren Methoden sichtbar sind.
Zudem finde ich eine inflationäre Verwendung von Exceptions auch nicht so gut. (Fahrt nach Gehör statt nacht Sicht)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Zugriff auf Public nur wenn Bedingung erfüllt ist

  Alt 1. Mai 2010, 18:04
[quote="mkinzler"]
Zitat:
Fahrt nach Gehör statt nacht Sicht)


Ok da ist was dran hehe, dann lass ich mir mal ne Badewanne mit Kaffee ein und leg mal los!
Vielen Dank euch beiden!
  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 05:27 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