Wenn der Kunde noch XP hat und das Programm sonst nicht testbar ist, dann würde ich sagen:
Keine einzige Änderung, die nicht unbedingt notwendig, also auch unbedingt mit der alten VO-Version weiterarbeiten.
Es werden Threads benutzt und die geben in Zusammenhang mit der GUI und vielen anderen Klassen unter Umständen Fehler in Zusammenhang mit dem Garbage Collector.
Das, was auch sehr gefährlich aussieht, ist das Casten von Objekten aus Pointerstrukturen. Die Frage ist immer, ob der Pointer immer noch auf das korrekte Objekt zeigt, nachdem der Garbage Collector gelaufen ist. Und beim Garbage Collector hat sich viel verändert von VO 2.7 auf VO 2.8 (meistens zum Positiven, aber es reichen hier kleine Veränderungen).
Ich selbst würde hier als erstes die Casts auf die Objekte ändern, indem ich ein globales Array mit Objekten anlegen würde und der Thread nur eine Nummer bekommt und dann aus dem globalen Array das richtige Objekt rausholen kann. Das ist zwar auch nicht schön, aber das verhindert, dass der Garbage Collector durcheinanderkommen kann.
In einem Thread darf es nichts geben, dass den Garbage Collector anstoßen kann. Oder als Ersatzlösung muss so viel dynamischer Speicher bei Programmstart reserviert werden, dass der Garbage Collector (hoffentlich) nicht während der Threadausführung anfängt zu laufen. Das kann man mit AppSetDynMem steuern mit ausreichend großen Werten.
Arne