Was habe ich an diesem Quelltext falsch gemacht?



  • Hallo. Es kommt bei diesem Quelltext

    fileQexists->LoadFromFile(savepfadQ);
    fileQ = fileQexists->Strings[0];
    if(FileExists(fileQ))
     {
     .
     .
     .
     }
    

    diese Exception:

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00401C92 in Modul 'project1.exe'. Lesen von Adresse 00000000'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
    

    Kann mir jemand sagen wo da der Fehler ist? Danke im Voraus



  • Debuggen?!



  • Hallo

    wahrscheinlich weil hinter fileQexists kein gültige Instanz steht.
    Desweiteren greifst du auf die erste Zeile der Datei zu, ohne zu prüfen ob überhaupt etwas in der Datei drinsteht.

    bis bald
    akari



  • Also ich habs jetzt so:

    fileQexists->LoadFromFile(savepfadQ);
    if(fileQexists->Strings[0] != "")
     {
     fileQ = fileQexists->Strings[0];
     if(FileExists(fileQ))
      {
      .
      .
      .
      }
     }
    

    Damit geprüft wird ob in der ersten Zeile auch was steht.
    Ich weiß nicht wie ich das ausdrücken soll aber ich versuchs mal so:
    Ich habe eingestellt das bei jeder Zeile angehalten wird vom debugger(?).
    Wenn er bei fileQexists->LoadFromFile(savepfadQ); ist und ich nochmal auf Start drücke, kommt der Fehler. Also wenn der Pfeil (vor den Zeilen beim debuggen) von der ersten auf die zweite Zeile springt. 🙄



  • Na wie Akari schon sagte:

    Wo ist (steht)

    TStringList *fileQexists=new TSTringList();
    

    und

    delete

    ???



  • Hallo

    du must Grundlagen von dynamischer Speicherverwaltung in C++ beherschen.

    fileQexists = new TStringList();
    fileQexists->LoadFromFile(savepfadQ);
    // So soll der Vergleich aussehen
    if(fileQexists->Count > 0)
     {
     fileQ = fileQexists->Strings[0];
     if(FileExists(fileQ))
      {
      .
      .
      .
      }
     }
    // Wenn fileQexists nicht mehr gebraucht wird
    delete fileQexists;
    

    bis bald
    akari



  • Oh mist blöder Fehler :p
    Da brauch ich das so oft und auf einmal hab ich nicht dran gedacht

    Naja danke ihr seid spitze 😉


Anmelden zum Antworten