Einzelnen Beitrag anzeigen

idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#33

AW: With und Klassenmethoden

  Alt 16. Aug 2015, 18:09
Zitat:
Und Ändern des Records innerhalb with ging auch nicht.
Ich denke, das dürfte ein Mißverständnis sein. Was hier gemeint sein dürfte und nach meiner Erinnerung die allererste Pascal Implementierung auf der CDC, auf der ich mein Studium begonnen habe, verboten hat, war eine Veränderung von Variablen, die zur Adressberechnug des Objekts benötigt worden sind.
Code:
with x[i] do
   begin
   i:=i+1
   ...
   end;
Diese Einschränkung ist allerdings zumindest in einer etwas späteren Version sehr bald gefallen. Man konnte im with Block dann auch Variable verändern, die für Berechnung der record Adresse benötigt wurden (sogar ohne dass das das Objekt des With verändert hätte). Beim Bearbeiten von Listen war dann absolut üblich
Code:
while p<>nil do
  with p^ do
    begin
    ...
    p:=next;
    end;

Ich glaube, alle Vorteile von 'with' wurden zur Genüge erwähnt:
Haben wir immer so gemacht
Habe ich so ... gelernt.
Der Parser läuft schneller, weil er weniger zu parsen hat.
Andere gibt es nicht.


Ich finde es schade, dass sich Emba nicht dazu entschliessen kann, durch eine simple Erweiterung der Syntax die Schwachstellen des with zu eliminieren. Tatsächlich trägt with dazu bei, den Code optisch besser zu strukturieren und damit übersichtlich zu machen. Leider in der aktuellen Syntax mit gewissen Risken, die gegenüber dem Vorteil manchmal überwiegen.

Geändert von idefix2 (16. Aug 2015 um 18:56 Uhr)
  Mit Zitat antworten Zitat