Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Operator oder Semikolon fehlt - eine Lösung (https://www.delphipraxis.net/210888-operator-oder-semikolon-fehlt-eine-loesung.html)

cltom 26. Jun 2022 14:58

Delphi-Version: XE2

Operator oder Semikolon fehlt - eine Lösung
 
Hej,

ein Thema, das mehrfach aufgetaucht und durch die Suche gut abgedeckt ist, dennoch eine Ursache, die mit gerade passiert ist. Keine offene Frage also sondern gleich die Lösung für solche, die via Suche drüberstolpern:

Hatte in einem Form mit gut 8.000 Zeilen Code plötzlich 40+ Fehler beim Compilieren, unter anderem Operator oder Semikolon fehlt. Die Stelle, an der der Fehler auftrat, war (erst mal) nichtssagend und auch alle Prozeduren davor waren in Ordnung.

Um es kurz zu machen: ich hatte versehentlich einer Komponente auf der betreffenden Form den Namen "Length" gegeben (es hätte die Caption sein sollen). Im Gegensatz zu Schlüsselwörtern wurde der Name akzeptiert, hat aber natürlich dazu geführt, dass die Verwendung von Length im gewünschten Sinne (Länge eines dyn. arrays etwa) nicht mehr funktioniert durch die Deklaration von:

Delphi-Quellcode:
  Length : TLabel;
Nachher ist es logisch, wenn man es bemerkt. :stupid:

Gruß
tom

Aviator 26. Jun 2022 18:42

AW: Operator oder Semikolon fehlt - eine Lösung
 
Deshalb macht es Sinn mit Präfixen oder Suffixen zu arbeiten. Ich priorisiere Präfixe, da diese dann in der Autovervollständigung besser ersichtlich sind.

Also in deinem Fall dann
Delphi-Quellcode:
lblLength: TLabel;
. Für Edit-Felder kann man
Delphi-Quellcode:
edt
, für ComboBoxen
Delphi-Quellcode:
cbb
, usw. nehmen. CnPack hat da einen Wizard für der hier die Arbeit erleichtert.

cltom 26. Jun 2022 18:48

AW: Operator oder Semikolon fehlt - eine Lösung
 
Zitat:

Zitat von Aviator (Beitrag 1507882)
Deshalb macht es Sinn mit Präfixen oder Suffixen zu arbeiten. Ich priorisiere Präfixe, da diese dann in der Autovervollständigung besser ersichtlich sind.

Also in deinem Fall dann
Delphi-Quellcode:
lblLength: TLabel;
. Für Edit-Felder kann man
Delphi-Quellcode:
edt
, für ComboBoxen
Delphi-Quellcode:
cbb
, usw. nehmen. CnPack hat da einen Wizard für der hier die Arbeit erleichtert.

Völlig klar, uneingeschränkte Zustimmung. ich selbst benenne visuelle Komponenten "immer" mit "lbl_"/"edt_"/"btn_"/... Wie gesagt, die Benennung war hier irrtümlich, da ich statt der Caption den Namen eingegeben hatte.

himitsu 26. Jun 2022 19:45

AW: Operator oder Semikolon fehlt - eine Lösung
 
Der Typ im Name ist schon bissl blöd.
Tauscht man mal die Komponente, passt womöglich das nicht mehr zusammen.

Und gerade bei Sowas wären doch Suffixe besser,
da Zusammengehöriges (funktional, nicht nach Typ) dann auch zusammen steht,
also alles was mit Längen zu tun hat, fängt auch mit Länge an.

Wobei ... wessen Länge soll das denn sein?
Siehst du, schon ist klar, dass der Name bissl blöd ist.
Das WAS vor die Länge und schon gibt es keine Probleme mehr.

KodeZwerg 26. Jun 2022 20:14

AW: Operator oder Semikolon fehlt - eine Lösung
 
[OT]
Ich tendiere meist zu Präfix Nutzung, die je nach Formularaufbau noch untergliedert ist, ein Beispiel, ein Panel mit verschiedenen Controls, dann bekommen die inneren Controls nach dem "Haupt"-Präfix (lbl, cbb etc..) noch ein weiteres Präfix vom Panel wo sie drinnen hocken.
Aber ich denke das dies reine Geschmackssache ist, so wie man es halt gewohnt ist (für mich ist es so relativ einfach alle Controls eines bestimmten Typs zu listen und durchzugehen).
[/OT]

Uwe Raabe 26. Jun 2022 21:32

AW: Operator oder Semikolon fehlt - eine Lösung
 
Zitat:

Zitat von himitsu (Beitrag 1507884)
Der Typ im Name ist schon bissl blöd.
Tauscht man mal die Komponente, passt womöglich das nicht mehr zusammen.

Deswegen verwende ich auch nicht den Typ des Controls, sondern seine Verwendung.

Ein dspHeight ist ein Control, das den Height-Wert darstellt. Das kann ein TLabel oder ein TStaticText, aber auch ein TProgressBar, TDBText, TRzURLLabel oder TRzLEDDisplay sein.
Ebenso ist ein edtHeight ein Control, mit dem man den Height-Wert editieren kann. Das kann ein TEdit, TButtonedEdit oder ein TDBMemo, aber auch eine TComboBox (Style=csDropDown), eine TNumberBox, aber auch ein TTrackBar sein.
Weiter steht selHeight für ein Control, mit dem man den Height-Wert aus einer Reihen von Möglichkeiten selektieren kann. Das geht über eine TComboBox (Style=csDroDoenList), eine TListBox, eine TRadioGroup oder manchmal auch über TCategoryButtons sein. Allerdings ist lblHeight dann wiederum das Control, das zu einem der vorigen dsp, edt oder sel Controls angibt, was dort verändert wird (der Height-Wert).

Auf eine Anregung von Jeroen Pluimers hin mache ich in letzter Zeit ein paar Experimente mit dem Postfix. Mal sehen was dabei herauskommt.

Renate Schaaf 27. Jun 2022 01:47

AW: Operator oder Semikolon fehlt - eine Lösung
 
Zitat:

Deswegen verwende ich auch nicht den Typ des Controls, sondern seine Verwendung.
Das gefällt mir. Jetzt nur noch die Projekte entsprechend ändern :(.

himitsu 27. Jun 2022 08:09

AW: Operator oder Semikolon fehlt - eine Lösung
 
Dort, wo das richtige "Length" genutzt wird, könntest du stattdessen auch einfach nur System.Length verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz