Announcement

Collapse
No announcement yet.

Zwei doofe Fehler!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zwei doofe Fehler!

    Hallo!
    Ich habe mal wieder ein paar Fehler in meinem Programm, weiss aber nicht woher...

    1.

    Ich bekomme neuerdings immer einen Laufzeitfehler, beim aufruf von StringList->Add.
    Woran könnte das liegen?
    Früher hats immer funktioniert
    Ich benutze die Methode jeweils in zwei FormCreate Methoden!

    2.

    Eine Sache funktionier bei mir auch noch nicht so richtig.
    Auf Knopfdruck wird in eine StringList ein String der Länge 4-10 und die Uhrzeit abgespeichert.
    Code:
    alarmzeit->Add(TimeToStr(Now())+" "+heli+" ");//Heli ist der String
    Dann wird mit einem Timer im Sekundentakt die Zeitdifferenz überprüft, wann der String abgespeichert wurde!
    Wenn diese über 4 Min liegt soll ein Sound abgespielt werden.
    Dass klappt aber nicht!
    Die Timer-Methode:
    Code:
      String Zeit = TimeToStr(Now());
      for (int k; k<alarmzeit->Count;k++)
      {
       String Zeitdifferenz = StrToTime(alarmzeit->Strings[k].SubString(1,8))-StrToTime(Zeit);
       Label16->Caption = Zeitdifferenz;
       if (StrToTime(Zeitdifferenz) > StrToTime("00:04:00"))
       {
        alarmzeit->Delete(k);
        sndPlaySound("sounds/nachalarmieren.wav",SND_ASYNC);
       } 
      }
      Timer9->Enabled = true;

  • #2
    Originally posted by Mucher View Post
    Ich bekomme neuerdings immer einen Laufzeitfehler, beim aufruf von StringList->Add.
    Und welchen? Oder sollen wir Ratestunde beginnen.

    Und nimm bitte für deine Frage einen vernünftigen Titel. "Zwei doofe Fehler!" ist nicht gerade Zielführend.

    Comment


    • #3
      Originally posted by Mucher View Post
      Ich bekomme neuerdings immer einen Laufzeitfehler, beim aufruf von StringList->Add.
      Siehe Bernhard.
      Ich benutze die Methode jeweils in zwei FormCreate Methoden!
      Welche Methode?

      Bitte benutze niemals FormCreate() und FormDestroy().
      Stattdessen benutze Constructor/Destructor.

      Comment


      • #4
        Okay die Fehlermeldung lautet so:

        "Zugriffsverletzung bei Adresse 00460BE8 in Modul 'Project1.exe' Lesen von Adresse 00000000"

        Wie sähe denn der Constructor aus?
        Die FormCreate ist so:

        versionalt->LoadFromFile("version.fms");
        Label2->Caption = "Aktuelle Version: " + versionalt->Strings[0];
        FTP->Host="******"; //Die FTP Komponente
        FTP->Username="*******";
        FTP->Password="*******";
        FTP->Passive=false; //ist auch Standard
        FTP->Port=21; //ist auch Standard
        FTP->TransferType=ftBinary;//ist auch Standard
        Form6->Enabled = true;
        Form6->Show();

        Comment


        • #5
          Debug mal. '00000000' deutet auf nicht initialisierten Pointer hin.

          Und an FormCreate und FormDestroy seh ich nix verwerfliches.

          Comment


          • #6
            Der Fehler tritt hier auf:

            versionalt->LoadFromFile("version.fms");
            Label2->Caption = "Aktuelle Version: " + versionalt->Strings[0];
            Kann es daran liegen dass ich die Datei schon in eine andere StringLiost geladen habe, nämlich in der FormCreate von Form4?

            Diese hier ist Form6

            Comment


            • #7
              Originally posted by Mucher View Post
              "Zugriffsverletzung bei Adresse 00460BE8 in Modul 'Project1.exe' Lesen von Adresse 00000000"
              Ist dass bei: "alarmzeit->Add(TimeToStr(Now())+" "+heli+" ");//Heli ist der String"??

              Dan ist alarmzeit 0 (nichtinitialisiert).

              Wie sähe denn der Constructor aus?
              Mit der Constructor fängt alles an:

              __fastcall TForm1::TForm1(TComponent* Owner)
              : TForm(Owner)
              {
              }

              Die FormCreate ist so:
              Und wo is
              alarmzeit = new TStringList; ???

              Comment


              • #8
                Originally posted by Mucher View Post
                Der Fehler tritt hier auf:

                versionalt->LoadFromFile("version.fms");
                Label2->Caption = "Aktuelle Version: " + versionalt->Strings[0];
                In welche von die zwei Zeilen?

                Wenn in der erste dann ist versionalt 0;
                Wenn in der Zweite dan ist der StringList leer;

                Kann es daran liegen dass ich die Datei schon in eine andere StringLiost geladen habe, nämlich in der FormCreate von Form4?
                Das kunnen wir doch nicht wissen?

                Comment


                • #9
                  Hans du verwechselst da was
                  Der erste Fehler hat mit dem zweiten (alarmzeit) nichts zu tun!
                  Alarmzeit ist global deklariert.

                  Bei der Zugriffsverletzung passierts in der ersten Zeile!
                  Was heisst denn "dann ist versionalt 0"?
                  Ich hab ja die Datei aufm PC im selben Ordner!
                  Die ist auch nicht leer

                  Comment


                  • #10
                    Originally posted by Mucher View Post
                    Was heisst denn "dann ist versionalt 0"?
                    NULL, NIL, ungültige Referenz, ...

                    Comment


                    • #11
                      sorry, ich weiss nicht was das bedeutet!
                      Was kann ich dagegegen unternehmen?

                      Comment


                      • #12
                        Wenn du in FormCreate()

                        versionalt->LoadFromFile("version.fms");

                        hast dan hast du auch irgendwo ein:

                        TStringList *versionalt = 0;

                        Wo un wie genau?

                        Irgendwo must du du dann eine TStringList instance machen mit:

                        versionalt = new TStringList;

                        Wo machts du das und wie genau?

                        Wenn du die Zeile met new nicht hast und doch versionalt->LoadFromFile()
                        tuest dann hast du die Zugrifverletzung (auf ein 0 | NULL | NIL Zeiger);


                        Versuche mahl:

                        if ( versionalt )
                        versionalt->LoadFromFile ( "version.fms" );
                        else
                        ShowMessage ( "versionalt 0");
                        Zuletzt editiert von Hans G; 24.10.2008, 19:10.

                        Comment


                        • #13
                          Originally posted by Mucher View Post
                          sorry, ich weiss nicht was das bedeutet!
                          Du weißt nicht was NULL ist
                          [/QUOTE]Was kann ich dagegegen unternehmen?[/QUOTE]
                          Grundlagen von C++ aneignen?


                          Deine Version von versionalt zeit nicht auf eine gültige Instanz von TStringList

                          Comment


                          • #14
                            Danke Hans für deine Antwort!
                            Ich habe die StringList ganz oben angelegt also unter
                            Form1 * TForm
                            da steht "TstringList*versionalt=new TStringList()


                            Ich bin grade an einem anderem PC!
                            Morgen überprüf ich nochmal ob ich das genau so hab!

                            was gibt den der Bool (if (versionalt)) an?
                            Ob das gültig ist?

                            Comment


                            • #15
                              wenn es ungleich NULL ist wird geladen, sonst Fehler

                              Ich habe die StringList ganz oben angelegt also unter
                              Damit hast du eine globale Variable angelegt. Informier dich dochmal über Klassen und Klassenvariablen...die stehen in der Headerdatei
                              Christian

                              Comment

                              Working...
                              X