Einzelnen Beitrag anzeigen

teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

Re: Problem mit Klassenmethoden

  Alt 2. Feb 2004, 14:15
Zitat von billi:
kannst du mir das mal erklären, bin noch nicht soo der superheld in delphi (DialogSeite As TLayout)
Du deklarierst DialogSeite als TFrame. TFrame bringt aber von Hause aus keine Methoden LayoutLoad etc. mit. D.h der Compiler weiss an dieser Stelle nicht, welche Methode er aufrufen soll.DialogSeite.LayoutLoad; brächte den Compilerfehler 'Undefinerter Bezeichner'. Entweder deklarierst Du DialogSeite als TLayout, was unpraktisch wäre, weil Du verschiedene Frames brauchst, oder Du castest DialogSeite auf den Typ, den Du gerade brauchst. Genau das macht der as-Operator. Er sagt dem Compiler, dass er DialogSeite nicht als TFrame sondern als TLayout betrachten soll, denn TLayout beinhaltet die gewünschte Methode. Für den Fall, dass DialogSeite irgendetwas anderes ist als ein Abkömmling von TFrame, kriegst Du einen Exception.

Der Vollständigkeit halber: Du kannst auch ohne den as-Operator casten, das sähe dann so aus:TLayout(DialogSeite).LayoutLoad; Hat den Vorteil, dass es ein kleines bisschen flotter ist, weil die Typüberprüfung nicht gemacht wird, aber den Nachteil, dass Du, wenn Du DialogSeite keine Methode LayoutLoad haben sollte (z.B. weil durch einen Programierfehler nicht vom Typ TLayout) der Aufruf ins Nirvana geht. Wenn man weiss, was man tut, ist diese Möglichkeit aber auch völlig ok.

Ich sehe gerade, dass Du von der zweiten Möglichkeit schon ausgiebig Gebrauch machst.

Probier mal folgendes:
farbe := TEdit(FindComponent('E' + name)).text; Bist Du sicher, dass 'E'+name etwas sinnvolles ergibt? Wird name richtig gesetzt?

Gruß, teebee
  Mit Zitat antworten Zitat