Zeile in Fehlermeldung ausgeben



  • Hallo,

    gibt es eine Möglichkeit die Nummer der Zeile auszugeben, in der ein Fehler auftritt.

    z.B.

    try{
      // code
      // code
      // code
      // code  hier tritt der Fehler auf
      // code
      // code
      // code
      // code
    }catch(Exception &exception){
      &exception.Message = &exception.Message + "ZEILENNUMMER ANHÄNGEN"
      Application->ShowException(&exception);
    }
    


  • Such mal in der BCB-Hilfe nach __ThrowLineNumber().

    Gruß,

    Alexander



  • Vielen vielen vielen Dank 🙂

    Alexander Kempf schrieb:

    Such mal in der BCB-Hilfe nach __ThrowLineNumber().

    Gruß,

    Alexander



  • Hi,
    ich wärme diesen Thread mal auf, weil ich ebenfalls an diesem Punkt bin wo dieser Thread aufhört.

    Mein Problem ist allerdings das bei mir immer eine leere Zeile steht.

    Ich habe die Except.h includiert und ich habe auch in der Options Quelle den Parameter -xp angefügt. So wie es in der BCB hiplfe beschrieben steht aber wieso funzt das ganze bei mir nicht.

    try
            {
                if(isdigit(svrList->Values["numplayers"].operator[] (1)) && isdigit(svrList->Values["maxplayers"].operator[] (1)))
                {
                    iSpOnl =    svrList->Values["numplayers"].ToInt();
                    iSpMax =    svrList->Values["maxplayers"].ToInt();
                }
    
                iSpielerOnline  +=  iSpOnl < 0 ? 0 : iSpOnl > 128 ? 0 : iSpOnl;
                iSpielerMax     +=  iSpMax < 0 ? 0 : iSpMax > 128 ? 0 : iSpMax;
            }
            catch( Exception &e )
            {
                ShowMessage(  e.Message + "\n\n"
                      + "An exception of type " + __ThrowExceptionName()
                      + "\nwas thrown by line " + AnsiString(__ThrowLineNumber())
    
                      + "\nof file " + __ThrowFileName() );
            }
    

    Der Code stammt aus dem Beispiel in der Hilfe.



  • ich hab' das gleiche Ploblem.

    Wenn ich eine Exception provoziere, z.B. mit a = StrToInt("Hallo"),
    ist die Zeilennummer und das File leer.

    Wenn ich aber eine Exception mit throw Exception("Hallole") auslöse,
    funktioniert's. Aber das ist ja nicht sinn der Sache !!! 😞

    Michael



  • Bei einer Exception aus einem Package (z.B. bei der Funktion StrToInt) kann er ja gar nicht die Zeilennummer des Exceptionwerfens zurückgeben, da die Packages ja nicht mit der entsprechenden Kommandozeilenoption gebaut wurden.
    Außerdem würde es euch nicht viel nützen, wenn dann dort steht:
    'Sysutils.pas' in Line '524' ...

    Also nur für Exceptions, dir ihr in eurem Programm verwendet, ist __ThrowLineNumber() und __ThrowFileName() bekannt.



  • Hallo Th,

    na klar, kann ja nicht...

    Danke für deine Antwort


Anmelden zum Antworten