Schon vor vielen, vielen Jahren hatte ich noch unter Suse 5.3 und 6.1 (!!!) einen Samba-Server geschäftlich am Laufen. Und immer wieder versuchte ich die Migration von Windows auf Linux auch auf dem Desktop: Es scheiterte stets! Und immer waren es (wahrscheinlich) viele winzige Kleinigkeiten, die für mich als Anfänger so große Hürden aufbauten, die ich einfach nicht überwinden konnte. Und immer wieder musste ich Linux frustriert in die Ecke legen.
Aber jetzt sieht's ganz anders aus

Unter Windows habe ich mit Lazarus das Programm "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ ) erstellt, das für mich mittlerweile zur zentralen "Wissens-Datenbank" während meiner Arbeiten am Computer geworden ist. Jeder interessante Link, dem ich begegne, und jede wichtige Textstelle, die ich lese, landet, versehen mit den passenden Schlagworten, in "meinem" Programm. Ich brauchte also "MyMemoryDB" dringend auch unter Linux, da ich jetzt ja seit ca. 4 wochen fast nur noch mit "Linux" "unterwegs" bin. "VirtualBox" wäre da eine Lösung gewesen, wenn auch eine holprige (und fast "ehrenrührige"). Zum Glück stellte ich bald fest, dass "MyMemoryDB" völlig problemlos, "optisch" nahezu mit identischem Aussehen und nur wenig langsamer mit allen Features auch unter "Wine" läuft; ich brauchte nur die "Exe" starten - alles andere lief automatisch -- Toll, einfach Toll!! Trotzdem: Gerne hätte ich "MyMemoryDB" auch nativ unter Linux zum Laufen gebracht. Und da stellte ich sehr bald fest, dass es eben nicht so ist, dass man denselben Quellcode nur mit einem anderen Compiler kompilieren muss - und schon hat man ein lauffähiges Windows Programm.
Das erste Starten war zwar recht vielversprechend; nach Installation der Zeos-Komponenten erstellte der Kompiler tatsächlich eine immerhin lauffähige Linux-Version. Schnell wurde die Linux-Version immer besser; der Austausch in "uses" von "ShellAPI" mit "LCLIntf" und das Umgehen der wenigen Befehle, die in "uses" den Eintrag "Windows" brauchten, war kein Problem.
Natürlich bemerkte ich auch Unterschiede im Aussehen des Programms: "Bold"-dargestellte Texte brauchen unter Linux "mehr Platz" - nun gut, ein Button muss den Text ja nicht unbedingt in "Bold" enthalten, und manche Edit-Felder hatten unter Windows und Linux verschiedene Größen, was auch unangenehm ist, was man (ich) aber beherrschen kann. Derartige "Designproblem" machen aber auch anderen Usern dieses Forums offensichtlich erhebliche Schwierigkeiten, wie man nach Beschäftigung mit der Suchfunktion hier immer wieder sehen kann.
Mein Hauptproblem aber ist die unterschiedliche Dateistruktur bei Linux und Windows. Ich liebe nämlich bei Windows-Programmen "portable Apps", also Programme, die ich einfach samt Ordner irgendwo hinkopiere (und auch beliebig oft kopiere) - und gut ist's. Mit dem Befehl "ExtractFilePath(ParamStr(0))" habe ich unter Windows stets die richtigen relativen Orte der notwendigen untergeordneten Ordner. "GetAppConfigDir" ist leider nicht die Lösung. Kann man unter Linux tatsächlich einen Ordner, der ein Programm enthält, nicht mehrmals an verschiedene Stellen des Dateisystems kopieren und hierarchische "Unterordner" sind - relativ zum Programmordner - dann auch an der richtigen Stelle, so dass z.B. ein "Ini-File" stets "an der richtigen Stelle" relativ zum Programmordner ist: Hat hier jemand eine Lösung? Ich könnte ja durchaus darauf verzichten "MyMemoryDB" mehrmals zu installieren - aber die gesamte Ordnerstruktur zweimal "pflegen" zu müssen und das Programm entsprechend umschreiben zu müssen macht mir schon erhebliche Bauchschmerzen.
Kann mir jemand weitere Tips geben oder Literaturstellen nennen, so dass ich "MyMemoryDB" doch noch unter Linux zum Laufen kriege und trotzdem nur EINE Quellcode-Datei pflegen muss? Oder lautet der ultimative Tip:"Bleib bei "Wine"?
Danke schonmal!
Aliobaba
Das: http://wiki.lazarus.freepascal.org/Cross_compiling/de und das: http://wiki.lazarus.freepascal.org/Cros ... nder_Linux kenne ich, liest sich aber für mich als Anfänger recht kompliziert und behandelt das Portieren von Linux nach Windows; ich bräuchte aber den anderen Weg.