Das ist absolut notwendig!
Insbesondere wenn die Unit Bestandteil eines Packages ist. Lazarus schmeisst die unmöglichsten Fehlermeldungen, wenn zwei Packages Dateien mit gleichem Namen haben.
Das ist absolut notwendig!
Es hat erstmal nichts direkt mit Windows vs. Linux zu tun, sondern damit, ob die meisten Dateisysteme auf dem jeweiligen Betriebssystem Case Insensitive, Case Preserving oder Case Sensitive sind.siro hat geschrieben: Sa 13. Mär 2021, 15:27 @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.
Seit FPC 3.0.0 kann man auch noch Dotted Unit Names nutzen: datalogger.uart.pas. Seit 3.2.0 kann man auch Default Namespaces angeben (also hier zum Beispiel -FNdatalogger).fliegermichl hat geschrieben: So 14. Mär 2021, 09:01Das ist absolut notwendig!
Insbesondere wenn die Unit Bestandteil eines Packages ist. Lazarus schmeisst die unmöglichsten Fehlermeldungen, wenn zwei Packages Dateien mit gleichem Namen haben.
Was aber kein Grund ist, das nicht zu ändern. Zumal es inkonsistent umgesetzt ist: Kleinschreibung und Großschreibung werden zwar differenziert, aber in der Dateiliste stehen sie wieder gemischt und nicht in Reihenfolge ihres ASCII-Wertes.PascalDragon hat geschrieben: Di 16. Mär 2021, 14:03 Das hat nichts mit Linux zu tun, sondern geht weiter zurück, da bereits das alte Unix File System Case Sensitive war.
Muss man nicht. Man konvertiert Suchstring und Fileliste zu Uppercase und kann direkt vergleichen.PascalDragon hat geschrieben: Di 16. Mär 2021, 14:03 Es hat dabei den Vorteil, dass du einerseits Groß-/Kleinschreibung in Dateinamen haben kannst, aber trotzdem eine schnelle Dateisuche haben kannst, da du nicht in verschiedenen Schreibweisen schauen musst
Mag sein, aber es gibt auch keinen Grund es zu ändern.Timm Thaler hat geschrieben: Di 16. Mär 2021, 16:25Was aber kein Grund ist, das nicht zu ändern.PascalDragon hat geschrieben: Di 16. Mär 2021, 14:03 Das hat nichts mit Linux zu tun, sondern geht weiter zurück, da bereits das alte Unix File System Case Sensitive war.
Das ist aber auch nur wie es sich mittlerweile repräsentiert. Ursprünglich hat ls es einfach nur in der Reihenfolge rausgehauen, wie sie im Dateisystem waren. Dann gab es ne Phase (die ich sogar auch noch mitbekommen habe), wo es tatsächlich nach ASCII Wert sortiert war. Heutzutage ist der Standard von ls die Liste Case Insensitive zu sortieren.Timm Thaler hat geschrieben: Di 16. Mär 2021, 16:25 Zumal es inkonsistent umgesetzt ist: Kleinschreibung und Großschreibung werden zwar differenziert, aber in der Dateiliste stehen sie wieder gemischt und nicht in Reihenfolge ihres ASCII-Wertes.
Und wie ich geschrieben habe mag das zwar mit ASCII sehr einfach gehen, aber bei Unicode gibt es da gewisse Schwierigkeiten.Timm Thaler hat geschrieben: Di 16. Mär 2021, 16:25Muss man nicht. Man konvertiert Suchstring und Fileliste zu Uppercase und kann direkt vergleichen.PascalDragon hat geschrieben: Di 16. Mär 2021, 14:03 Es hat dabei den Vorteil, dass du einerseits Groß-/Kleinschreibung in Dateinamen haben kannst, aber trotzdem eine schnelle Dateisuche haben kannst, da du nicht in verschiedenen Schreibweisen schauen musst
Code: Alles auswählen
function UTF8CompareStrCollated (const S1, S2: string): PtrInt;
Das stimmt, Usability war bei Linux nie ein Grund was zu ändern.PascalDragon hat geschrieben: Mi 17. Mär 2021, 09:17 Mag sein, aber es gibt auch keinen Grund es zu ändern.
Nur weil es am Anfang schlecht war muss man das nicht zum Standard machen. Computer sind für Menschen da, nicht umgekehrt.PascalDragon hat geschrieben: Mi 17. Mär 2021, 09:17 Das ist aber auch nur wie es sich mittlerweile repräsentiert. Ursprünglich hat ls es einfach nur in der Reihenfolge rausgehauen, wie sie im Dateisystem waren.
Unicode hat seit 30 Jahren Casefold-Attribute. Das sagt Dir sogar genau, welches Zeichen die Groß/Klein-Entsprechung eines Zeichens ist. Im Gegensatz zu ASCII.PascalDragon hat geschrieben: Mi 17. Mär 2021, 09:17 Und wie ich geschrieben habe mag das zwar mit ASCII sehr einfach gehen, aber bei Unicode gibt es da gewisse Schwierigkeiten.
Das hängt aber eben von der Locale/Collation ab. Im Deutschen verhält es sich anders als im Türkischen zum Beispiel. Das heißt entweder machst du's in der Anwendung, wo du auch wirklich die Locale verfügbar hast (quasi das was ls macht) oder du machst es im Dateisystemtreiber, dann hast du nicht notwendigerweise die Locale verfügbar und verlässt dich auf die Case Conversion Tables, die im Dateisystem integriert sind (NTFS, HFS+, APFS) und hast dann eventuell Sortierungen, die für den Anwender verwirrend sind.Timm Thaler hat geschrieben: Mi 17. Mär 2021, 10:05Unicode hat seit 30 Jahren Casefold-Attribute. Das sagt Dir sogar genau, welches Zeichen die Groß/Klein-Entsprechung eines Zeichens ist. Im Gegensatz zu ASCII.PascalDragon hat geschrieben: Mi 17. Mär 2021, 09:17 Und wie ich geschrieben habe mag das zwar mit ASCII sehr einfach gehen, aber bei Unicode gibt es da gewisse Schwierigkeiten.
Code: Alles auswählen
program KEL103_V4;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, frm_main, frm_batttest, frm_curves;
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TFormMain, Form_Main);
Application.CreateForm(TForm_Batterietest, Form_Batterietest);
Application.CreateForm(TFormCurves, Form_Curve);
Application.Run;
end.
Die lpr-Datei ist eine "normale" Pascal-Datei, die durch die Endung .lpr hervorgehoben ist, weil sie die zentrale "Programm"-Datei ist. Der Dialog "Datei" > "Speichern unter" ist eigentlich für Units gedacht, und diese haben die Endung .pas oder .pp. Wenn du hier die lpr-Datei unter anderem Namen speicherst, erhält sie somit die Endung .pas (oder .pp) - das ist aber kein Problem, Lazarus akzeptiert das, solange die lpi-Datei vorhanden ist, in der alle Projektdateien stehen, und der Inhalt bleibt unverändert. Allerdings wäre mir das viel zu unübersichtlich, weil diese wichtige Datei dann nicht mehr von den Units zu unterscheiden ist.siro hat geschrieben: Fr 19. Mär 2021, 18:11 Wenn ich die Datei lade und dann "Speichern Unter" zum Beispiel main ablege,
dann wird aus der .lpr Datei eine .pas Datei.
Wenn ich nun in der IDE Project .lpr Datei anzeigen klicke, öffnet er die Datei main.pas
Eine .lpr benötigt er anscheinend garnicht mehr, ich hab die mal weggelöscht.
Genau, die lpi-Datei ist DIE Projekt-Datei. Allerdings kannst du das Projekt auch über die lpr-Datei öffnen (oder die umbenannte pas-Datei, sofern im Kopf das Schlüsselwort "program" steht). Das funktioniert auch, wenn die lpi-Datei verloren gegangen ist; allerdings musst du alle Angaben wieder neu aufbauen: also welcher Projekt-Typ das ist, welche Packages zum Projekt gehören und welche Dateien, welche Compiler- und sonstigen Einstellungen gelten sollen.siro hat geschrieben: Fr 19. Mär 2021, 19:40 Dies ist also die "lebenswichtige Datei" für das Projekt.