Seltsame Probleme mit dem C++Builder 6



  • Hallo ich habe folgendes Problem: Mein C++Builder spinnt! 🙂
    Wenn ich eine bestimmte Procedur im Einzelschrittmodus versuche durchzugehen zeigt der Execution-zeiger überall hin, sogar auf leere Felder oder auf felder zwischen Proceduren aber nicht dorthin wo er gerade ist. Dann bekomme ich eine seltsame Fehlermeldung die nur von einer Zeile weiter unten im Code ausgelöst werden kann, die aber von der aktuellen procedure aus garnicht angesprungen werden kann. Obwohl diese Codezeile mit einem try...catch Block eingeschlossen ist bekomme ich nachher dann im programm die Fehlermeldung zu sehen. Hat jemand schonmal ähnliche Probleme gehabt und weiss eine Lösung?. Ich hab das ganze jetzt schon an 3 C++Builder Installationen an 3 verschiedenen Computern ausprobiert. Überall das gleiche 😞



  • Wen das an 3 verschiedenen BCB Installationen scheitert, dann liegt es evtl an deinem Projekt. Hast du mal versucht eine Minimal-Beispiel zu erstellen in dem das evtl nachvollziehbar wäre? Ansonsten würde ich empfehlen mal dein Projekt neu aufzusetzen. Achja wäre nett wenn du die genannten Methode hier mal posten könntest.



  • zum Beispiel bei dieser procedure:

    [code]
    void __fastcall TForm1::UpDown4Click(TObject *Sender, TUDBtnType Button)
    {
    Updown_Berechnen();
    }

    Das ist ein OnClick-Event für einen UpDown-Button. Wenn ich Einzelschritt einstelle und dann auf den UpDownButton klicke , beginnt der Codezeiger beim Procedurekopf mit der Ausführung geht zum Aufruf der Procedure UpDown_Berechnen() führt diese aber nicht aus sondern geht weiter zur zweiten geschweiften Klammer geht dann weiter auf Leere Zeilen zwischen den beiden Proceduren. Also der Codezeiger geht praktisch immer nur noch geradeaus, immer eine zeile weiter. Nach 5 bis 6 zeilen kommt dann eine Fehlermeldung die nur von einer Code-zeile aus der procedure UpDown_Berechnen() ausgelöst worden seien kann, diese Codezeile ist aber durch try catch eingeschlossen, trotzdem wird die Fehlermeldung nachher angezeigt.
    Noch ein Beispiel:
    [code]
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    try
    {
    if (Form1->Table3->Active == false) return;
    Updown_Berechnen;
    TStringList *Category = new TStringList;
    Zeiger1 = Category;
    Form1->Table3->Filter = "Cat = 'Autoplay'";
    Form1->Table3->First();
    if (StrToTime(Form1->Table3->FieldByName("Starttime")->AsString) == StrToTime(MillisecondToTime(StrToInt(Edit4->Text) * 60000)))
    {
    Form1->Table1->Last();
    Randomize();
    Form1->Table2->Filtered = true;
    AnsiString Catego = Form1->Table3->FieldByName("Category")->AsString;
    Form1->Table2->Filter = "Category = Catego";
    Form1->Table2->RecNo = random(Form1->Table2->RecordCount);
    Feste_Startzeit(StrToTime(MillisecondToTime(StrToInt(Edit4->Text) * 60000)));
    }
    }
    catch(...)
    {
    }

    }
    [\code]

    Eine Buttonklick-procedure: Wenn ich auf den Button klicke fängt der Code-Zeiger nicht am Procedure-kopf mit Code Ausführung an sondern bei der if Procedure 😞



  • Wenn du zur Laufzeit eine Exception wirfst und befindest dich noch in der Entwicklungsumgebung, wird deine Exception nicht geworfen, sondern die von deinem Compiler. Also teste das ganze mal außerhalb deiner IDE.



  • Dieses Problem ist bei mir immer dann aufgetaucht, wenn zwei verschiedene Versionen der Datei im Suchpfad lagen. Ab und an öffnet
    der BCB dann die falsche Version und lässt sich auch nur schwer davon abbringen. Löschen (bzw. Umbenennen) der Datei oder Abändern
    des Suchpfades bringt dann Abhilfe. Letzteres musste ich manchmal direkt in der Projektdatei vornehmen, weil sich der BCB irgendwas
    "gemerkt" hat und beim nächsten Speichern den Pfad wieder eingetragen hat.

    Tritt denn das Problem auch bei einem vollkommen neu erstellten Projekt auf - also ohne irgendeine "alte" Datei miteinzubinden?

    Gruß,

    Alexander



  • Nein das ist ein "altes Project". Ich habe zuerst an meinem Computer zu Hause daran gearbeitet, dort traten keine Probleme auf. Dann war ich unterwegs, habe also das ganze Verzeichnis mit den Project Dateien schnell auf CD-Rom gezogen und auf meinen Laptop kopiert um dort weiter zu arbeiten. Dort traten dann die Probleme auf. Per eMail habe ich dann das ganze Verzeichnis an meinen alten Computer geschickt, um es dort zu probieren. Dort gabs dann die gleichen Probleme. Ich hab jetzt mal nachgeschaut. In dem Verzeichnis gab es noch einige Dateien die den gleichen Namen hatten wie die Project Dateien nur mit einem ~-Kringel vor der Dateiendung also zb Projectname.~cpp Die hab ich jetzt mal alle ausgeschnitten und in ein neues Verzeichnis kopiert. Wenn ich jetzt die Orginaldateien aufrufe hab ich aber immernoch die Probleme sogar noch ein neues dazu jetzt: Ich hatte den UpDown-Button der das Problem ausgelöst hat von der Form gelöscht und das Project gespeichert. In der Entwurfsform ist er jetzt auch nicht mehr zu sehen. Sobald ich das project mit F9 aber starte ist er wieder da *wunder*

    PS.: Also bei anderen Projecten tritt das Problem bis jetzt nicht auf.



  • Die ~-Dateien dürften eigentlich nicht stören. Hast Du bei der Hin- und Herkopiererei die Projekt-Verzeichnisse doppelt angelegt oder
    vielleicht sogar im Suchpfad einen (oder mehrere) absolute(n) Pfad(e)? So sieht das nämlich aus. Das würde auch erklären, warum der
    Button wieder da ist.

    Gruß,

    Alexander



  • Also ich hatte das ganze Verzeichnis zum zwischenspeichern einmal kurz nach "Eigene Dateien" kopiert, das war aber auf meinem Computer zu Hause und nicht auf den beiden anderen.Was meinst du denn mit Suchpfade? Ich hab nur beim Dateinamen der Datenbank einen absoluten Dateinamen angegeben. Wo kann man denn sonst noch Suchpfade einstellen?

    Danke & Lg

    Seddto 🙂



  • seddto schrieb:

    Wo kann man denn sonst noch Suchpfade einstellen?

    In den Projektoptionen (Umsch+Strg+F11), Lasche "Verzeichnisse/Bedingungen" und dort den Include-Pfad.
    Ansonsten sieht man doch auch im Editor beim Debuggen (manchmal) den kompletten Pfad der Datei angezeigt.

    Gruß,

    Alexander



  • So ich hab das mit dem Suchpfad mal probiert und das alte Verzeichnis was dort noch eingetragen war unter "Include-Pfad" gelöscht. Stehen geblieben sind da jetzt nur noch die Sachen die der C++Builder braucht wie include vcl usw. Im Source-Code habe ich auch nochmal geschaut auch in den Header Dateien, da stehen keine Datei oder Pfad Namen drin. Das Problem besteht aber weiter:( Kann mir jemand einen Tipp geben was ich noch versuchen kann? Weiss echt langsam nicht mehr weiter 😞

    LG

    Seddto 🙂



  • Neuerstellen hast Du auch mal ausprobiert?
    Hast Du auch mal überprüft, ob die richtigen Datein im Projekt enthalten sind (Ansich|Projektverwaltung oder Strg+Alt+F11)?
    Du könntest auch mal die Datei, in der Du den Button gelöscht hast, mal umbenennen (oder löschen), dann sollte der BCB unbedingt
    meckern. Wenn nicht, dann muss noch irgendwo eine Kopie existieren, die Du mal finden solltest.

    Gruß,

    Alexander


Log in to reply