Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Störende Elemente der Delphi-Syntax / Vorschläge für neuen Dialekt (https://www.delphipraxis.net/165690-stoerende-elemente-der-delphi-syntax-vorschlaege-fuer-neuen-dialekt.html)

CCRDude 24. Jan 2012 08:27

AW: Störende Elemente der Delphi-Syntax / Vorschläge für neuen Dialekt
 
Zitat:

Zitat von himitsu (Beitrag 1145819)
Eine Möglichkeit gäbe es.

Die System.pas verändern, neu kompilieren und dann auch noch alle BPLs neu kompilieren.

Geht das inzwischen? Ich hatte das zuletzt mit Delphi 2006 probiert (um Patches zur Win9x-Kompatibilität einzupflegen), da scheiterte es aber immer an der Variants.pas (diverse andere Probleme, wie benötigte aber nicht mitgelieferte obj-Dateien liessen sich anderweitig besorgen).

Blup 24. Jan 2012 08:35

AW: Störende Elemente der Delphi-Syntax / Vorschläge für neuen Dialekt
 
Zitat:

Zitat von himitsu (Beitrag 1147297)
Und das ist bei den normalen/einfachen Interfaces falsch, denn es geht nicht um Methodennamen ... diese sind vollkommen egal.
Delphi-Quellcode:
  MyInterface1 = interface
    procedure My1; // Methode 1 (Index 0)
    procedure MyX; // Methode 2 (Index 1)
    procedure MyY; // Methode 3 (Index 2)
  end;
 
  MyInterface2 = interface
    procedure My2; // Methode 1 (Index 0)
    procedure MyX; // Methode 2 (Index 1)
    procedure MyY(AValue: Integer); // Methode 3 (Index 1)
  end;
Beim Objekt verlinkt der Compiler nun die Interfaces und hinterlegt, bei den Methodenlisten er Interfaces, die Zeiger zu den jeweiligen Methoden.

Will man nun mehrere Interfaces vererben, dann müßten im abgeleiteten Interface nun jeweiles mehere Methoden zu einem Index hinterlegt werden, was natürlich nicht geht.
Auch den Indize verschieben geht nicht, da es dann nicht mehr zum Vorfahren paßt.

Du versteifst dich darauf das Vererbung nur in der Form erfolgen kann, wie diese jetzt realisiert wird. Nämlich das man den Record des Vorfahren nimmt und nur neue Methoden anhängt. Das ist jedoch nur notwendig, wenn man einfache "cast" für Interfaces auf Vorfahren zulässt.
Zitat:

Zitat von himitsu (Beitrag 1147297)
Selbst wenn nur die Indize hinereinander gelegt würden, also die Indize des zweiten Interfaces werden verschoben, ohne daß das Vorfahreninterface wirklich "implementiert" würde, also quasi der Vorfahre wird nur als Vorlage verwendet, wäre das keine sichere Methode, denn wenn man den Vorfahren verändert, würde das eigene Interface verändert.

Selbst das erwarte ich nicht. Wenn du dir meinen Code anschaust, der Compiler soll praktisch ein komplett neues Interface schaffen. In diesem neuen Interface werden natürlich auch die Methoden einen völlig anderen Index haben. Die Vererbung muss nur bei Zuweisung an Variablen vom Typ der Vorfahren berücksichtigt werden.
Das man Interfaces im nachhinein normalerweise nicht verändert, sollte eigentlich bekannt sein. Das sich auch abgeleitete Interfaces in diesem Fall verändern ist Sinn und Zweck der Vererbung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.
Seite 5 von 5   « Erste     345   

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