Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 03.11.10 14:34 
Hi,

wenn ich eine goto Anweisung zu einem definierten Label innerhalb eines 'with do' Blockes schreibe, bekomme ich im Strukturfenster einen Fehler angezeigt: ('Void' enthält kein Element namens 'L' in Zeile 32).
Die Anwendung lässt sich jedoch fehlerfrei compilieren und richtig ausführen!!

Hier ein (unsinniges) Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var p : TPoint;
label L;
begin
 with p do
     begin
        goto L;
        L:
     end;
end;


kommentiert man "with p do" aus, gibt es keine Fehlermeldung

mit Gruss und :?: : Daniel

edit: TurboDelphi
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 03.11.10 14:37 
Vermeide die goto-Anweisung. In den meisten Fällen sind sie überflüssig und machen den Programmcode nur unübersichtlich.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 03.11.10 14:41 
Wenn du with benutzt, musst du damit leben. Damit kann man eben nur sehr schlecht debuggen, und diese falschen Fehleranzeigen sind die Dreingabe. :nixweiss:
Und dann auch noch goto dazu... naja, was soll man da schon noch sagen...
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mi 03.11.10 15:44 
Du solltest heutzutage weder 'with' noch 'goto' benutzen, das sind Relikte aus der Programmiersteinzeit.

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mi 03.11.10 15:45 
Der Bug wurde in zwischen wohl gefixt.

Ich verwende weder with noch goto. Beides ist für Leute, die den Code nicht bereits gut kennen relativ mühsam zum Lesen und beide sind anfällig für Bugs.

// platzwart war wohl schneller ;)
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mi 03.11.10 16:41 
...wobei einem with do viel Schreibarbeit anmehmen kann.

Daniel
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Mi 03.11.10 17:00 
user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
...wobei einem with do viel Schreibarbeit anmehmen kann.
Ich benutze dafür den Quelltexteingabe Helfer des CNPacks. Ist fast so komfortabel wie With, aber eben eindeutig.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 03.11.10 17:45 
user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
...wobei einem with do viel Schreibarbeit anmehmen kann.
Wenn man eine Zwischenvariable plus die genannten CnWizards benutzt, nicht viel.

Für diesen kleinen Aufwand bekommt man aber sehr viel. Direkte Auswertung per Mouseover beim Debuggen, Übersichtlichkeit, Eindeutigkeit, ...