Browse Source

Ein Fehler bei der unterscheidung zwischen Ordnern und Dateien auf Linux Dateisystemen wurde korrigiert

kolja 6 years ago
parent
commit
b21bba86ec
5 changed files with 27 additions and 15 deletions
  1. 3 3
      AuswahlBox.cpp
  2. 2 2
      AuswahlBox.h
  3. 4 7
      Datei.cpp
  4. 15 3
      Text.cpp
  5. 3 0
      Text.h

+ 3 - 3
AuswahlBox.cpp

@@ -120,9 +120,9 @@ void AuswahlBox::setEventParam( void *p ) // setzt den Event Parameter
     eAkP = p;
 }
 
-void AuswahlBox::setEventAktion( void( *eAk )( void *p, AuswahlBox *, int, int ) ) // setzt die Event Funktion
+void AuswahlBox::setEventAktion( std::function< void( void *, AuswahlBox *, int, int ) > event ) // setzt die Event Funktion
 {
-    this->eAk = eAk;
+    this->eAk = event;
 }
 
 void AuswahlBox::setSchriftZ( Schrift *schrift ) // setzt die schrift
@@ -695,7 +695,7 @@ void AuswahlBox::setMsMausAlphaFeldStrength( int i, int afSt ) // Multistyle Mau
 
 void AuswahlBox::setAuswahl( int i ) // Eintrag auswählen
 {
-    if( i < anzahl )
+    if( i < anzahl && i != auswahl )
     {
         auswahl = i;
         if( eAk )

+ 2 - 2
AuswahlBox.h

@@ -74,7 +74,7 @@ namespace Framework
         int mausEintrag;
         bool scrollAnzeigen;
         void *eAkP;
-        void( *eAk )( void *p, AuswahlBox *, int, int );
+        std::function< void( void *, AuswahlBox *, int, int ) > eAk;
         int ref;
 
     public:
@@ -87,7 +87,7 @@ namespace Framework
         __declspec( dllexport ) void setEventParam( void *p );
         // Setzt die Rückruffunktion, die Aufgerufen wird, wenn der Benutzer ein neues Element auswählt
         //  eAk: Die Rückruffunktion
-        __declspec( dllexport ) void setEventAktion( void( *eAk )( void *p, AuswahlBox *, int, int ) );
+        __declspec( dllexport ) void setEventAktion( std::function< void( void *, AuswahlBox *, int, int ) > event );
         // Setzt die verwendete Schrift
         //  schrift: Die Schrift
         __declspec( dllexport ) void setSchriftZ( Schrift *schrift );

+ 4 - 7
Datei.cpp

@@ -868,13 +868,10 @@ bool Framework::DateiIstVerzeichnis( const char *pfad ) // pr
     FindClose( handle );
     return ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) != 0;
 #else
-    std::ifstream file( pfad );
-    if( file.good() )
-    {
-        std::ifstream file2( pfad, std::ios::out );
-        if( !file2.good() )
-            return 1;
-    }
+    struct stat path_stat;
+    stat( pfad, &path_stat );
+    if( S_ISDIR( path_stat.st_mode ) )
+        return 1;
     return 0;
 #endif
 }

+ 15 - 3
Text.cpp

@@ -50,6 +50,18 @@ Text::Text( int zahl )
     *this = zahl;
 }
 
+// Erstellt ein neues Text Objekt mit einer zahl als text
+//  num: Die Zahl, die im Text sein soll
+Text::Text( double num )
+    : txt( 0 ),
+    suchGBeg( 0 ),
+    suchGEnd( 0 ),
+    precision( 0 ),
+    ref( 1 )
+{
+    *this = num;
+}
+
 // Destruktor 
 Text::~Text()
 {
@@ -1059,21 +1071,21 @@ Text::operator char*( ) const
 
 Text::operator int() const
 {
-    if( txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
+    if( getLength() > 2 && txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
         return TextZuInt( ( txt + 2 ), 16 );
     return TextZuInt( txt, 10 );
 }
 
 Text::operator __int64() const
 {
-    if( txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
+    if( getLength() > 2 && txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
         return TextZuInt64( ( txt + 2 ), 16 );
     return TextZuInt64( txt, 10 );
 }
 
 Text::operator double() const
 {
-    if( txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
+    if( getLength() > 2 && txt[ 0 ] == '0' && txt[ 1 ] == 'x' )
         return TextZuInt( ( txt + 2 ), 16 );
     return TextZuDouble( txt );
 }

+ 3 - 0
Text.h

@@ -29,6 +29,9 @@ namespace Framework
         // Erstellt ein neues Text Objekt mit einer zahl als text
         //  zahl: Die Zahl, die im Text sein soll
         __declspec( dllexport ) Text( int zahl );
+        // Erstellt ein neues Text Objekt mit einer zahl als text
+        //  num: Die Zahl, die im Text sein soll
+        __declspec( dllexport ) Text( double num );
         // Löscht den Text
         __declspec( dllexport ) ~Text();
         // Legt die Suchgrenzen fest, die von den Suchfunktionen verwendet werden.