challenge4syseca hat folgendes geschrieben: |
Deshalb frage ich:
Hat jemand Erfahrung bei der Migration von D6 auf D2005? Speziell mit GUI? |
Delphi 2005 ist Win32API und .NET. Und mittels Delphi.NET ist die Interopertibilität zwischen Win32 zu .NET ein kinderspiel, denn die "exports" Klausel gibt es auch in Delphi.NET. Der C# Compiler macht es da einem schwerer, wenn er das überhaupt kann.
Zitat: |
Nach allem was ich bisher gelesen habe, wird längerfristig gesehen abgeraten auf VCL.Net zu setzen. (Wegen /P Invoke-Aufrufen) |
Die VCL.NET ist schneller als WinForms. WinForms nutzt im Moment auch nur P/Invoke, denn es basiert auch auf der Win32API. Zudem ist WinForms von Microsoft als deprecated markiert und wird mit WinFX (durch Avalon) komplett ersetzt, welchen nicht kompatibel zu WinForms ist.
Persönlich sehe ich zur Zeit da keinen nennentswerten Vorteil von WinForms, wenn es um die Windows-Programmierung geht. Will man sein Programm auch unter Linux laufen lassen, kommt man nicht um Gtk# oder WinForms (nur im Experimentiermodus) herum, weil sich sich noch niemand daran gemacht hat, die VCL.NET nach Linux zu portieren (=> Lizenzproblem).
Ein Pluspunkt der VCL.NET ist der FormDesigner, denn der von WinForms ist meiner Meinung nach der größte Schrott. Man benenne nur mal das Formular um, oder versuche einen EventHandler zu löschen. Bei der VCL einfach die Methode auf "begin end" reduzieren, bei WinForms die Methode löschen, das Code-Foldering bei "Vom Designer verwalteter Code" öffnen, die Delegaten-Zusweisung suchen, die Zeile löschen und hoffen, dass man nicht zuviel gelöscht hat, da der autogenerierte Code sonst vom FormDesigner nicht mehr richtig verarbeitet werden kann.
Ein Grund für WinForms, den ich immer wieder höre ist, dass die .exe Dateien kleiner sind. Ist ja auch kein Wunder, wenn WinForms im .NET Framework steckt und die VCL.NET standardmäßig ins Programm gelinkt wird. Aber die Dateigröße war für mich nie ein Kriterium, ob ein Framework gut oder schlecht ist. Man erinnere sich nur an die vielen inkompatiblen Versionen der mfc DLLs.
Zitat: |
Kommt eine Portierung nach FCL einer Neuprogrammierung gleich? |
Solange die Programmlogik von der GUI getrennt ist, beschränkt sich die Migration der Logik auf .NET spezifische Unterschiede (vorausgesetzt man akzeptiert, dass Units wie SysUtils, Classes, ... benutzt werden.
Wenn man aber auch auf diese verzichten will, und alles mit der FCL machen möchte, dann kann man gleich bei 0 anfangen.
Zitat: |
Wäre es da nicht besser gleich auf C# zu setzen? |
Wenn nur FCL und keine erweiterte Delphi-RTL (Borland.Vcl.SysUtils, Borland.Vcl.Classes, ...) genutzt werden, ist das sicherlich eine Möglichkeit.
Zitat: |
und warten, was die nächste Delphi-Version bringt? |
Delphi 2006 (DeXter) wird da nicht viel daran ändern. Zumindest wird die VCL.NET noch bestehen.