AGB  ·  Datenschutz  ·  Impressum  







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

Button Captions in array

Ein Thema von seim · begonnen am 12. Mär 2008 · letzter Beitrag vom 12. Mär 2008
 
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Button Captions in array

  Alt 12. Mär 2008, 13:30
Zitat von RavenIV:
Und bei Listen MUSS man casten, weil nur Zeiger abgelegt werden.
Also mach ich das bei Arrays eben auch.
Es wird bei beiden Formen nur Pointer abgelegt und verwaltet. Aber bei einem Array wird die Typensicherheit von Delphi direkt auf den spezialisierten Typ angewendet. Bei einer TObjectList wird nur spezifisch mit dem Basistyp TObject gearbeitet.

Zitat von RavenIV:
Meine Meinung zum abc AS xyz:
Das ist Geschmacksache, ob ist nun das dynamische Bindung (AS) oder Casting (xyz(abc)) verwende.

Oder kann mir jemand verständlich erklären, wann man dynamische Bindung oder Casting verwendet und warum?
AS macht intern eine IS Prüfung und würde fehlschlagen, wenn das Elemente NIL ist oder einen falschen Typ hat. Sprich: Button OnClick Handler. Ein dynamischer Cast mit AS auf ein TMemo würde mit einer entsprechenden Exception quittiert werden und somit der (falsche) Zugriff auf eine Eigenschaft unterbunden. Bei einem harten Typecast wird nichts überprüft sondern du sagst dem Compiler: mach dir keine Gedanken, interpretiere den Speicher dort bitte so... Damit würde bei einem Zugriff auf eine Eigenschaft von TMemo(Sender) auf den Offset in TButton zugreifen wo bei TMemo entsprechend diese Eigenschaft liegen würde. Somit: Du greifst auf den Speicher zu interpretierst die dort vorhandenen Bytes einfach wie es dir genehm wäre. So würde ein Zugriff auf TMemo(Sender).Lines nicht die TStrings Instanz ermitteln (die TButton nicht hat) sondern (Beispiel) das Modalresult des Buttons liefern, da es an der Stelle liegt (zufälliger weise). Und der ModalResult Eigenschaftswert wird dann als TStrings Instanz interpretiert werden. Wenn du dann davon eine Methode aufrufst, dann springt er in die Methode und landet sonstwo im Speicher - wo wahrscheinlich nichtmal Code steht bzw. der Speicher gehört nicht zur Anwendung oder ist vllt. nichtmal ein Codesegment sondern was anderes.

Naja, grundlegend sollte es klar sein. Von daher ist ein solcher harter Typecast nur zu nutzen, wenn man sich 100%ig sicher sein kann, das der Typ eindeutig ist (bzw. eigentlich 110%ig, damit im Fehlerfall nicht noch mehr Fehler dadurch erzeugt werden). Ich habe es in meinem Beispiel zuvor bei den Actions mit einer Assertion abgeprüft. Dort hätte man auch alternativ einmalig mit IS fragen können um dann (bei Erfolg) mit einem harten Typecast zu arbeiten, um sich dort dann die erneute Typprüfung bei den Zugriffen zu ersparen...
  Mit Zitat antworten Zitat
 


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 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz