Fehler: " ist kein gültiger Integerwert



  • Hallo,

    habe folgendes Problem:
    Wenn ohne Laufzeit-Packages Compiliere kommt folgender Fehler wenn ich die *.exe vom Explorer aus ausführe:
    " ist kein gültiger Integerwert

    Weiß jemand wieso der Fehler kommt, oder besser noch wie ich den Fehler wegbekomme?

    Vielen Dank
    dr.sam



  • und wo im code passiert das? debugger benutzen

    und lass mich raten, du liesst ein einem TEdit oder ähnliches eine zahl ein und wandelst es mit StrToInt() um?

    mfg
    BigNeal



  • Hier ist mein Code:

    Es handelt sich um eine Geburtstagsfunktion, die aus einer Datei (keine Datenbank), in der Personen mit Name, Straße Ort usw. und auch dem Geuburtsdatum stehen, die Personen die Geburtstag haben heraussucht, das Alter errechnet (dazu brauche ich StrToInt) und in ListBox2 ausgibt.

    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
     tDaten Inhalt;   TAdressen funktions;           // Klassen deklarieren
     char *Speicherfile = funktions.GetSpeicherAdresse();     // Speicheradresse ermitteln
    
     Date->Caption=DateToStr(Datumfunktionen.CurrentDate());  // Heutiges Datum ermitteln
    
     FILE *fs;  bool Ergebnis_Geb=false;   int i, Alter=0;  char buff[50];
     AnsiString DatumSys;
     AnsiString GebDatumPerson;
     AnsiString JahrSys;
     AnsiString JahrPers;
     char ListFile[100];
    
     ListBox2->Clear();
    
     fs=fopen(Speicherfile,"r+b");
     fread(ListFile,99,1,fs);
     fclose(fs);
    
     fs=fopen(ListFile,"r+b");
     fseek(fs,0,SEEK_END);
     int x=ftell(fs)/sizeof(tDaten);
    
     if (x>0 && fs != NULL)    // Im Speicher steht min. 1 Datensatz
      {
        fseek(fs,0,SEEK_SET);
        for (i=1; i<=x; ++i)
        {
         fread(&Inhalt,sizeof(tDaten),1,fs);
         DatumSys=Date->Caption;
         GebDatumPerson=Inhalt.Geburtsdatum;
         JahrPers=GebDatumPerson.SubString(7,4);   // Jahr in extra Variable schreiben
         JahrSys= DatumSys.SubString(7,4);         // Jahr in extra Variable schreiben
         GebDatumPerson.SetLength(6);          // Jahr ausschneiden
         DatumSys.SetLength(6);                // Jahr ausschneiden
         if (GebDatumPerson.AnsiCompare(DatumSys)==0)  // Vergleichen ob Tag und Monat gleich sind
         {
           Alter= (StrToInt(JahrSys))- (StrToInt(JahrPers) );
           sprintf(buff,"%-15s %-15s %-11s     %i",Inhalt.Nachname,Inhalt.Vorname,Inhalt.Geburtsdatum,Alter);
           ListBox2->Items->Add(buff);
           Ergebnis_Geb=true;
    
         } // end if (GebDatumPerson.AnsiCompare(DatumSys)==0)
        } // end for
    
      }  // end if (x>0)
    
     fclose(fs);
    
     if (Ergebnis_Geb == false)
       Application->Terminate();
    
     else
        Form1->Visible= true;
    
    }
    


  • lass mich raten, im StrToInt passiert die Fehlermedlung?

    mfg
    BigNeal



  • Ich vermute es, kann es aber nicht mit Sicherheit sagen, da der Fehler nur beim Ausführen der *.exe auftretet.
    Im C++Builder tretet der Fehler nicht auf!

    Gibt es eine Lösung wenn der Fehler bei StrToInt auftretet?



  • dr.sam schrieb:

    Ich vermute es, kann es aber nicht mit Sicherheit sagen,

    benutz den debugger

    dr.sam schrieb:

    Gibt es eine Lösung wenn der Fehler bei StrToInt auftretet?

    StrToIntDef()

    mfg
    BigNeal



  • Warum existiert kein StrToFloatDef() ?



  • Git es doch

    extern PACKAGE Extended __fastcall StrToFloatDef(const AnsiString S; const Extended Default);
    


  • Ab Version 6? Bei meinem 5er hier gibts das nicht.



  • Kann ich nicht sagen, die 5er hatte ich nie, die Vorgänger deinstalliert. Habe jedenfalls die 6er. Scheint dann aber wohl so zu sein, dass erst ab 6er



  • Hallo

    StrToFloatDef() gibts im BCB5 noch nicht, nur StrToIntDef() oder StrToFloat().

    bis bald
    akari


Anmelden zum Antworten