Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
19. Nov 2010
Wenn du auf einer Maschine mit 32KByte die Grundzüge der Programmierung gelernt hast, prägt dich das dein restliches Leben :)
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Das mag so sein, oder du mich nicht ?
Es ist schon ein Unterschied, ob in der Exe das steht :
DreckMain.pas.78: Caption := fClass.Foo(S);
004666AD 8D4DF8 lea ecx,
004666B0 8B55FC mov edx,
004666B3 8B83E0020000 mov eax,
004666B9 E81AFFFFFF call TMyClass.Foo
004666BE 8B55F8 mov edx,
004666C1 8BC3 mov eax,ebx
004666C3 E8F4CCFBFF call...
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Schlechter Vergleich. Wenn du vor oder nach einem Array schreibst, veränderst du ungewollt andere Daten ( wenn du ließt, ließt du garantiert was falsches ). Ein Vergleich zu deinem Vergleich : :wink:
Es ist wie irgendjemanden auf der Straße in die Geldbörse zu greifen. Rein Technisch ist das Geld ja da :wink:
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Das Problem an der Stelle ist : Woher sollte der Compiler das wissen ?
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Natürlich ist eine Prüfung auf NIL nicht so aufwändig ( mindestens 4 Zusätzliche Assembler-Anweisungen ), aber sie müßte vor jeder Benutzung der Klasse erfolgen, das macht sie so aufwändig.
Und eine Fehlermeldung zu werfen, wenn die korrekte Arbeitsweise der Klasse sichergestellt ist, finde ich recht unsinnig
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Das kann der Compiler schlicht und ergreifend nicht prüfen. Du hast einen Instanzzeiger ( wenn der auch auf NIL weist ) und über diesen Zeiger rufst du eine Methode auf.
Anders wäre es, wenn du TIrgentwas.Methode aufrufst. Da kann der Compiler prüfen, on es sich bei der Methode um eine Klassenmethode handelt und tut das auch.
Wenn die Gültigkeit der Instanz zur Laufzeit jedes mal geprüft werden...
Forum: Object-Pascal / Delphi-Language
Delphi
by guinnes,
18. Nov 2010
Du greifst auf keine Felder der Klasse zu, darum gehts. Dazu ist die Methode nicht virtuel.