Zitat von
Elvis:
Mono ist für .Net 1.1 als komplett anzusehen.
Keines wegs. Ich hatte mal versucht ein minimales
VCL Projekt unter Mono für Windows zu starten, wo also eine
WinAPI existiert. Es hätte also funktionieren sollen, jedoch schlug AllocateHWnd fehl, weil die Methode Marshal.GetHInstance() zugreift, die nicht in Mono implementiert ist.
Zitat:
Problem ist hier die komische Art und Weise iin der der Delphi.Net compiler deine binaries mit Delphis
RTL vermischt.
Delphi.NET produziert auch nur 100%-tigen .NET Code. Es wird aber viel auf P/Invoke gesetzt um auf die
WinAPI zugreifen zu können. Da muss man halt am wenigsten neu schreiben.
Zitat:
Die D.Net
RTL verhindert, dass es unter Mono läuft.
Jetzt ist die Frage, was unter D.Net
RTL verstanden wird. Borland hat das ja neu definiert. Früher war
RTL: System, SysUtils, Classes Sei neuestem ist das aber anders. Da ist
RTL: System und VclRtl: SysUtils, Classes.
Und mit der
RTL alleine funktionieren die Delphi.NET Anwendungen hervorragend unter Mono. Kommt aber die VclRtl hinzu, die die meisten ja gewohnt sind und sie deswegen brauchen, steht man vorerst im Regen. Borland hat dort nämlich bereits im initialization Abschnitt (SysUtils) ein P/Invoke drinnen, das einem die Suppe versalzt.
Zitat:
Jeder andere mainstream .Net compiler erzeugt
IL Code, der problemlos unter Mono läuft.
Nochmal: Der Delphi.NET Compiler erzeugt auch
IL Code, der problemlos unter Mono läuft. Nur dur die VclRtl (was ja ein Assembly "darstellt") ist das Problem. Das selbe Problem hat man, wenn man in C# ein Assembly einbindet, das auf
WinAPI zugreift. Oder andersherum: Wenn man unter MS.NET auf ein Assembly zugreift, dass auf die KDElib zugreift.
Ich verstehe es einfach nicht, warum immer auf Delphi.NET herumgehackt wird. Es liegt einfach nur an den verwendeten Assemblies und nicht am Compiler. Unter C# oder Ruby# oder was weiß ich noch kann man auch P/Invokes benutzen. Man muss mit Delphi.NET auch keine
VCL Anwendung schreiben, die von ihrer Herkunft nun mal stark mit der
WinAPI verknüpft ist. Man kann auch mit Delphi.NET ein wxNet , Qt# oder GTK# schreiben. Aber weil Borland es einem da mit dem Menüpunkt "
VCL-Formularanwendung" so einfach macht, meinen immer alle, man könne nur
VCL.NET Anwendungen schreiben und die laufen nicht auf Mono.
Schaut sich eigentlich überhaupt irgendwer außer mir den Quellcode zur
RTL.NET, VCLRTL.NET und
VCL.NET an? Scheint wohl nicht der fall zu sein. Schwach! (gilt nicht für PersonalEdition Benutzer). Denn sonst würde man sehen, dass in Borland.Delphi.System nicht ein einziges P/Invoke drinnen ist.
Auf das
VCL.NET vs. WinForms-Phänomen will ich jetzt erst gar nicht zu sprechen kommen, das würde den Thread sprengen und gehört hier auch nicht hin.
Ach ja und bevor ich es vergesse:
http://unvclx.sourceforge.net/other/MonoPatchD9.zip (for Delphi 2005 only)