Wie kann man heute ein altes C++-Programm ans Laufen bringen (geschrieben 1992-1994 mit Borland C++ 2.0)?



  • Ich habe für meine Modellbahn 1992-1994 mit Borland C++ 2.0 ein Programm aus mehreren Modulen geschrieben, das hervorragend lief (Modellbahnsteuerung). Nun hat mein alter 80486er PC seinen Geist aufgegeben. Ich suche nach Möglichkeiten,
    a) das alte Programm auf neueren Rechnern weiter laufen zu lassen. Fehlermeldung: "BGI-Error: graphics not initialized. Use initgraph". Das Programm kann wohl mit neueren Graphikkarten nicht umgehen. Damals waren Auflösungen von 640 x 480 üblich.
    b) das alte Programm auf neuere C++-Versionen umzuschreiben, so dass es auf neueren Rechnern läuft. Ich habe mit BorlandC++ 4.0 versucht, die Quelldateien zu compilieren, da kamen haufenweise Fehlermeldungen. Gibt es Compiler, bei denen man möglichst wenig ändern muss?
    [cpp]



  • HBKaienburg schrieb:

    Ich habe für meine Modellbahn 1992-1994 mit Borland C++ 2.0 ein Programm aus mehreren Modulen geschrieben ... Gibt es Compiler, bei denen man möglichst wenig ändern muss?

    Falls es ein größeres Projekt ist, bezweifle ich das, da zu dieser Zeit Standardkonformität nicht wirklich groß geschrieben wird. Heutzutage wird allerdings sehr viel Wert darauf gelegt.


  • Mod

    HBKaienburg schrieb:

    das alte Programm auf neuere C++-Versionen umzuschreiben, so dass es auf neueren Rechnern läuft. Ich habe mit BorlandC++ 4.0 versucht, die Quelldateien zu compilieren, da kamen haufenweise Fehlermeldungen. Gibt es Compiler, bei denen man möglichst wenig ändern muss?

    Das ist weniger eine Frage des Compilers als des Codes, der angepasst werden muss.
    Wie umfangreich ist denn das Projekt?



  • Dieser BGI teil ist eine separate Grafik lib von Borland. Und die wird wohl auch nur unter Dos bzw. einer dos Umgebung wie Dosbox laufen.

    Such mal einfach nach der Fehlermeldung bei google, da findest du auch ein paar Anleitungen solche Programm wieder ans laufen zu kriegen auf modernen systemen.



  • Wie wäre es wenn du das Programm ganz einfach in einer VM oder einem Emulator laufen lässt ?



  • Ist schon eine Weile her Turbo C++ 2.0.

    BGI war ja das Borland-Grafik-Interface unter DOS.
    Das BGI hast du richtig installiert? Denke unter aktuellen OS reicht das wahrscheinlich nicht?

    Unter welchem Betriebssystem soll das jetzt laufen?

    Wie schon geschrieben Virtuelles OS und darunter versuchen.

    Dann gab es mehrere Ansätze BGI-Funktionen unter späteren Compilern ans laufen zu bekommen.

    Bei der IDE Quincy mit dem MinGW 4.?.? sollte eine BGI-Unterstützung dabei sein.
    Wie weit das funktioniert?

    Welche Änderungen bei der Portierung von Turbo C++ 2.0 zu MinGW erforderlich sind?
    Wenn du Glück hast, wenig und wenn nicht, ...

    Wie viele Zeilen Quellcode hast du da etwa?

    Wie überträgst du denn die Daten vom Rechner zur Anlage? Parallel? Seriell? USB oder anderes Interface?



  • out schrieb:

    HBKaienburg schrieb:

    Ich habe für meine Modellbahn 1992-1994 mit Borland C++ 2.0 ein Programm aus mehreren Modulen geschrieben ... Gibt es Compiler, bei denen man möglichst wenig ändern muss?

    Falls es ein größeres Projekt ist, bezweifle ich das, da zu dieser Zeit Standardkonformität nicht wirklich groß geschrieben wird. Heutzutage wird allerdings sehr viel Wert darauf gelegt.

    Auch früher hat man auf Standardkonformität Wert gelegt. Das ist ja eins der Stärken von C++, dass man auch uralte Programme mit modernen Compilern übersetzen kann. Auch wenn sich der Standard weiter entwickelt hat, hat man gerade bei C++ auf Kompatibilität mit alten Programmen nicht nur Rücksicht genommen, sondern wirklich forciert.

    Das Problem ist hier eher, dass BGI verwendet wird. Das ist eine alte Grafikschnittstelle von Borland (Borland Graphics Interface). Sie hat damals Treiber für verschiedene damals aktuelle Grafikkarten mit gebracht. Das ist heute anders gelöst.

    Ich bezweifle, dass Borland (oder wie auch immer sie heute heißen) BGI heute noch anbietet. Alternativ müssen die Grafikroutinen auf moderne Schnittstellen portiert werden.



  • ich bins schrieb:

    out schrieb:

    HBKaienburg schrieb:

    Ich habe für meine Modellbahn 1992-1994 mit Borland C++ 2.0 ein Programm aus mehreren Modulen geschrieben [...]

    [...]

    Auch früher hat man auf Standardkonformität Wert gelegt.

    Schau nochmal auf die Jahreszahlen - damals gabs noch keinen rechten Standard. Nur den Quasi-Standard (ARM), und jeder Compilerbauer hat in gewissem Rahmen sein eigenes Süppchen gekocht, d.h. unter Anderem auch Dinge unterstützt, die jenseits des aktuellen Standards liegen (man denke nur allein an gcc's VLAs, die es auch heute noch gibt).
    Dennoch denke ich auch, dass die Bibliothek das Hauptproblem sein wird.



  • Wie viele relevante Befehle hatte die Bibliothek denn? Evtl. kann man einfach die Funktionen selbst schreiben, als eine Art Adapter zwischen dem Programm und einer anderen Grafikbibliothek, die ähnlich aber modern funktioniert.



  • Ich hab es nicht getestet - soll aktueller als Quincy sein:
    http://codeblocks.codecutter.org/

    Eventuell gibt es noch weitere Ansätze BGI-Funktionen an aktueller Software anzupassen. Um kleine Änderungen wird man wohl nicht herum kommen.



  • Doch wird man, wenn man das ganze in einer VM oder einem Emulator laufen lässt.


Log in to reply