Array mit 1000 Elementen beim CppWebBrowser führt zum Absturz bei Win2000



  • Hallo,
    ich habe folgendes Problem.

    Ich habe ein Array mit 1000 Elementen des Typs CppWebBrowser.

    Unter Windows XP ist es kein Problem damit zu arbeiten, das Programm läuft auf mehreren Rechnern fehlerfrei.

    Aber jetzt habe ich die Software einem Freund gegeben, der Windows2000 auf seinem Rechner hat.

    Der bekommt immer den Fehler "Listenindex überschreitet das Maximum(0)". Woran könnte das liegen?

    Der Code sieht soweit so aus:

    AnzahlGesendet +=1;
    pCppWebBrowser[AnzahlGesendet] = new TCppWebBrowser(this);
    pCppWebBrowser[AnzahlGesendet]->OnDownloadComplete = CppWebBrowser1DownloadComplete;
    pCppWebBrowser[AnzahlGesendet]->Navigate(WideString(URL + "index.php?Nummer=" + Nummer->Text + "&Netz=" + Netz->Text + "&Text=" + Nachrichtentext->Text + "&Username=" + Kontenverwaltung->Benutzername->Text + "&Password=" + MD5(Kontenverwaltung->Passwort->Text) + "&Land=" + Laendervorwahl));
    

    Das klappt soweit noch.

    Jetzt wird dieser Code beim DownloadComplete Event ausgeführt:

    TStringList *Code = new TStringList;
      AnzahlInfos++;
      if (AnzahlInfos == 1)
      {
      Code->Text = "";
      if (ExtractHtmlCodeOfCurrentPage(pCppWebBrowser[AnzahlGesendet], Code,1) == true)
        {
        try
        {
        Status->Caption = "Versende SMS...";
        Application->ProcessMessages();
        }
        catch(...){}
        String TempCount = IdHTTP1->Get((URL + "kontostand.php?Username=" + Kontenverwaltung->Benutzername->Text + "&Land=" + Laendervorwahl + "&Password=" + MD5(Kontenverwaltung->Passwort->Text)));
        if (TempCount != "Benutzername oder Passwort inkorrekt")
          {
          if (TempCount != "")
            {
            if (StrToInt(TempCount) > 0)
              Status->Caption = "Sie haben noch " + TempCount + " SMS auf ihrem Konto";
            else
              {
              Status->Caption = "Sie haben kein Guthaben mehr.";
              Label2->Enabled = false;
              }
            if (Code->Text.SubString(1,1) == "<")
              {
              Code->Text = "100";
              }
            else  Status->Caption = TempCount;
            }
          else  Status->Caption = TempCount;
          }
        }
      else Status->Caption = "Fehler beim Auslesen der Benutzerüberprüfung.";
    
      ShowMessage(Errorcode(Code->Strings[0]));
      delete pCppWebBrowser[AnzahlGesendet];
    }
    delete Code;
    ::Sleep(500);
    

    der erste code wird, wie gesagt noch fehlerfrei ausgeführt.
    Beim Zweiten bekomme ich die Fehlermeldung "Listenindex überschreitet das Maximum (0)".

    Was könnte ich dagegen tun?
    Ich würde ja mit nur einem Browser arbeiten, jedoch geht dies auch nicht, da der Request nur einmal ausgeführt wird, auch wenn man die Funktion mehrmals aufruft.

    Danke für jegliche Hilfe,
    fehlermeldung



  • fehlermeldung schrieb:

    Beim Zweiten bekomme ich die Fehlermeldung "Listenindex überschreitet das Maximum (0)".

    Na offenbar ist die StringList Code leer, ExtractHtmlCodeOfCurrentPage lieferte also vermutlich nicht das erwünschte bzw. erhoffte Ergebnis.

    Das Problem bei Win2000 zu suchen halte ich für voreilig, solange es sich nicht auf mehreren Win2000-Rechnern mit unterschiedlichen Benutzern nachvollziehen lässt.



  • Daran habe ich auch schon gedacht.
    ExtractHtmlCodeOfCurrentPage ist von B&M abgewandelt und die Funktion liefert in meiner Version nur true zurück, wenn auch Text drinsteht.

    Ich denke mal ich werde einfach mit IdHTTP arbeiten und GET-Requests machen.

    Warum ich denke, dass es an Win2000 liegt, ist, dass das Programm auf 10 WinXP Rechnern einwandfrei läuft.

    Nunja, ich werde wohl mal Win2000 installieren und dann mit nem Debugger überprüfen, woran es liegt.

    Dankeschön,
    fehlermeldung



  • fehlermeldung schrieb:

    die Funktion liefert in meiner Version nur true zurück, wenn auch Text drinsteht.

    Das denkst bzw. hoffst du.
    Vertrauen ist gut, Kontrolle ist besser. 😉


Anmelden zum Antworten