Delphi-Programm auf 64 Bit umstellen

Ein 32-Bit-Programm läuft auch unter einem 64-Bit-Windows. Deshalb fällt lange nicht auf, dass es noch 32 Bit ist. Irgendwann kommt ein Anlass: Das Programm stößt an die Grenze des Arbeitsspeichers, ein Gerätehersteller liefert seine Bibliothek nur noch in 64 Bit, oder ein Kunde verlangt es. Auf dieser Seite beschreibe ich, wann sich die Umstellung lohnt und worauf es dabei ankommt. Ist Ihr Programm noch mit Delphi 7 oder älter entstanden, ist die Seite zur Migration von Delphi 7 der bessere Einstieg.

Gibt es einen konkreten Grund für 64 Bit?

Ja, es gibt einen Grund

Arbeitsspeicher reicht nicht, DLL oder Treiber nur in 64 Bit

  1. 1Komponenten und DLLs prüfen
  2. 2Code anpassen
  3. 3Mit Vergleichsdaten testen
  4. 4Umstellen

Nein, kein konkreter Grund

„64 Bit wäre moderner“

  1. 1Bei 32 Bit bleiben
  2. 2Neue Komponenten 64-Bit-fähig auswählen
  3. 3Bei der nächsten größeren Änderung neu prüfen

Wann 64 Bit nötig wird

Arbeitsspeicher. Ein 32-Bit-Programm kann unter Windows nur rund 2 GB Arbeitsspeicher nutzen, auch wenn der Rechner viel mehr hat. Wer große Datenmengen, Bilder oder Messreihen im Speicher hält, stößt irgendwann an diese Grenze. Das Programm wird langsam oder bricht mit einem Speicherfehler ab.

DLLs und Treiber. Ein 32-Bit-Programm kann nur 32-Bit-Bibliotheken laden. Liefert ein Gerätehersteller seine Bibliothek oder sein ActiveX-Steuerelement nur noch in 64 Bit, bleibt keine Wahl. Ähnlich ist es bei Datenbanktreibern: Auf Rechnern mit 64-Bit-Office ist oft nur die 64-Bit-Fassung des Access-Datenbanktreibers installiert, und ein 32-Bit-Programm findet ihn nicht. Excel oder Word fernzusteuern funktioniert dagegen in der Regel auch aus einem 32-Bit-Programm.

Muss es überhaupt 64 Bit sein?

Manchmal kommt der Wunsch ohne konkreten Anlass, weil 64 Bit moderner klingt. Dann lohnt sich die Frage, was sich für die Anwender verbessern soll. 32-Bit-Programme laufen unter Windows weiter, und die Umstellung bringt für sich allein keine neuen Funktionen und ist nicht automatisch schneller. Sie kostet aber Zeit für Anpassungen und Tests. Ohne konkreten Grund verbindet man sie am besten mit der nächsten größeren Änderung. Wichtig ist nur, neue Komponenten und Bibliotheken schon jetzt so auszuwählen, dass es sie auch in 64 Bit gibt.

Geht es allein um den Arbeitsspeicher, gibt es eine Zwischenlösung: Mit einer Einstellung beim Kompilieren (Large Address Aware) darf ein 32-Bit-Programm unter einem 64-Bit-Windows bis zu 4 GB nutzen. Das verschafft Luft. Wachsen die Datenmengen weiter, ist es aber nur ein Aufschub.

Was sich im Code ändert

In 64 Bit sind Zeiger doppelt so groß, ganze Zahlen vom Typ Integer aber nicht. Überall, wo der Code beides gleichsetzt, etwa um eine Adresse in einer Zahl zwischenzuspeichern, muss er angepasst werden. Dasselbe gilt für direkte Windows-Aufrufe: Mit falschen Typen funktionieren sie in 32 Bit zufällig und in 64 Bit nicht mehr. Der Compiler findet einen Teil davon, den Rest findet man durch gezielte Suche im Code und durch Tests.

Jede Drittkomponente und jede eingebundene DLL muss es in 64 Bit geben. Bei Komponenten, die noch gepflegt werden, ist das meist eine Frage von Version und Lizenz. Bei alten Komponenten muss man entscheiden, ob man sie selbst anpasst oder ersetzt. Die BDE gibt es nicht in 64 Bit. Ein Programm, das noch darauf aufbaut, braucht vorher einen anderen Datenzugriff.

Auch Dateien, die das Programm selbst schreibt oder mit anderen Programmen austauscht, gehören auf die Prüfliste. Die neue Version muss sie genauso lesen und schreiben wie die alte.

Testen und umstellen

Die 64-Bit-Fassung muss dasselbe tun wie die 32-Bit-Fassung. Am verlässlichsten prüft man das mit Vergleichsdaten: dieselben Eingaben in beiden Versionen, dieselben Ergebnisse. Fehler durch die Umstellung zeigen sich oft nicht sofort, sondern erst bei großen Datenmengen oder bei selten genutzten Funktionen. Deshalb ist es sinnvoll, beide Fassungen eine Zeit lang bereitzuhalten. Solange das nötig ist, lassen sich beide aus demselben Quellcode bauen.

Wann ein Neubau ehrlicher ist

Die Umstellung auf 64 Bit ändert, wofür das Programm gebaut wird, nicht, wie es aufgebaut ist. Ist der Code ohnehin schwer zu ändern, hängen zentrale Teile an Komponenten, für die es keine 64-Bit-Fassung gibt, oder passt das Programm fachlich nicht mehr, löst 64 Bit diese Probleme nicht. Dann kann ein Neubau am Ende günstiger sein. Das sage ich Ihnen dann auch.

Wie es weitergeht

Ob sich die Umstellung lohnt und was dafür zu tun ist, kläre ich in einer Standortbestimmung zum Festpreis ab 600 €. Sie erhalten einen schriftlichen Bericht mit Prioritäten und Empfehlungen. Schreiben Sie mir über das Kontaktformular kurz, mit welcher Delphi-Version Ihre Software gebaut wird und warum 64 Bit gerade ein Thema ist. In einem ersten Gespräch klären wir dann, ob eine Standortbestimmung für Sie sinnvoll ist.