Autor Beitrag
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 02.08.13 23:07 
Hallo,
user profile iconjfheins hat folgendes geschrieben Zum zitierten Posting springen:
Solange du kein with benutzt: wahrscheinlich schon.

Danke für den Hinweis.

Was mich trotzdem noch vorsichtig werden lässt, ist das "wahrscheinlich".
Mir ist eigentlich klar, dass width, height usw. sich dann auf TMeinFormular beziehen, aber ich habe eine ungutes Gefühl. Gebe ich MeinFormular.width an, ist es eindeutig.
Der Vorschlag von user profile iconIhopeonlyReader mit self.width usw. wird übersetzt und scheinbar korrekt ausgeführt.
Aber auch da ist mein Gefühl nicht besser.

Irgendwie habe ich in diesem Zusammenhang kein Vertrauen zum Compiler. Zu viele schlechte Erfahrungen, zu geringe Kenntnisse oder aber eine Art Paranoia? Wahrscheinlich alles! :nixweiss:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 02.08.13 23:20 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Gebe ich MeinFormular.width an, ist es eindeutig.
Aber nicht immer richtig... was, wenn du noch im Konstruktor bist und die Formularvariable dementsprechend noch nicht zugewiesen? Was, wenn du das selbe Formular mehrfach benutzt? (in der Variable würde dann ja nur eines der Formulare liegen...)?

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Der Vorschlag von user profile iconIhopeonlyReader mit self.width usw. wird übersetzt und scheinbar korrekt ausgeführt.
Aber auch da ist mein Gefühl nicht besser.
Self ist die einzige Möglichkeit dich auf das aktuelle Objekt zu beziehen. Du kannst es aber auch weglassen solange du kein with benutzt.

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwie habe ich in diesem Zusammenhang kein Vertrauen zum Compiler. Zu viele schlechte Erfahrungen, zu geringe Kenntnisse oder aber eine Art Paranoia?
Wenn du with benutzt, ist das kein Wunder...
Das hat aber nichts mit Vertrauen zum Compiler oder einem unzuverlässigen Compiler zu tun, sondern einfach mit schlechtem Code, weil with drin benutzt wird...

Ohne with ist ganz klar, dass der Reihe nach von nahe dran (lokale Variablen, ...) angefangen nach außen (aktuelles Objekt, globale Variablen, ...) gesucht wird. Und das verhält sich auch immer gleich.

Für diesen Beitrag haben gedankt: Mathematiker
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Fr 02.08.13 23:24 
Zitat:
ist das "wahrscheinlich".
Das wahrscheinlich bezog sich auf die Sache mit anderen Klassen. Sofern du in Methoden des Formulars bist und kein with...do benutzt, bezieht sich self (oder eben weglassen) immer auf selbiges Formular.

Das Gegenteil ist der Fall :D

Schreibst du sowas:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TMeinFormular.ResetHeight()
begin
  MeinFormular.Height = 700;
end;

Dann ist das eigentlich falscher Code. Weil wenn ich das hier mache:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TMainForm.ButtonClick(Sender: TObject)
var
  formular: TMeinFormular;
begin
  formular := TMeinFormular.Create();
  formular.ResetHeight();
end;

Dann produziert das entweder eine AV oder es macht etwas falsches.

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 02.08.13 23:29 
Hallo jaenicke,
Hallo jfheins,
ihr habt mich überzeugt. Da ich with seit einiger Zeit nicht mehr verwende, gibt es also keine Probleme.
Danke an beide.
Als nächstes werde ich einige Formulare etwas umstellen und die Fehler entfernen müssen, da ich jedes Mal so etwas wie MeinFormular.Caption ... nutze. :autsch:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein