AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi inherited im OnClick-Ereignis [Verständnisfrage]
Thema durchsuchen
Ansicht
Themen-Optionen

inherited im OnClick-Ereignis [Verständnisfrage]

Ein Thema von RWarnecke · begonnen am 10. Jun 2012 · letzter Beitrag vom 10. Jun 2012
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 08:37
Hallo zusammen,

ich schaue gerade einen fremden Quelltext durch. Dabei ist mir aufgefallen, dass in vielen OnClick-Ereignissen inherited; immer als erstes nach dem begin steht. In den bis jetzt eingesehen Quelltext wurde keine der Komponenten von den OnClick-Ereignissen zur Laufzeit erstellt.

Ich verstehe nicht, warum das so gemacht wurde, da ich das zum ersten mal sehe. Was ist der Grund dafür ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 08:50
Vielleicht aus Prinzip. Auch wenn es nicht nützt, muß es auch nicht schaden. Wenn man z.B. eine neue Klasse aus TObject erstellt, baut man z.B. in Create inherited ein, obwohl es eigentlich nicht nötig ist. Da ist nichts was aufgerufen werden kann, aber es wird aus Prinzip gemacht, dann es schadet auch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 10:05
Aber Vorsicht, wenn Quelltext auch noch für alte Delphiversionen funkionieren soll. Denn wenn an da ein inheritd zu viel setzt, kann das auch ganz schnell knallen. Offenbar wird dort nicht geprüft, ob da auch ein Sprungziel dafür existiert. Zumindest bei Delphi 5 ist dieses Problem bei Quelltext aufgetreten (als ich ein inherited zu viel drin hatte), den ich mit XE geschrieben hatte. (Dort passiert da nichts wie es sein sollte.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 10:22
Danke erstmal für die Antworten. Der Quelltext ist komplett nur für Delphi 2010. Den werde ich auf keinen Fall auf ältere Delphi-Versionen portieren.

Aber Vorsicht, wenn Quelltext auch noch für alte Delphiversionen funkionieren soll. Denn wenn an da ein inheritd zu viel setzt, kann das auch ganz schnell knallen. Offenbar wird dort nicht geprüft, ob da auch ein Sprungziel dafür existiert. Zumindest bei Delphi 5 ist dieses Problem bei Quelltext aufgetreten (als ich ein inherited zu viel drin hatte), den ich mit XE geschrieben hatte. (Dort passiert da nichts wie es sein sollte.)
Sowas ähnliches hatte ich auch noch im Gedächtnis, aber im zusammenhang mit Klassen und ableiten von Komponenten.

Ich verstehe nur noch nicht ganz warum. Bei Klassen oder abgeleiteten Komponenten könnte ich es verstehen aber nicht bei einfachen OnClick-Ereignissen von Standard-Komponenten. Könnte das ganze ein Relikt aus älteren Zeiten sein ?

Also werde ich die Zeile mal drin stehen lassen, bis ich ein bisschen mehr Zeit habe. Dann werde ich das ganze mal testen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 11:13
Würde sagen, das hängt davon ab, ob man die ursprüngliche Funktionalität erweitern oder abändern möchte. Bei einer Erweiterung: erstmal inherited, damit alles wie gewohnt abläuft, und danach der eigene Code. Und wenn man der Ur-Funktionalität zuvorkommen möchte, dann zuerst der eigene Code und danach inherited. Bei einer Änderung: ohne inherited => alles neu.
PS: inherited kann sich auch auf den Vorfahr des Vorfahrs beziehen.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 11:16
Schau doch mal nach, ob das Formular vererbt wurde, denn dann fügt die IDE automatisch das iherited ein.
Und zwar unabhängig davon, ob es im Vorfahr deklariert wurde.

Und ja, dass ist dann vorbeugend, falls im Vorgänger doch etwas deklariert wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: inherited im OnClick-Ereignis [Verständnisfrage]

  Alt 10. Jun 2012, 11:25
Schau doch mal nach, ob das Formular vererbt wurde, denn dann fügt die IDE automatisch das iherited ein.
Und zwar unabhängig davon, ob es im Vorfahr deklariert wurde.

Und ja, dass ist dann vorbeugend, falls im Vorgänger doch etwas deklariert wird.
Hallo Sir Rufo,

dass war der entscheidene Hinweis. Jedes Formular wird von einem Masterformular abgeleitet. Dann kann ich mir den Befehl inherited auch in einem OnClick-Ereignis erklären. Jetzt habe ich verstanden, dass das inherited mit der Vererbung der Formulare zusammenhängt. Also bleibt alles so wie es ist.
Rolf Warnecke
App4Mission
  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 11:56 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