AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Unit unabhängig von anderen Untis machen

Ein Thema von Jazzman_Marburg · begonnen am 1. Jan 2012 · letzter Beitrag vom 2. Jan 2012
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 13:51
Frohes Neues!

Vielleicht kann mir ja jemand sagen, was die reine Lehre (oder die gelebte Praxis) zu meinem kleinen Probelm sagt:
In einer Unit habe ich einen Algorithmus, der am Ende ein Array mit Rechtecken füllt (besser wäre Rechteck-Objekte in einem Objekt-Container, aber das sei jetzt mal egal). Nun sollen diese Rechecke auch gezeichnet werden. Ich möchte aber meine Alogrithmus-Unit soweit wie nur möglich vom eigentlichen zeichnen trennen.
Meine Frage:
Wie stelle ich es an, dass der Algorithums nun sein Array fertigstellt, und quasi sagt "Fertig!" -- falls sich nun eine Zeichen-Routine (in einer anderen Unit) dafür interessiert, wird gezeichnet oder eben nicht: Wichtig ist nur, dass der Algorithums nichts über das Zeichnen wissen soll (oder muß). Mein Ziel ist es die Algorithmus-Unit in verschiedenen Projekten zu verwenden -- dazu darf diese Unit aber keine Voraussetzungen über die übrige Welt machen: Es soll ihr quasi egal sein, wer sich und/oder ob sich überhaupt um das Rechteck-Array gekümmert wird.

Ein wenig verschwurbelte Beschreibung, ich weiss, aber letztlich will ich diese Unit unabhängig von anderen Units machen -- aber die anderen sollen schon mitbekommen, dass jetzt das Rechteck-Array gefüllt ist.
Erreiche ich dieses "Fertig" über ein Notify-Event?

Vielen Dank
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 14:01
Was spräche denn gegen ein Event? Wenn ein Zeichner da ist, muss der sich ggf. darin eintragen. Dein Algo muss dann dieses Event nur noch auslösen (vorher auf nil überprüfen) und der Zeichner kann loslegen.

[edit] Eine weitere Möglichkeit wäre ein Callback-Parameter, der ja letztlich auch nichts soviel anderes ist.
[edit2] Noch eine Möglichkeit: Der Zeichner könnte ein Interface implementieren mit einer Methode "Zeichne" oder so

Geändert von implementation ( 1. Jan 2012 um 14:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#3

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 14:23
Was spräche denn gegen ein Event? Wenn ein Zeichner da ist, muss der sich ggf. darin eintragen. Dein Algo muss dann dieses Event nur noch auslösen (vorher auf nil überprüfen) und der Zeichner kann loslegen.
Prima!
Das wollte ich nur hören (brauchte diesen "Amtlich"-Stempel).

Lieben Dank
Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 15:00
Ich würds grob gesagt so lösen:

Delphi-Quellcode:
Unit A;

function ArrayMitRechteckenFüllen(): TRechteckArray;
Delphi-Quellcode:
Unit B;

uses A;

procedure ZeichneRechtecke(const Rechtecke: TRechteckArray; Canvas: TCanvas);
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 15:26
Hi,

wieso muss denn der Algorithmus irgendwie das Zeichnen auslösen?

Ich hätte eher gesagt, nachdem der Algorithmus fertig ist, kann sein Aufrufer entscheiden, wie es weiter geht. Dem stehen ja dann die Ergebnisse des Algorithmus zur Verfügung und er kann sie an die Zeichenroutine weitergeben.
Dann kannst du auch die Zeichenroutine mit anderen Eingaben nutzen (z.B. zwischengespeicherte Ergebnisse aus einer Datei).


Liebe Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 16:31
Mir fallen spontan 2 Verfahren 1.
1. Events. Der Interessent installiert einen Event à la "Sag mir Bescheid, wenn Du fertig bist". Nachteil: Der Interessent muss wissen, das es einen Rechteckausrechnomat gibt
2. Controller. Rechteck-Rechn-O-Mat sagt dem Controller, wenn er fertig ist. Der Interessent kennt nur den Controller. Der sagt ihm "Sag Du mir Bescheid, wenn es Arbeit gibt".

(2) ist besser, weil der Zeichner nicht mehr verändert werden muss, wenn es neben dem Rechteck-Rechn-O-Mat irgendwann auch noch einen Kreis-Rechn-O-Mat gibt. Auch der Controller muss nicht unbedingt erweitert werden.
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#7

AW: Unit unabhängig von anderen Untis machen

  Alt 1. Jan 2012, 20:57
[...]
2. Controller. Rechteck-Rechn-O-Mat sagt dem Controller, wenn er fertig ist. Der Interessent kennt nur den Controller. Der sagt ihm "Sag Du mir Bescheid, wenn es Arbeit gibt".

(2) ist besser, weil der Zeichner nicht mehr verändert werden muss, wenn es neben dem Rechteck-Rechn-O-Mat irgendwann auch noch einen Kreis-Rechn-O-Mat gibt. Auch der Controller muss nicht unbedingt erweitert werden.
Lieben Dank für alle Vorschläge!
Die Controller-Lösung klingt ja spannend -- und elegant!
Leider weiß ich nichts über "Controller" -- ist das so ein Entwurfsmuster (GOF), oder wo könnte ich etwas darüber lesen?
(Controller als keyword in Google ist ein wenig zu unspezifisch...).
Wäre toll, wenn Furtbichler das nocheinmal kommentiern könnte.

Vielen Dank!
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Unit unabhängig von anderen Untis machen

  Alt 2. Jan 2012, 05:41
Hier & hier (passender) gibts mehr darüber zu lesen.

Allerdings reicht es in deinem Fall schon, wenn du dich an das hältst, was ich geschrieben habe. Denn das kannst du nachher einfach in nen Model-View-Controller einbauen.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf