Bis Delphi 2006 wurde noch mit "kompletter" Abwärtskompatibilität, bis hin zu Turbo-Pascal geworben.
Seit 2009 ist das ein bissl auf dem absteigenden Ast und wird nicht mehr erwähnt.
Aber grundsätlich sollten deine alten Programme halbwegs kompatibel sein, eventuell mit kleinen Anpassungen
- ein paar Funktionen und Klassen wurden in andere Units verschoben -> F1 drücken und die neue Unit suchen
bzw. Einiges wurde entfernt, umbenannt oder durch Neues ersetzt
- viele/fast alle Units haben nun einen Namespace und beim Upgrade der DPROJ fehlen die Standardnamespaces in den Projektoptionen
(aus einem neuen Projekt kopieren, oder die Namespaces überall in den USES nachtragen ... z.B. Forms -> VCL.Forms)
- etwas aufpassen mußt du in Bezug auf Unicode, also dass das bei der Umstellung richtig mitgezogen wird,
aber meistens gibt es da dann Compiler-Warnungen (außer du hast irgendwo was Böses gebaut, mit wilden typlosen Pointern)
- bei selbsgeschriebenen DLL-Importen mußt du aufpassen, denn nur weil sich im Delphi PChar nun intern von PAnsiChar zu PWideChar ändert, bleiben die DLLs natürlich gleich.
Oft kann man da einfach aus PChar ein PAnsiChar in den Deklarationen machen (oder schauen ob es eine passende UnicodeAPI gibt) und bei den Aufrufen dann natürlich auch AnsiString/PAnsiChar rein geben, wobei dort der Compiler hoffentlich sich melden wird, wie schon erwähnt wurde
- Wenn man dann mit Unicode fertig ist und sich langweilt, dann könnte man auch gleich noch bezüglich 64 Bit schauen, damit z.B. bei Pointer-Integer-Casts und Dergleichen noch alles passt
Und natürlich gibt es viele neue Funktionen/Typen/..., wo sich nach der ersten harten 1:1-Umstellung bestimmt ein Review deines Codes eventuell lohnen wird,
mit Überarbeitung des alten Codes und Umstellung auf "schönere" Funktionen.