BCB6 Projekt in BCB5 öffnen?



  • Sollte eigentlich funktionieren. Das ist meines Wissens nach auch der einzige Weg.



  • Ich hatte das mal selber gemacht.
    Du musst das Programm wirklich von Grund auf neu erstellen.
    Die Form muss neu aufgebaut werden.
    Anschliessend mit Coy&Paste den Code uebertragen.
    An den Stellen wo er meckert nacharbeiten.

    Siehe zu das du wirklich nur deinen erstellten Code ruebertransferierst und nichts was BCB6 erstellt hat.



  • Ich habe da ein ähnliches Problem mit drei Programmen, welche sowohl unter CB5 als auch unter CB6 bearbeitet werden müssen.

    Das einfache Laden der Projektdateien ging auch bei mir schief.

    Da es sich um eine Vielzahl von Formularen handelt, ist der Weg, einfach alles neu zu machen, indiskutabel. Folgender Weg hat jedoch funktioniert:

    1. Anlegen eines neuen Projektes
    2. Die einzelnen CPP-Dateien und LIBs über "Dem Projekt hinzufügen" einladen (ging ohne Probleme, wenn nicht zufällig unter Unit1 und Form1 gespeichert wird)
    3. Das Hauptformular (heißt vor Speichern immernoch Form1/Unit1) aus dem Projekt entfernen und das alte Hauptformular wieder als Hauptformular einsetzen.

    Zu beachten ist, das der Compiler jetzt C++-konformer arbeitet: Wird eine Schleifenvariable in einer Funktion mehrfach verwendet, erwartet BC5 in jeder for-Schleife eine neue Definition (falsch!), bei BC6 ist eine Definition ausreichend (richtig!).



  • Oops, irgendwie ist die Antwort gleich zweimal hier gelandet.



  • zu Manfreds Beitrag: m.E. reichet es die CPP und die H Dateien zu kopieren, die LIBs brauchst Du nicht. Ansonsten habe ich das auf diese Weise auch schon gamacht.



  • @Manfred
    Zu den Schleifenvariablen.
    Das Verhalten, welches du dem BCB5 zuschreibst, ist das eigentlich standardkonforme (das andere kommt von der MFC). Das Verhalten hat aber nichts mit der Builderversion zu tun. Du kannst das in den Compileroptionen ein- oder ausschalten (MFC-Kompatibilität).



  • Oops, recht haschts. 😮

    Kann ich die Definitionen ja wieder rausschmeißen.



  • Hallo, ich bins nochmal, bin jetzt ein ganzes Stück weiter.
    Das Neubauen der Form war zwar aufwendig, hat aber funktioniert.

    Konnte auch schon einige Stellen an denen der Compiler gemeckert hat nacharbeiten, habe nur noch ein kleines Problem:

    Im BCB5 scheint es für TCheckListBox die Methode Count nicht zu geben. Man kann zwar die ausgewählten Items mit SelCount zählen, aber nicht alle. Hat jemand eine Idee wie ich trotzdem an die Anzahl der Einträge komme (alle auswählen, zählen und dann wieder de-selecten kanns ja nicht sein, oder?)?

    Ich werd' jetzt wohl noch ein wenig tüfteln...

    Nico



  • Auch darüber bin ich schon gestolpert. Die direkte Eigenschaft Count ist eigentlich auch nicht nötig, da das Ding nur über eine Stringliste gefüllt wird. Die Anzahl der Einträge kann man auch mit [Name]->Items->Count ermitteln.



  • Du hast völlig recht! Danke!
    Bald sollte es laufen...

    Jetzt habe ich leider ein neues Problem:
    Ich nutzte bislang die Funktion ReverseString() aus StrUtils.hpp, aber diese Datei gab es im BCB5 nicht. Dann habe ich die Datei ganz einfach vom BCB6 in das Include-Verzeichnis vom BCB5 kopiert leider erhalte ich nun den Fehler:

    [Linker Fehler] Unresolved external '__fastcall Strutils::ReverseString(const System::AnsiString)' referenced from C:\PROGRAMME\BORLAND\CBUILDER5\PROJECTS\STATISTIKKONVERTER_PROJEKT_02\STATISTIKKONVERTER_02.OBJ

    Was kann ich dagegen tun? Die Suche hat mir nicht so weiter geholfen...
    Ist im Augenblick das Einzige was mir noch fehlt zum Glück :p

    Nico



  • Da ist wohl ein bisschen Standard-C angesagt:
    _strrev, _wcsrev, _mbsrev



  • Ich habs geschafft!
    Ich konnte das Projekt fast ohne Einschränkungen übertragen (nur marginal)...
    Vielen Dank nochmal an alle hier, ohne dieses Forum hätte ich das ganze wahrscheinlich nicht gepackt, bzw. deutlich länger gebraucht. 🙄

    Jetzt habe ich ja zwei gleiche lauffähige Exe' nebeneinander (aus BCB5 & 6).
    Was mich nun wundert:

    1. Die mit der 5er compilierte Exe ist fast ein Drittel kleiner (1097kb <--> 1405kb)
    2. Die mit der 6er compilierte läuft beim Erzeugen und Schreiben von bzw. in ASCII-Dateien mit ofstream... outfile... etwa um Faktor 4-5 schneller als die "Ältere"! 😕 😕 😕

    Ich habe an dem dies betreffenden Code nichts geändert (einfach C&P), kann mir das jemand erklären?

    Nico



  • Hallo,

    zu 1. Wahrscheinlich sind einige Header oder Bibliotheken in der 6er Version grösser als in der 5er
    zu 2. Im BCB6 wird eine andere STL-Implementation (STLport) verwendet als im BCB5 (Rogue Wave).



  • zusätzlich wurde, für die CLX-Implementierung, eine MENGE handoptimierter Assemblercode entfernt...


Anmelden zum Antworten