Problem mit eigenem Quelltext beim speichern



  • Rostfrei[] schrieb:

    Nutze am besten mal den Debugger, um zu schauen, wo der Fehler auftritt.

    Der Debugger funktioniert bei mir irgendwie nicht.
    Ich setze schon beim erstellen der Variablen einen Point, und er bringt den selben Fehler ...

    Rostfrei[] schrieb:

    Warum nicht eine richtige Datenbank? Oder Inidateien?

    Kann ich dir genau erklären, bei einer Datenbank die vom Programm erstellt/verwaltet wird gibt es probleme mit den Lizenzen. Inidateien verwende ich nicht, da es eine Datei sein soll, die mit Word und Access weiterverarbeitet werden kann. Es sollen allerdings alle Leute in einer Datei gespeichert werden und nicht für jeden eine Ini-Datei angelegt werden.

    Gruß MWJK



  • Hast du auch den Debugmodus eingeschaltet?
    und ändere mal deine for-Schleife. Die läuft eins zu weit

    // statt
    for(int c = 0; c <= Memo1->Lines->Count; c++)
    // besser
    for(int c = 0; c < Memo1->Lines->Count; c++)
    


  • Braunstein schrieb:

    Hast du auch den Debugmodus eingeschaltet?
    und ändere mal deine for-Schleife. Die läuft eins zu weit

    // statt
    for(int c = 0; c <= Memo1->Lines->Count; c++)
    // besser
    for(int c = 0; c < Memo1->Lines->Count; c++)
    

    Ich hab am Builder soweit nichts rumgestellt, wenn der Debugmodus standardmässig an ist, dann sollte ers also sein.

    Zu deinem Lösungsvorschlag:
    irgendwie funktioniert es ja (zumindest stürzt das Programm nun nicht mehr ab) - aber gespeichert wird auch nichts, komischerweise ...
    hier nochmal mein Quelltext, vielleicht fällt ja noch jemandem was ein, würde mich zumindest freuen

    for(int c = 0; c < Memo1->Lines->Count; c++){
          zeugs = Edit7->Text;
          int laenge = zeugs.Length();
          zeugs2 = Memo1->Lines->Strings[c];
          vnr = "";
          for(int b = 1; b < laenge; b++){
             nummer[b] = zeugs2[b];
             vnr = vnr + nummer[b];
          }
          if(vnr == zeugs){
             Memo1->Lines->Strings[c] = Edit7->Text+"\t"+ComboBox1->Text+"\t"+Edit1->Text+"\t"+Edit2->Text+"\t"+Edit3->Text+"\t"+Edit4->Text+"\t"+Edit5->Text+"\t"+Edit6->Text+"\t"+Edit8->Text+"\t"+Edit14->Text+"\t"+Edit15->Text+"\t"+Edit16->Text+"\t"+Edit17->Text+"\t"+Edit18->Text;
             if(CheckBox1->Checked==true){Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t1";}else{Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t 0";}
             if(CheckBox2->Checked==true){Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t1";}else{Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t 0";}
             if(CheckBox3->Checked==true){Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t1";}else{Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t 0";}
             if(CheckBox4->Checked==true){Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t1";}else{Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t 0";}
             if(CheckBox5->Checked==true){Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t1";}else{Memo1->Lines->Strings[c] = Memo1->Lines->Strings[c]+"\t 0";}
             vorhanden = true;
             c = Memo1->Lines->Count;
          }
          else{
             vorhanden = false;
          }
          if(vorhanden == false){
             zeile = Edit7->Text+"\t"+ComboBox1->Text+"\t"+Edit1->Text+"\t"+Edit2->Text+"\t"+Edit3->Text+"\t"+Edit4->Text+"\t"+Edit5->Text+"\t"+Edit6->Text+"\t"+Edit8->Text+"\t"+Edit14->Text+"\t"+Edit15->Text+"\t"+Edit16->Text+"\t"+Edit17->Text+"\t"+Edit18->Text;
             if(CheckBox1->Checked==true){zeile=zeile+"\t1";}else{zeile=zeile+"\t 0";}
             if(CheckBox2->Checked==true){zeile=zeile+"\t1";}else{zeile=zeile+"\t 0";}
             if(CheckBox3->Checked==true){zeile=zeile+"\t1";}else{zeile=zeile+"\t 0";}
             if(CheckBox4->Checked==true){zeile=zeile+"\t1";}else{zeile=zeile+"\t 0";}
             if(CheckBox5->Checked==true){zeile=zeile+"\t1";}else{zeile=zeile+"\t 0";}
             Form1->Memo1->Lines->Add(zeile);
          }
          else{
          }
       }
       dir = GetCurrentDir();
       Form1->Memo1->Lines->SaveToFile(dir + "\\Datenbank\\data.txt");
    

    Leider habe ich immernoch keine Ahnung warum er nix tut, aber vielleicht findet ja hier jemand den Fehler.

    Danke schonmal fürs anschauen.

    Gruß
    MWJK



  • Geh mal mit dem Debugger durch und schau nach was dein Programm macht. Ist dein Memo evtl leer oder schaust du in der richtigen datei nach?



  • Und bevor du wieder den nicht-funktionierenden Debugger anführst: sieh zu, dass du den in Gang bekommst (Neuinstallation etc.).
    Denn ohne ist Programmieren nicht sinnvoll möglich, und das Forum hier ist kein Debugger-Ersatz.



  • Jansen schrieb:

    Und bevor du wieder den nicht-funktionierenden Debugger anführst: sieh zu, dass du den in Gang bekommst (Neuinstallation etc.).
    Denn ohne ist Programmieren nicht sinnvoll möglich, und das Forum hier ist kein Debugger-Ersatz.

    Also, wie bereits erwähnt habe ich seit der installation nichts geändert.
    also wird neuinstallieren auch nichts bringen. Weshalb der Debugger nicht geht weiss ich auch nicht, dass das Forum hier kein ersatz dafür ist ist mir auch klar, aber ich dachte man könnte hier fragen.
    Wenn das allerdings hier nicht erwünscht ist, solltet ihr das evtl. in die AGBs aufnehmen.

    Gruß
    MWJK



  • Braunstein schrieb:

    Geh mal mit dem Debugger durch und schau nach was dein Programm macht. Ist dein Memo evtl leer oder schaust du in der richtigen datei nach?

    Wie schon erwähnt funktioniert mein Debugger nicht, wo ich aber leider keine Ahnung habe weshalb. Wie schon erwähnt setze ich einen solchen Punkt (bei mir sind die rot am linken rand) schon beim anlegen der variablen im button und trotzdem kommt der gleiche fehler. also entweder wird dieser punkt übersprungen, oder nicht beachtet.

    Gruß
    MWJK



  • Dann starte das Programm mal mit F8 und schau was da passiert. Desweiteren kontrolliere mal was in Projektoptionen Compiler eingestellt ist.



  • Braunstein schrieb:

    Dann starte das Programm mal mit F8 und schau was da passiert. Desweiteren kontrolliere mal was in Projektoptionen Compiler eingestellt ist.

    mit F8 startet das Programm ganz normal. Das Problem tritt wie gesagt erst dann auf, wenn ich auf den Button Speichern klicke. in den Projektoptionen Compiler ist folgendes eingestellt:
    Code-Optimierung: Keine
    Warnungen: Ausgewählte
    Debuggen: Debug-Informationen
    Zeilennummer-Informationen
    Vorcompilierte Header: Vorcompilierte Header Puffern
    Compilieren: (nichts ausgewählt)

    Gruß
    MWJK



  • Mit 99,99999999999999999999999999999999prozentiger Wahrscheinlichkeit suchst du an der falschen Stelle nach der gespeicherten Datei, wie von Braunstein schon vermutet.
    Lass zur Laufzeit mal die Variable dir per ShowMessage o.ä. ausgeben und staune.



  • Jansen schrieb:

    Mit 99,99999999999999999999999999999999prozentiger Wahrscheinlichkeit suchst du an der falschen Stelle nach der gespeicherten Datei, wie von Braunstein schon vermutet.
    Lass zur Laufzeit mal die Variable dir per ShowMessage o.ä. ausgeben und staune.

    Stimmt, ich staune ......
    also, durch das

    dir = GetCurrentDir();
    

    kann dir ja nur das richtige verzeichnis enthalten und genau das zeigt es auch an, wenn ich die variable dir während des speichern vorgangs ausgeben lasse.
    also ist deine wahrscheinlichkeitsrechnung ziemlich verkehrt, weil genau das 0,0000000000000000000000000000000001 Prozent eingetreten ist, womit du wohl nicht gerechnet hättest.

    Gruß
    MWJK



  • Meine Prozentvermutung bezog sich nicht auf den Inhalt der Variable. 😉

    Kannst du das Problem denn auch an einem Minimalprojekt nachvollziehen?



  • Jansen schrieb:

    Kannst du das Problem denn auch an einem Minimalprojekt nachvollziehen?

    Wie meinst du denn das mit dem "Minimalprojekt"? ein kleines Programm, das praktisch nur das tut, wobei dieser Fehler auftritt?


Anmelden zum Antworten