Formulare und deren Namen

Für Fragen von Einsteigern und Programmieranfängern...
siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Formulare und deren Namen

Beitrag von siro »

Hallo zusammen,

ich versuche grade etwas mehr Übersichtlichkeit in mein Programm zu bringen.
Die Dateien für die Formulare heissen ja immer automatisch "Unit[x].pas"
Wobei [x] die Formularnummer ist.

irgendwann hat man etliche Dateien: unit1,unit2,unit3 usw.
Was ist nun was ?

Nun habe ich die unit1 also Formular 1 geladen und speichere sie unter "uFormMain"
Datei Speichern unter.....

Lazarus macht aber aus allen Buchstaben "Kleinbuchstaben" und dann heisst die Datei
uformmain.pas , was mich eher an "ufo"s erinnert....Spass muss sein :)

so habe ich die Dateien im Explorer mal umbenannt in
uFormMain.pas
uFormMain.lfm

lade ich mein Programm, steht da aber wieder
unit uformmain;

Also muss bzw. kann, das ist ja keine Pflicht, es hier auch ändern.

unit uFormMain;
Das bleibt dann auch glücklicherweise so.

Wie verwaltet ihr denn eure Namen wenn man mehrere Formulare hat ?

Form2.Show finde ich nicht sehr aussagekräftig.
aber FormAkkuParams.Show spricht schon für sich selbst.

Dann sollten die Dateien aber auch annähernd gleiche Namen haben.
Natürlich dürfen sie nicht den gleichen Namen haben, das funktioniert nämlich nicht
aber uFormAkkuParams.pas sowie uFormAkkuParams.lfm haben dann wieder eine eindeutige Zugehörigkeit.
im Programm und auch dem Datenträger.

die eigentlich Frage kam jetzt aber etwas zu kurz:
Warum speichert Lazarus IMMER die Dateien in Kleinbuchstaben, obwohl ich das anders eintrage bei "Speichern unter" ?

Achso, evtl. muss ich erwähnen: Ich arbeite mit Windows 64Bit und Lazarus 2.0.8

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Formulare und deren Namen

Beitrag von Ich934 »

Lazarus macht das, weil das so eingestellt ist, um Probleme z.B. unter Linux zu verhindert. Dort spielt die Groß- und Kleinschreibung eine Rolle. Das könntest du aber umstellen... Siehe auch hier.

Das mit den UFO liegt an dir. ;-) Meine Formulare heißen historisch bedingt immer etwas mit frm, also z.B. frmMain. Damit ergibt sich der Dateiname ufrmmain.pas.
Tipp für PostgreSQL: www.pg-forum.de

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Formulare und deren Namen

Beitrag von siro »

Oh, vielen Dank für deine schnelle Hilfe,

genau das habe ich gesucht:
Namensvergabe.jpg
Namensvergabe.jpg (75.21 KiB) 2113 mal betrachtet

mit dem frm als Dateiname gefällt mir auch sehr gut,
wenn da kein Copyright drauf ist, würde ich das auch gern verwenden, gute Idee. :wink:

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Formulare und deren Namen

Beitrag von fliegermichl »

ich häng das u immer hinten dran.
Mainform : TMainform ist in mainformu.pas gespeichert.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Formulare und deren Namen

Beitrag von wp_xyz »

Den Automatismus mit der Kleinschreibung auszuschalten, würde ich nur dann tun, wenn ich sicher bin, dass das Programm NIE unter Linux/macOS/... verwendet wird.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Formulare und deren Namen

Beitrag von wp_xyz »

siro hat geschrieben:
Sa 13. Mär 2021, 10:35
so habe ich die Dateien im Explorer mal umbenannt in
uFormMain.pas
uFormMain.lfm

lade ich mein Programm, steht da aber wieder
unit uformmain;
Eine Unit hat in Lazarus zwei Namen:
  • den Dateinamen: den siehst du im Explorer. Wiegesagt, es ist ratsam, den bei der Schreibweise in Kleinbuchstaben zu belassen.
  • den Unitnamen: der steht im Kopf der Unit. Das ist üblicherweise in der Schreibweise, die beim Speichern der Datei gewählt wurde. Also, wenn du eine Unit als "uMain.pas" gespeichert hast, erscheint hier "unit uMain"; im Explorer dagegen erscheint in der Defaulteinstellungen "umain.pas".
Die Schreibweise des Unitnamens ist für mich viel wichtiger als die Schreibweise des Dateinamens, da ich kaum mit den Dateien im Explorer arbeite, sondern meistens im Projekt-Inspektor, der bei mir standardmäßig rechts permanent geöffnet ist, um schnell eine Datei aus dem Projekt nachladen zu können. Dort wird die Schreibweise des Unitnamens gewendet, genauso wie im Tab-Reiter des IDE-Editors. Die Schreibweise des Unit-Namens kann man einfach ändern, indem man sie in der "unit ..."-Zeile im Editor anpasst. Die Datei muss neu geladen werden, damit sich die Schreibeweise im Projektinspektor und im Tab-Reiter anpasst.

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Formulare und deren Namen

Beitrag von Ich934 »

siro hat geschrieben:
Sa 13. Mär 2021, 11:00
mit dem frm als Dateiname gefällt mir auch sehr gut,
wenn da kein Copyright drauf ist, würde ich das auch gern verwenden, gute Idee. :wink:
Nein, da gibt es kein Copyright drauf. ;-) Das war die Konvention an meiner Schule an der ich die Ausbildung gemacht habe für VisualBasic-Formulare. Das ist einfach so drinnen. Du bist hier aber frei. Du kannst es auch "Fenster" nennen... ;-)

cu tb
Tipp für PostgreSQL: www.pg-forum.de

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Formulare und deren Namen

Beitrag von charlytango »

Ich934 hat geschrieben:
Sa 13. Mär 2021, 11:46
Das war die Konvention an meiner Schule an der ich die Ausbildung gemacht habe für VisualBasic-Formulare. Das ist einfach so drinnen.
Für mich fällt das unter Programmierstil und unter die sogenannte Ungarische Notation. Hat noch niemandem geschadet sich in etwa daran zu halten.
Das erleichtert mir den Umgang mit Namen und Variablen weil man nach einiger Zeit schnell sieht was man da gerade in der Hand hat.

z.B.

fMain.pas .... Dateiname für das Hauptformular
fmain ... heisst auch die Unit (unit fmain; )
frmMain .... wäre der Name des Hauptformulars (TfrmMain = class(TForm))

iAnzahl eine integer Zahl
slMeineStrings eine Stingliste

so in der Art halt ;)

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Formulare und deren Namen

Beitrag von kupferstecher »

Die automatische Umbennenung finde ich eine ziemliche Zumutung ("Bevormundung"). Die Unübersichtlichkeit in der Dateistruktur ist für mich der ausschlaggebende Grund die Funktion auszuschalten. Trotzdem gibt das ab und zu Probleme, bspw. bei der Neuinstallation von Lazarus oder wenn noch alte Dateien mit forcierter Kleinschreibung rumfahren.

Was bei der Verwendung von Groß- und Kleinschreibung im Dateinamen passieren kann, ist dass unter Linux die Unit nicht gefunden wird, wenn man sich im Quellcode beim "uses" nicht genau an die Groß-und Kleinschreibung hält. Unter Windows passiert nichts, weil die Groß- und Kleinschreibung dort eh nicht unterschieden wird.
Der FPC sucht immer auch unter dem Namen in Nur-Kleinschreibung, deshalb ist man durch die erzwungene Kleinschreibung unter Linux dann sicher.

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Formulare und deren Namen

Beitrag von siro »

Es sind ja doch einige Informationen hier geflossen.
dafür möchte ich mich erstmal bei euch bedanken.

@fliegermichl:
eine "u" hinten dran finde ich okay,
aber Du benennst die Formulare also auch um. Am Anfang habe ich immer das FormX gelassen.
so gross sind meine Programme nun auch nicht, dass es zu größeren Problemen führen könnte.

@wp_xyz:
Wenn man bei Linux anscheinend nur Kleinbuchstaben verwenden darf, gibt das natürlich nicht wirklich Sinn
die Dateien nach meinem Stil umzubenennen. Dann ist nämlich vorbei mit plattformunabhängig, stimme ich Dir vollkommen zu.
Das wuste ich garnicht, da ich noch nie mit Linux zu tun hatte. Seit ca. 35 Jahre Windows Qäulerei... :)
Mit den Unit Namen schaue ich mir gleich nochmal genauer an. Danke Dir für die ausführliuche Info.

@Ich934:
Okay, dann werde ich "frm" bevorzugen. Klingt für mich sehr plausibel.

@charlytange:
Das es eine "ungarische Notation gibt" kannte ich auch noch nicht,
aber ohne es zu wissen, habe ich mich schon ewig annähernd daran sogar gehalten.
Vermutlich weil ich auch öfters und gerne in fremden Code gestöbert habe, gewöhnt man sich das automatisch an.
Danke für die Info. Habe mir das grad mal bei google genauer angesehen.
Das bestätigt meinen Programmierstil.

@kupferstecher.
auch hier scheint es also eine besondere Eigenschaft von Linux zu sein, dass die Schreibweise des Unit Namens exakt übereinstimmen muss.
Ich fand das ja immer so besonders, das man bei Pascal eben nicht auf die Schreibweise achten muss.

Mit der Namensübereinstimmung kenne ich ja von "C"

Ich hatte vor einiger Zeit ein recht großes "C"Projekt transportiert, weil ich die Entwicklungsumgebung von
IAR auf LPCxpresso (basierend auf GNU Tools) umgestellt habe.
Es hatte "eeeeeetwas" gedauert bis ich dahinter kam, warum mein Compilat nicht funktionierte.

Bei IAR war es egal ob meine Datei .C ode .c heisst.
Bei der neuen Umgebung wurden aber Dateien .C (also das Grosse C wie bei Conrad) nicht mitcompiliert,
damit habe ich nicht gerechnet....Das grosse .C ist wohl für C++ reserviert.
Also auch eine Vorschrift, wie die Dateien benannt werden müssen, vermutlich sogar unabhängig vom Betriebssystem.

Habt Dank für eure Teilnahme, ich werde jetzt mein Konzept etwas anpassen bevor mein Projekt zu gross wird
und wünsche euch ein schönes Wochenende.

[edit]
Ja wp_xyz: das funktioniert wie Du es beschrieben hast, das habe ich grad ausprobiert:
Der Unitname im Quelltext wird entsrechend der Gross Kleinschreibung übernommen.
Der Dateiname selbst ist dann nur in Kleinbuchstaben.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Formulare und deren Namen

Beitrag von m.fuchs »

Bennungssystem meinerseits für das Projekt Super-Duper-Software.

Hauptfenster
  • Name: MainForm
  • Unitname: SuperDuperSoftware.Forms.MainForm
  • Dateiname: ./forms/superdupersoftware.forms.mainform.pas

Einstellungsfenster
  • Name: OptionsForm
  • Unitname: SuperDuperSoftware.Forms.OptionsForm
  • Dateiname: ./forms/superdupersoftware.forms.optionsform.pas
Dann erspart man sich auch Prä- und Suffixe wie u- oder -frm
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Formulare und deren Namen

Beitrag von fliegermichl »

m.fuchs hat geschrieben:
Sa 13. Mär 2021, 17:12
Bennungssystem meinerseits für das Projekt Super-Duper-Software.

Haputfenster
Genau. Das Haputfenster ist das wichtigste :-)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Formulare und deren Namen

Beitrag von m.fuchs »

fliegermichl hat geschrieben:
Sa 13. Mär 2021, 17:31
m.fuchs hat geschrieben:
Sa 13. Mär 2021, 17:12
Haputfenster
Genau. Das Haputfenster ist das wichtigste :-)
Zum Glück kein Kaputtfenster. :wink:
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Formulare und deren Namen

Beitrag von siro »

@m.fuchs:
So ganz abwegig ist die Idee garnicht, auch wenn das erstmal etwas gewöhnungsbedürftig aussieht mit den "langen" Namen....
Ich habe grad mal gesucht, wie oft ich die Datei main.c auf der Platte habe. 1315 Einträge....
oder project1.lpr 192 Einträge.

Wenn der Dateiname mal etwas länger ist, schadet das also nicht unbedingt... :wink:

Übrigens in den Dateinamen dürfen keine Bindestriche verwendet werden, Unterstriche sind jedoch erlaubt.
Erinnert mich grade an alte DOS Zeiten.
Mehrere Punkte in einem Namen sind aber erlaubt.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Formulare und deren Namen

Beitrag von Timm Thaler »

Das Hauptprogramm heißt wie das Projekt, und so wie die Exe mal heißen wird. Also

datalogger.lpi
datalogger.lpr
=> datalogger.exe oder datalogger für Linux oder datalogger.hex für AVR Controller

Die Units bekommen ein Kürzel zum Projekt, und einen sprechenden Namen.

dl_gui.pas // das Hauptformular und die direkten GUI-Routinen (Create, Close, xxOnClick...)
dl_uart.pas // RS232 Init, Ein- und Ausgabe
dl_config.pas // Programmkonfig laden und sichern, und das Formular für Konfig-Einstellungen
dl_graph.pas // die grafische Aufbereitung der Daten
dl_cvs.pas // Wegspeichern der Daten als Tabelle

oder für AVR Controller
dl_display.pas // LC-Display und Menuführung
dl_sensor.pas // die BME, SHT... Sensoren
dl_twi.pas // Subroutinen für I2C-Schnittstelle
dl_spi.pas // Subroutinen für SPI-Schnittstelle
dl_math.pas // AVR-spezifische Matheroutinen

Warum das Projektkürzel? Ich verwende in verschiedenen Programmen die gleichen Prozeduren, aber mit individuellen Änderungen. Da liegen mal die Pins am AVR Controller anders. Oder jedes Programm speichert natürlich andere Config-Daten. Da möchte ich die Units obwohl sie schon in unterschiedlichen Projektverzeichnissen liegen auch am Namen auseinanderhalten können.

Ich wüßte gar nicht, wie das anders gehen sollte, mit project.lpr und unit1-2-3.pas findet man doch nix wieder.

Antworten