Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - With <component> do begin wird ignoriert


trm - Mi 25.05.11 18:54
Titel: With <component> do begin wird ignoriert
Hallo,

ich bin stinksauer, weiß aber nicht, auf wen.
Es gibt zwei Möglichkeiten. Auf mich oder auf den Delphi7 Compiler.

Folgendes ist passiert. Ich habe ein langes With [component] do Konstrukt, in der ich bisher alle auf diese Komponente bezogen habe.

Ohne, dass ich in dem Konstruk etwas geändert habe (aber außerhalb dieser With - Anweisung), kommt es sporadisch vor, dass sich das Konstrukt nicht mehr auf das Object, sondern auf die Form, in der das Object ist, bezieht.

Kommt bei einigen Dingen der Compiler durcheinander?

Als Abhilfe habe ich das With entfernt und jedes Element des Objectes direkt angesprochen.
Der Fehler ist somit behoben.

Aber warum passiert das?

Gruß


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mi 25.05.2011 um 22:29


jaenicke - Mi 25.05.11 19:06

Dass with eines der schlimmsten Konstrukte ist, das es in Delphi gibt, ist doch bekannt. Wer es nutzt, ist selbst schuld. :nixweiss:

Die Wirkung ist aber eigentlich immer die selbe. Nur durchschaut man eben oft nicht was eine Änderung ggf. zur Folge hat. Zum Beispiel bei verschachtelten with-Anweisungen wird es ganz undurchschaubar. Oder bei Variablennamen, die zufällig gleich heißen wie irgendein Bezeichner von Delphi (ok, das darf bei sauberem Code ohnehin nie vorkommen, wenn man ordentliche Bezeichner nimmt).

Jedenfalls gibt es viele Fehlerquellen bei with oder goto, die man eben nicht so schnell sieht. Deshalb verwende ich das generell nicht, insbesondere weil es meist auch nicht wirklich viel Sinn macht. Die paar Buchstaben, die ich zu tippen spare, werden von der Zeit, die mit with durch die fehlenden Debugmöglichkeiten und die Fehlersuche gefressen werden tausendmal aufgewogen...


trm - Mi 25.05.11 20:27

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dass with eines der schlimmsten Konstrukte ist, das es in Delphi gibt, ist doch bekannt.


Mir nicht. Das war bisher immer ein gern genutztes Element :)

Danke für die Antwort.