Probleme mit For-Schleife im Borland C++ Explorer



  • Hallo!

    Also ich kenn mich jetzt überhaupt nicht mehr aus. In "Allgemein.cpp" deklariere ich ganz oben außerhalb der Funktionen "int arDateiAnzahl;"

    In einer zweiten Datei "Vorschau.cpp" include ich die erste Datei mit #include "Allgemein.cpp". In einer Funktion der "Vorschau.cpp" verwende ich dann diese Variable:

    void TfrmVorschau::InitDateien()
    {
     for(i=1;i<=arDateiAnzahl;i++)
     {
      //... alle mögliche Aufrufe
     }
    }
    

    Aber das Programm springt einfach nicht in die Schleife! Ich habe den Debugger gestartet und dann festgestellt, dass zur Zeit des For-Schleifenaufrufs arDateiAnzahl 8 ist. Trotzdem geht er nicht in die Schleife. Ich habe einmal probiert statt arDateiAnzahl einfach 8 zu schreiben und dann hat es funktioniert!

    Kann mir irgendjemand helfen? Muss ich die Variable irgendwie public machen?

    Wenn ja wie?



  • leg0las schrieb:

    Kann mir irgendjemand helfen? Muss ich die Variable irgendwie public machen?

    NEIN.
    wo ist denn 'i' deklariert ?



  • OldMan00 schrieb:

    leg0las schrieb:

    Kann mir irgendjemand helfen? Muss ich die Variable irgendwie public machen?

    NEIN.
    wo ist denn 'i' deklariert ?

    Sind i und arDateiAnzahl denn auch ints? Hoffe ich doch, bei Fließkomma-Variablen ist ein direkter Vergleich nicht so einfach möglich...



  • Ein <= geht auch bei Fließkommazahlen problemlos. 🙂



  • Braunstein schrieb:

    Ein <= geht auch bei Fließkommazahlen problemlos. 🙂

    Hehe, auch wieder wahr! War ja noch früh... 🤡



  • Sry!

    i ist ein integer und in der void TfrmVorschau::InitDateien() deklariert.

    habe es jetzt mit extern int arDateiAnzahl probiert, aber das ist das selbe ergebnis als bei int arDateiAnzahl.



  • Jetzt bin ich dran mit raten:
    Ist arDateiAnzahl zwei mal deklariert, dass es überdeckt wird?



  • habe es mit einmal probiert -> geht nicht.
    dann habe ich es mit extern int und einmal mit int in allen möglichen variationen probiert -> geht nicht

    inzwischen habe ich eine alternativ-lösung gefunden:
    in "Allgemein.cpp":

    int arDateiAnzahl;
    
    int arDatei_Anzahl()
    {
     return arDateiAnzahl;
    }
    

    und in "Vorschau.cpp":

    void TfrmVorschau::InitDateien()
    {
     int i;
     for(i=1;i<=arDatei_Anzahl();i++)
     {
      //... alle mögliche Aufrufe
     }
    }
    

    Trotzdem ist das keine gute Lösung! Es funktioniert auch in einem ähnlichen Fall, aber ich finde keinen Grund, warum es hier nicht funktioniert. 😞

    Außerdem habe ich seit den Versuchen mit extern int manchmal den Fehler "F1004 internal compiler-fehler" der anscheinend ohne ersichtlichen Grund auftaucht und wieder verschwindet. 😕

    Weiß jemand wie ich dagegen was machen kann?
    Ich habe schon das Löschen von allen .obj und .tds Dateien und das entfernen und wieder einbinden von heardern probiert, aber der Fehler taucht trotzdem immer wieder auf.

    Danke an die die bereits geschrieben haben! 👍

    Ich freue mich über Vorschläge für beide Probleme! 🙂

    Hilfe!



  • leg0las schrieb:

    Außerdem habe ich seit den Versuchen mit extern int manchmal den Fehler "F1004 internal compiler-fehler" der anscheinend ohne ersichtlichen Grund auftaucht und wieder verschwindet. 😕

    Weiß jemand wie ich dagegen was machen kann?

    Das ist ein Bug im C++Builder 2006, der erst einer der Nachfolgeversionen behoben wurde; du solltest sein Auftreten aber signifikant reduzieren können, wenn du die vorcompilierten Header deaktivierst.


Anmelden zum Antworten