Programm-Code 64 Bit schreiben für Windows + Linux

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
PeterS
Beiträge: 170
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von PeterS »

theo hat geschrieben: Sa 22. Nov 2025, 10:03 Ein Tipp wäre noch: Versuche auch auf Windows ohne die Unit "windows" auszukommen.
Nimm stattdessen die units LCLIntf, LCLType und LMessages, wenn noch Winapi Code vorhanden ist.
Dort sind viele Winapi Funktionen/Typen als x-platform Varianten vorhanden.
Man kann es einfach mal ausprobieren, ob es damit und ohne die Unit "windows" auch kompiliert.
Vielleicht geht nicht alles auf Anhieb, aber das spart sicher mal Arbeit.
Die Unit Windows habe ich hoffentlich überall schon rausgeworfen - sehe ich ja dann.
Aber ich habe - weil nicht gebraucht - z.B. immer die Sektion {$IFDEF UNIX} rausgelöscht, in meinen Projekt-Dateien "program".

Ich werde wohl einfach mal das "alte" Projekt laden
(natürlich eine komplette Kopie, damit ich mir nichts zerschreddere ..)
und dann schauen, was alles bemeckert wird. Erstmal mit Laz64 unter Windows.

Auf der anderen Seite sehe ich daß das "neue Projekt" unter 4.4 schon wieder
etwas anders aussieht als ältere Projekte.
In "program xxx" zum Beispiel ist die Sektion

Code: Alles auswählen

begin
... 
end
schon wieder länger geworden.

Die automatisch angelegte "unit1.pas" (für => Form1 :TForm1) sieht dagegen völlig unverändert aus.

PeterS
Beiträge: 170
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von PeterS »

hum4n0id3 hat geschrieben: Fr 21. Nov 2025, 23:47 Was ich als Tipp für mitgeben würde, wenn man Software für mehrere Betriebssystem entwickeln will, hört auf Software für mehrere Betriebssysteme zu entwickeln. Da geht man mit der Zeit einfach unter.
Ich habe meine User, die nach einer Linux-Version fragten, auch immer vertröstet, wegen dem Aufwand,
den Source-Code für zwei Plattformen zu pflegen und zu testen. Nun hänge ich aber nicht mehr so sehr
an Musiksoftware, und damit VST-Plugins und anderen Windows-Only-Geschichten.

Jetzt habe ich wenigstens einen guten Grund, mal was auf Linux zu machen,
weil mein Notebook nicht Win11-tauglich und damit Windows-Schrott ist.

Wenn's ein Erfolg wird, gut. Wenn nicht, dann Pech.
Mit dem alten Win10 will ich aber lieber nicht mehr ins Internet, die nächsten Jahre,
und mein funktionsfähiges Notebook läuft jetzt anscheinend ohne Zicken mit Linux. :)

MmVisual
Beiträge: 1620
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.2 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von MmVisual »

Die meiste Arbeit bei der Umstellung machte mir das Design, also die Steuerelement auf dem Formular.
Die musste ich alle gegenseitig mit dem Ankereditor verbinden, dann hat sich das Design schön in der Linux Umgebung angepasst.
EleLa - Elektronik Lagerverwaltung - www.elela.de

hum4n0id3
Beiträge: 350
Registriert: So 5. Mai 2019, 15:23

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von hum4n0id3 »

theo hat geschrieben: Sa 22. Nov 2025, 00:08 Aber das ist wohl Ansichtssache.
Genau. Darum ging es mir und sollte keine Kritik an dir sein. Jemand liest, das man das eine oder andere nicht braucht und ich wollte nur sagen, da gibt es jemand der es auch anders sieht. Je nach Sprache und Werkzeuge ist ein anderer Sachverhalt zu beachten. Während eine Software interpretiert wird, fallen im Idealfall keine Meldungen auf. Während eine Software kompiliert wird, werden viele Informationen geschrieben.

hum4n0id3
Beiträge: 350
Registriert: So 5. Mai 2019, 15:23

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von hum4n0id3 »

PeterS hat geschrieben: Sa 22. Nov 2025, 12:52
hum4n0id3 hat geschrieben: Fr 21. Nov 2025, 23:47 Was ich als Tipp für mitgeben würde, wenn man Software für mehrere Betriebssystem entwickeln will, hört auf Software für mehrere Betriebssysteme zu entwickeln. Da geht man mit der Zeit einfach unter.
Ich habe meine User, die nach einer Linux-Version fragten, auch immer vertröstet, wegen dem Aufwand,
den Source-Code für zwei Plattformen zu pflegen und zu testen.
Wenn ich Nutzer habe die nachfragen und den Aufwand bezahlen, würde ich das auch mehrere Versionen pflegen, je nach Nachfrage. Aber sitzen, zuerst eine Linux-Version bauen und dann Windows-Version, oder umgekehrt und dann findet man einen Bug und...

Hat hier schon jemand geschrieben das Lazarus 99% des Codes auch auf dem anderen OS ausführt. Java wirbt auch damit und wenn es nach mir geht, lügen alle :mrgreen: Nur Fakt ist, wenn du dann einen Port wirklich brauchst und zb. Lazarus nutzt, hast du im Idealfall sehr wenig nacharbeiten und kannst halt anbieten. Anders wenn du vielleicht deine Software mit Visual Studio entwickelt hast.

TSchnuckenbock
Beiträge: 130
Registriert: Do 20. Jul 2017, 23:47
OS, Lazarus, FPC: Win7 und Win10
CPU-Target: xxBit
Wohnort: Südheide (Schnuckenland)

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von TSchnuckenbock »

Ich hab' die Umstellung auf 64 Bit auch noch vor mir, allerdings mit existierenden Delphi-Programmen.
Dazu war mir im Hinterkoppe, daß Embacadero dazu irgendwo eine Info-Seite hat, was man bei der Konvertierung von 32 Bit auf 64 Bit beachten sollte. Das ist diese hier:

https://docwiki.embarcadero.com/RADStud ... it-Windows

Da du die Windows aus der Uses wohl schon erfolgreich elemeniert hast, ist der SendMessage/PostMessage-Krams für dich nicht relevant, aber mir graut davor, da in unseren Projekten das Windows-Message-System exzessiv genutzt wurde.
Ich will die Umstellung dann zum Anlass nehmen, SendMessage/PostMessage-Krams so weit wie möglich rauszuwerfen und z.B. durch simple Events zu ersetzen. Bei SendMessage-Konstrukten sollte das gehen, aber die PostMessage-Sache wurden teilweise zur Entkopperlung eingesetzt. Das wird frickelig werden.
Mein Vorgesetzter ist übrigens heiß drauf, unsere Software irgendwann mal auf Linux zu haben...aber ich erkläre ihm immer, wie aufwändig das wäre und ich bin ja schon so alt. ;-)
Schauen wir mal.

MmVisual
Beiträge: 1620
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.2 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von MmVisual »

Ich weis jetzt zwar nicht so genau was ihr mit den PostMessage/SendMessage so alles treibt...

Bei Lazarus kann sich eigene Botschaften in die MessageQueue mit dem Befehl "Application.QueueAsyncCall(...)" absetzen. Damit wird diese hinten angestellt und wenn alles zuvorige abgeabrietet ist wird diese Botschaft dann ausgeführt.
Übergeben wird ein Zeiger auf eine Funktion und einen Zeiger auf ein Datenobjekt.

Das nutze ich relativ häufig für alles das Asynchron abgearbeitet werden kann und soll.
Beispiel:
Mit "DoLog(Text)" erzeuge ich so eine Botschaft, die ein Record mit den Daten erzeugt. Damit wird die eigentliche Funktion mit dem Logging nicht ausgebremst.
Irgendwann kommt das dann dran und ich lasse damit eine Funktion aufrufen, die dann den Log ausführt. Nicht vergessen: den zuvor mit NEW(<Record>) erzeugen Speicher wieder mit DISPOSE(<Zeiger auf Record>) frei geben, damit kann man jede Menge Daten problemlos übergeben.
Das ist in Lazarus drin und funktioniert ebenfalls unter Linux.
Ideal geeignet für Applikations interne Kommunikation und sogar Threadsave.
EleLa - Elektronik Lagerverwaltung - www.elela.de

PeterS
Beiträge: 170
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von PeterS »

TSchnuckenbock hat geschrieben: Sa 22. Nov 2025, 17:19 Ich hab' die Umstellung auf 64 Bit auch noch vor mir ..
Das Compilieren und Starten meines aktuellen Programms unter Lazarus64
hat heute Abend erstaunlicherweise ohne auch nur eine einzige Fehlermeldung auf Anhieb geklappt. :shock:

Keine Ahnung wie ich das geschafft habe.
Ob das Win64-Programm "keinen Blödsinn macht", muss ich dann mal in Ruhe testen .. :wink:
TSchnuckenbock hat geschrieben: Sa 22. Nov 2025, 17:19 Da du die Windows aus der Uses wohl schon erfolgreich elemeniert hast, ist der SendMessage/PostMessage-Krams für dich nicht relevant, aber mir graut davor, da in unseren Projekten das Windows-Message-System exzessiv genutzt wurde.
Essig war's - habe heute Abend die unit WINDOWS in 5 meiner Quelldateien gefunden :(

Und ja, ich nutze intensiv PostMessage() um Processing und Visualisierung von SerialPort- resp. RS485-To-ETH-Input zu entkoppeln.
Unter Windows hatte das gut geklappt, und das Programm blieb so flüssig und bedienbar.

Benutzeravatar
theo
Beiträge: 11079
Registriert: Mo 11. Sep 2006, 19:01

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von theo »

Wie oben gesagt: Postmessage und Sendmessage gibt es schon in der Unit LCLIntf.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7014
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von af0815 »

PeterS hat geschrieben: Sa 22. Nov 2025, 23:59 Und ja, ich nutze intensiv PostMessage() um Processing und Visualisierung von SerialPort- resp. RS485-To-ETH-Input zu entkoppeln.
Unter Windows hatte das gut geklappt, und das Programm blieb so flüssig und bedienbar.
Vielleicht hier etwas Input, weil Grundlegend gehen tut es unter Linux auch.

https://wiki.freepascal.org/Multithread ... read_Class siehe Kapitel SendMessage/PostMessage

und ein Artikel von MvC https://www.freepascal.org/~michael/art ... thread.pdf siehe Queuing methods
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PeterS
Beiträge: 170
Registriert: So 22. Feb 2015, 11:36
OS, Lazarus, FPC: L 3.8
CPU-Target: win32

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von PeterS »

theo hat geschrieben: So 23. Nov 2025, 00:11 Wie oben gesagt: Postmessage und Sendmessage gibt es schon in der Unit LCLIntf.
Hallo Theo, das hier ..
theo hat geschrieben: Sa 22. Nov 2025, 10:03 Ein Tipp wäre noch: Versuche auch auf Windows ohne die Unit "windows" auszukommen.
Nimm stattdessen die units LCLIntf, LCLType und LMessages, wenn noch Winapi Code vorhanden ist.
Dort sind viele Winapi Funktionen/Typen als x-platform Varianten vorhanden.
Man kann es einfach mal ausprobieren, ob es damit und ohne die Unit "windows" auch kompiliert.
Vielleicht geht nicht alles auf Anhieb, aber das spart sicher mal Arbeit.
.. habe ich mir auf den ToDo-Zettel gesetzt !

Ich muss im Detail schauen, welche anderen Windows-Only-Dinge in meinem Code "versteckt" sind.
Ich weiß daß ich u.a. mit der Höhe der Taskleiste in Windows 10/11 herumgekämpft habe, um Fenster zu positionieren,
da fragt man ja dann Windows-APIs direkt ab, um Abmessungen zu bekommen.
Diesen Code-Anteil werde ich wohl mit {$IFDEF} Blöcken wegbekommen.

Aber ist ja nicht eilig, die Win32-EXE läuft ja wie ein alter Käfer, und es ist keine Not .. :D

Da ich noch nie ernsthaft mit LINUX irgendwas gemacht habe, ist die größte Hürde,
mich erstmal zurecht zu finden. Habe gestern länger suchen müssen bis ich überhaupt
den Installations-Ordner von LAZARUS gefunden habe. Und wie kriege ich COMPONENTS manuell da rein ?
Ich habe keine Schreibrechte und darf da zu Fuß keine Ordner anlegen, oder was hin kopieren.
Alles typische Einsteiger-Probleme, würde mir auf einem Apfel-Rechner ja nicht anders gehen.

Aber man kommt sich schon reichlich doof vor, wenn man jahrzehntelang auf Windows (ab 3.11)
und zeitweise AMIGA oder ATARI unterwegs war, und jetzt auf LINUX nichtmal die einfachsten Dinge hinbekommt :(

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7014
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von af0815 »

PeterS hat geschrieben: So 23. Nov 2025, 11:07 Aber man kommt sich schon reichlich doof vor, wenn man jahrzehntelang auf Windows (ab 3.11)
und zeitweise AMIGA oder ATARI unterwegs war, und jetzt auf LINUX nichtmal die einfachsten Dinge hinbekommt :(
Ist normal, wenn man ein Gänger zwischen den Welten ist. Vor allen, wenn man mit Linux nicht unbedingt was am Hut gehabt hat. Das gibt sich aber im Laufe der Zeit. Mir hat es geholfen, kleinere Snippet unter Linux (und Windows) zu machen, wo ich in Ruhe das testen konnte. Ich habe mittlerweile 100erte so Snippets für alles Mögliche.

Später kommen da die feinen, aber gemeinen Unterschiede noch dazu. Das kann man aber auch unter einem BS alleine haben, wenn halt wer wieder "wer bastelt mit" spielt oder sagt, eine Technik ist EOL. Auch ein Redmonder Konzern hat da im Video Bereich mal heilige Kühe geschlachtet und musste die mit viel Aufwand wiederbeleben (zumindest teilweise).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 11079
Registriert: Mo 11. Sep 2006, 19:01

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von theo »

PeterS hat geschrieben: So 23. Nov 2025, 11:07 Habe gestern länger suchen müssen bis ich überhaupt
den Installations-Ordner von LAZARUS gefunden habe. Und wie kriege ich COMPONENTS manuell da rein ?
Mein Tipp: Installiere mit fpcupdeluxe unter dein "/home/peter" (oder wie das bei dir heisst).
Die Systemweite Installation finde ich in diesem Fall nicht so praktisch.

https://github.com/LongDirtyAnimAlf/fpc ... ag/v2.4.0h

MmVisual
Beiträge: 1620
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.2 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von MmVisual »

PeterS hat geschrieben: So 23. Nov 2025, 11:07Habe gestern länger suchen müssen bis ich überhaupt
den Installations-Ordner von LAZARUS gefunden habe. Und wie kriege ich COMPONENTS manuell da rein ?
Ich habe keine Schreibrechte und darf da zu Fuß keine Ordner anlegen, oder was hin kopieren.
Alles typische Einsteiger-Probleme, würde mir auf einem Apfel-Rechner ja nicht anders gehen.
Ich finde, das Linux ist in diesem Punkt wirklich komisch.

Allerdings ist das Grundproblem nicht Linux, sondern das Installationspaket von Lazarus/FPC.
Bei Lazarus war es schon immer so, dass man unter Components neue Pakete braucht und die Lazarus EXE immer wieder neu übersetzen muss.

Der Bug ist eigentlich ganz einfach: Das Setup Paket (RPM und DEB Pakete)von Lazarus muss FPC + Lazarus in so einen Ordner installieren, bei dem der User die vollen Rechte hat.
FpcUpDeluxe macht das richtig, so dass man Lazarus als Entwickler ordentlich nutze kann.

Ich weis jetzt nicht warum das den Lazarus Entwicklern bisher noch nicht aufgefallen ist?
Das ist ja ein Bug, das schlussendlich Lazarus für Neueinsteiger auf Linux unbrauchbar macht.

Bei Windows wird ja auch Lazarus standardmäßig vom Setup-Paket nicht in C:\Programme\... sondern direkt in C:\Lazarus installiert und man hat damit die Rechte Probleme weg.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7014
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Programm-Code 64 Bit schreiben für Windows + Linux

Beitrag von af0815 »

MmVisual hat geschrieben: So 23. Nov 2025, 12:07 Ich weis jetzt nicht warum das den Lazarus Entwicklern bisher noch nicht aufgefallen ist?
Das ist ja ein Bug, das schlussendlich Lazarus für Neueinsteiger auf Linux unbrauchbar macht.
Es ist kein Bug, sondern einfach das Betriebssystem, das nicht dafür ausgelegt ist, das sich Programme selbst erstellen können. Es ist unter Windows genaugenommen dasselbe, nur kommt man dort mit dem (mir ein Graus) Kniff aus, das ganze unter Lazarus zu pressen.
Die Paketsysteme von den Linux Distributionen schreiben halt die Orte wohin installiert wird vor. Was aber nur für fertige Apps ok ist. Nicht für dynamische selbsterstellende Apps. Lazarus ist da eher ein Novum.

fpcupdeluxe wählt deswegen den Weg aus dem Dilemma, das man dort es installieren kann, wo man will bzw. die Rechte hat. Nur ist fpcupdeluxe nichts magisches, macht eigentlich alles, was man auch per Hand machen könnte. Zusätzlich hat aber Alfred die ganzen buildtools in mühevoller Arbeit zusammengetragen und auch bereitgestellt. Wie gesagt, man braucht es nicht, ist aber oft viel bequemer :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten