Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi 2005 / 2006 .net und plattform unabhängigkeit (https://www.delphipraxis.net/60333-delphi-2005-2006-net-und-plattform-unabhaengigkeit.html)

commandah 5. Jan 2006 12:54


Delphi 2005 / 2006 .net und plattform unabhängigkeit
 
Hallo zusammen.
Ich habe mal eine dumme frage, wenn ich mit delphi 2005 eine neue .net anwendung erstelle, wie bekomme ich es denn dann hin, das diese auch auf Linux u mac funzt?
Denn wenn ich die Anwendung kompiliere, dann erzeugt es doch auch eine exe, und die kann ich doch schlecht auf nem Linux oder Mac rechner laufen lassen oder?

mirage228 5. Jan 2006 12:59

Re: Delphi 2005 / 2006 .net und plattform unabhängigkeit
 
Hi,

Wenn Du eine .NET Anwendung erstellt, kannst Du diese ggf. mit einer .NET Implementierung für Linux ausführe wie z.B. Mono. Diese haben aber noch nicht ganz den Featuresstand von .NET erreicht, weshalb einiges u.U. nicht funktioniert.

mfG
mirage228

commandah 5. Jan 2006 13:21

Re: Delphi 2005 / 2006 .net und plattform unabhängigkeit
 
und wie mach ich das? bzw wo stell ich das ein/um

mirage228 5. Jan 2006 13:24

Re: Delphi 2005 / 2006 .net und plattform unabhängigkeit
 
Zitat:

Zitat von commandah
und wie mach ich das? bzw wo stell ich das ein/um

Also ich habe mich noch nicht intensiv damit beschäftigt, aber soweit ich das weiss, musst Du einfach die mit mit .NET* erstellte Exe-Datei auf Linux mit installiertem Mono ausführen. Sollte ähnlich wie mit Java funktionieren, soweit ich das verstanden habe.

*: Nur Windows.Forms! VCL.NET gibts imho nicht für andere Plattformen.

mfG
mirage228

tommie-lie 5. Jan 2006 13:25

Re: Delphi 2005 / 2006 .net und plattform unabhängigkeit
 
Zitat:

Zitat von commandah
Ich habe mal eine dumme frage, wenn ich mit delphi 2005 eine neue .net anwendung erstelle, wie bekomme ich es denn dann hin, das diese auch auf Linux u mac funzt?

Für die Oberfläche:
Entweder Gtk# benutzen und darauf vertrauen, daß der Mac-Benutzer eine Möglichkeit gefunden hat, Gtk+-Anwendungen zu starten (unter MacOS X ist Cocoa üblich, Cocoa# existiert, aber ist nicht unter Windows und Linux nutzbar), oder dich an der Vollständigkeitsliste für den System.Windows.Forms-Namespace von Mono orientieren und darauf verzichten, die Features zu nutzen, die dort als nicht implementiert gekennzeichnet sind.
Für den Rest:
Auf P/Invokes verzichten, nur reinen Managed-Code verwenden (also auch keine Pointer, solltest du dich für Managed C++ interessieren), nichts Borland- oder Microsoft-spezifisches verwenden (auf System.*-Namespaces beschränken) und für ebenfalls an der Vollständigkeitsliste von Mono orientieren (größtenteils ist aber alles implementiert).

Zitat:

Zitat von commandah
Denn wenn ich die Anwendung kompiliere, dann erzeugt es doch auch eine exe, und die kann ich doch schlecht auf nem Linux oder Mac rechner laufen lassen oder?

Das ist für den Zweck irrelevant. Die existierenden portablen .NET-Frameworks nehmen die Echse als Argument und starten diese, sie verfügen also über einen eigenen Loader, der das Format der Echse versteht. Ein typischer Mono-Aufruf sieht beispielsweise so aus:
Code:
mono MeineAnwendung.exe
Das funktioniert unter Windows, Linux und MacOS. Linux bietet außerdem ähnlich wie Windows die Möglichkeit, entsprechend der Dateiendung "exe" das Framework zu starten. Ob das mit MacOS ähnlich geht, weiß ich nicht, da ich nicht weiß, ob das verwendete BSD sowas kann (OpenBSD wird es vermutlich nicht können, nehme ich an).

Edit:
Zitat:

Zitat von mirage228
VCL.NET gibts imho nicht für andere Plattformen.

Bedingt richtig. Die VCL.NET macht massiv benutzung von nativen Funktionen (via P/Invoke). Das *könnte* man *teilweise* mit WinE hinbiegen, wird aber vermutlich mehr Frickelei als Freude werden. Ich würd's gar nicht erst versuchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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