Browse Source

framework changes

Kolja Strohm 1 year ago
parent
commit
5630a2155c
32 changed files with 3237 additions and 3237 deletions
  1. 1 1
      Fertig/x64/data/Client.ini
  2. 1 1
      Fertig/x64/data/Minigames.ini
  3. 1 1
      Fertig/x64/data/Spiel_Asteroids.ini
  4. 1 1
      Fertig/x64/data/Spiel_Linie.ini
  5. 1 1
      Fertig/x64/data/Spiel_Stickman World Online.ini
  6. 3 3
      Fertig/x64/data/start/optionen.ini
  7. 0 2
      Fertig/x64/data_debug/Client.ini
  8. 0 2
      Fertig/x64/data_debug/Minigames.ini
  9. 0 2
      Fertig/x64/data_debug/Spiel_Asteroids.ini
  10. 0 2
      Fertig/x64/data_debug/Spiel_Linie.ini
  11. 0 2
      Fertig/x64/data_debug/Spiel_Stickman World Online.ini
  12. 2 0
      Fertig/x64/data_release/Client.ini
  13. 2 0
      Fertig/x64/data_release/Minigames.ini
  14. 2 0
      Fertig/x64/data_release/Spiel_Asteroids.ini
  15. 2 0
      Fertig/x64/data_release/Spiel_Linie.ini
  16. 2 0
      Fertig/x64/data_release/Spiel_Stickman World Online.ini
  17. 0 0
      Fertig/x64/data_release/bilder/icons.ltdb
  18. 0 0
      Fertig/x64/data_release/bilder/startbg.ltdb
  19. 0 0
      Fertig/x64/data_release/schrift/normal.ltds
  20. 0 0
      Fertig/x64/data_release/start/ladebilder.ini
  21. 0 0
      Fertig/x64/data_release/start/ladeschriften.ini
  22. 2 2
      Fertig/x64/data_release/start/optionen.ini
  23. 5 5
      SMP Headless/SMP Headless.vcxproj
  24. 324 324
      SMP/Netzwerk/Main/MSKlient.cpp
  25. 347 347
      SMP/Netzwerk/Patch/PSKlient.cpp
  26. 21 21
      SMP/Programm/Basic/Abschnitt.cpp
  27. 12 12
      SMP/Programm/Basic/Abschnitt.h
  28. 1431 1431
      SMP/Programm/Server/Patch/PatchServer.cpp
  29. 105 105
      SMP/Programm/Server/Patch/PatchServer.h
  30. 966 966
      SMP/Programm/Version/Version.cpp
  31. 5 5
      SMP/SMP.vcxproj
  32. 1 1
      SMP/data/start/optionen.ini

+ 1 - 1
Fertig/x64/data/Client.ini

@@ -1,2 +1,2 @@
 WIN32=../../../Klient/Fertig/x32
-WIN64=../../../Klient/Fertig/x64
+WIN64=../../../Klient/Fertig/Debug/x64

+ 1 - 1
Fertig/x64/data/Minigames.ini

@@ -1,2 +1,2 @@
 WIN32=../../../Klient/Fertig/Minigames/x32
-WIN64=../../../Klient/Fertig/Minigames/x64
+WIN64=../../../Klient/Fertig/Debug/Minigames/x64

+ 1 - 1
Fertig/x64/data/Spiel_Asteroids.ini

@@ -1,2 +1,2 @@
 WIN32=../../../Klient/Fertig/Spiele/x32/Asteroids
-WIN64=../../../Klient/Fertig/Spiele/x64/Asteroids
+WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Asteroids

+ 1 - 1
Fertig/x64/data/Spiel_Linie.ini

@@ -1,2 +1,2 @@
 WIN32=../../../Klient/Fertig/Spiele/x32/Linie
-WIN64=../../../Klient/Fertig/Spiele/x64/Linie
+WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Linie

+ 1 - 1
Fertig/x64/data/Spiel_Stickman World Online.ini

@@ -1,2 +1,2 @@
 WIN32=../../../Klient/Fertig/Spiele/x32/Stickman World Online
-WIN64=../../../Klient/Fertig/Spiele/x64/Stickman World Online
+WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Stickman World Online

+ 3 - 3
Fertig/x64/data/start/optionen.ini

@@ -1,9 +1,9 @@
-DisplayMonitor=0
+DisplayMonitor=1
 LadenSchriftDatei=data/schrift/normal.ltds
 Schrift=normal
 LadenHintergrundDatei=data/bilder/startbg.ltdb
 LadenHintergrundBild=bg.png
 LadeBilder=data/start/ladebilder.ini
 LadeSchriften=data/start/ladeschriften.ini
-MainServerIP=94.130.27.12
-MainServerPort=4252
+MainServerIP=78.47.96.161
+MainServerPort=5225

+ 0 - 2
Fertig/x64/data_debug/Client.ini

@@ -1,2 +0,0 @@
-WIN32=../../../Klient/Fertig/x32
-WIN64=../../../Klient/Fertig/Debug/x64

+ 0 - 2
Fertig/x64/data_debug/Minigames.ini

@@ -1,2 +0,0 @@
-WIN32=../../../Klient/Fertig/Minigames/x32
-WIN64=../../../Klient/Fertig/Debug/Minigames/x64

+ 0 - 2
Fertig/x64/data_debug/Spiel_Asteroids.ini

@@ -1,2 +0,0 @@
-WIN32=../../../Klient/Fertig/Spiele/x32/Asteroids
-WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Asteroids

+ 0 - 2
Fertig/x64/data_debug/Spiel_Linie.ini

@@ -1,2 +0,0 @@
-WIN32=../../../Klient/Fertig/Spiele/x32/Linie
-WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Linie

+ 0 - 2
Fertig/x64/data_debug/Spiel_Stickman World Online.ini

@@ -1,2 +0,0 @@
-WIN32=../../../Klient/Fertig/Spiele/x32/Stickman World Online
-WIN64=../../../Klient/Fertig/Debug/Spiele/x64/Stickman World Online

+ 2 - 0
Fertig/x64/data_release/Client.ini

@@ -0,0 +1,2 @@
+WIN32=../../../Klient/Fertig/x32
+WIN64=../../../Klient/Fertig/x64

+ 2 - 0
Fertig/x64/data_release/Minigames.ini

@@ -0,0 +1,2 @@
+WIN32=../../../Klient/Fertig/Minigames/x32
+WIN64=../../../Klient/Fertig/Minigames/x64

+ 2 - 0
Fertig/x64/data_release/Spiel_Asteroids.ini

@@ -0,0 +1,2 @@
+WIN32=../../../Klient/Fertig/Spiele/x32/Asteroids
+WIN64=../../../Klient/Fertig/Spiele/x64/Asteroids

+ 2 - 0
Fertig/x64/data_release/Spiel_Linie.ini

@@ -0,0 +1,2 @@
+WIN32=../../../Klient/Fertig/Spiele/x32/Linie
+WIN64=../../../Klient/Fertig/Spiele/x64/Linie

+ 2 - 0
Fertig/x64/data_release/Spiel_Stickman World Online.ini

@@ -0,0 +1,2 @@
+WIN32=../../../Klient/Fertig/Spiele/x32/Stickman World Online
+WIN64=../../../Klient/Fertig/Spiele/x64/Stickman World Online

+ 0 - 0
Fertig/x64/data_debug/bilder/icons.ltdb → Fertig/x64/data_release/bilder/icons.ltdb


+ 0 - 0
Fertig/x64/data_debug/bilder/startbg.ltdb → Fertig/x64/data_release/bilder/startbg.ltdb


+ 0 - 0
Fertig/x64/data_debug/schrift/normal.ltds → Fertig/x64/data_release/schrift/normal.ltds


+ 0 - 0
Fertig/x64/data_debug/start/ladebilder.ini → Fertig/x64/data_release/start/ladebilder.ini


+ 0 - 0
Fertig/x64/data_debug/start/ladeschriften.ini → Fertig/x64/data_release/start/ladeschriften.ini


+ 2 - 2
Fertig/x64/data_debug/start/optionen.ini → Fertig/x64/data_release/start/optionen.ini

@@ -1,4 +1,4 @@
-DisplayMonitor=1
+DisplayMonitor=0
 LadenSchriftDatei=data/schrift/normal.ltds
 Schrift=normal
 LadenHintergrundDatei=data/bilder/startbg.ltdb
@@ -6,4 +6,4 @@ LadenHintergrundBild=bg.png
 LadeBilder=data/start/ladebilder.ini
 LadeSchriften=data/start/ladeschriften.ini
 MainServerIP=94.130.27.12
-MainServerPort=5252
+MainServerPort=4252

+ 5 - 5
SMP Headless/SMP Headless.vcxproj

@@ -23,32 +23,32 @@
     <ProjectGuid>{097A9588-990D-4E7B-8F3D-1C25E4FC2913}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>SMPHeadless</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>

+ 324 - 324
SMP/Netzwerk/Main/MSKlient.cpp

@@ -2,396 +2,396 @@
 
 // Inhalt der MSKlient Klasse aus MSKlient.h
 // Konstruktor
-MSKlient::MSKlient( const char *ip, int port )
-    : ReferenceCounter()
+MSKlient::MSKlient(const char* ip, int port)
+	: ReferenceCounter()
 {
-    k = new SSLKlient();
-    fehler = new Text( "Keine Verbindung zum Server." );
-    this->ip = new Text( ip );
-    this->port = port;
-    verbunden = 0;
-    eingeloggt = 0;
-    InitializeCriticalSection( &cs );
+	k = new SSLKlient();
+	fehler = new Text("Keine Verbindung zum Server.");
+	this->ip = new Text(ip);
+	this->port = port;
+	verbunden = 0;
+	eingeloggt = 0;
+	InitializeCriticalSection(&cs);
 }
 
 // Destruktor
 MSKlient::~MSKlient()
 {
-    if( verbunden )
-        trenne();
-    k->release();
-    ip->release();
-    fehler->release();
-    DeleteCriticalSection( &cs );
+	if (verbunden)
+		trenne();
+	k->release();
+	ip->release();
+	fehler->release();
+	DeleteCriticalSection(&cs);
 }
 
 // nicht constant
 void MSKlient::lock()
 {
-    EnterCriticalSection( &cs );
+	EnterCriticalSection(&cs);
 }
 
 void MSKlient::unlock()
 {
-    LeaveCriticalSection( &cs );
+	LeaveCriticalSection(&cs);
 }
 
 bool MSKlient::verbinden()
 {
-    if( verbunden )
-        return 1;
-    lock();
-    bool b = k->verbinde( port, ip->getText() );
-    if( !b )
-    {
-        fehler->setText( "Fehler während verbinden bei MainServer.\nPort:" );
-        fehler->append( port );
-        fehler->append( " IP:" );
-        fehler->append( ip->getText() );
-    }
-    verbunden = b;
-    eingeloggt = 0;
-    unlock();
-    return b;
+	if (verbunden)
+		return 1;
+	lock();
+	bool b = k->verbinde(port, ip->getText());
+	if (!b)
+	{
+		fehler->setText("Fehler während verbinden bei MainServer.\nPort:");
+		fehler->append(port);
+		fehler->append(" IP:");
+		fehler->append(ip->getText());
+	}
+	verbunden = b;
+	eingeloggt = 0;
+	unlock();
+	return b;
 }
 
-bool MSKlient::login( const char *name, const char *passwort )
+bool MSKlient::login(const char* name, const char* passwort)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\1", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        unsigned char län = (unsigned char)textLength( name );
-        k->sende( (char *)&län, 1 );
-        if( län )
-            k->sende( name, län );
-        län = (unsigned char)textLength( passwort );
-        k->sende( (char *)&län, 1 );
-        if( län )
-            k->sende( passwort, län );
-        k->getNachricht( (char *)&res, 1 );
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während einloggen bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    else
-    {
-        eingeloggt = 1;
-        unlock();
-        return 1;
-    }
-    unlock();
-    return 0;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\1", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		unsigned char län = (unsigned char)textLength(name);
+		k->sende((char*)&län, 1);
+		if (län)
+			k->sende(name, län);
+		län = (unsigned char)textLength(passwort);
+		k->sende((char*)&län, 1);
+		if (län)
+			k->sende(passwort, län);
+		k->getNachricht((char*)&res, 1);
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während einloggen bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	else
+	{
+		eingeloggt = 1;
+		unlock();
+		return 1;
+	}
+	unlock();
+	return 0;
 }
 
 bool MSKlient::logout()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\2", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während ausloggen bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\2", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während ausloggen bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	return res == 1;
 }
 
 int MSKlient::getStatus()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return -1;
-    lock();
-    k->sende( "\x8", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    int status = 0;
-    if( res == 1 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        if( res == 1 )
-            status = 1;
-    }
-    if( res == 3 )
-    {
-        status = -2;
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Status Request bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    return (int)res;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return -1;
+	lock();
+	k->sende("\x8", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	int status = 0;
+	if (res == 1)
+	{
+		k->getNachricht((char*)&res, 1);
+		if (res == 1)
+			status = 1;
+	}
+	if (res == 3)
+	{
+		status = -2;
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Status Request bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	return (int)res;
 }
 
 bool MSKlient::pause()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\5", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Pausieren bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\5", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Pausieren bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	return res == 1;
 }
 
 bool MSKlient::fortsetzen()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\4", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Fortsetzen bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\4", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Fortsetzen bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	return res == 1;
 }
 
 bool MSKlient::beenden()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\6", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Beenden bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    if( res == 1 )
-    {
-        eingeloggt = 0;
-        verbunden = 0;
-    }
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\6", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Beenden bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	if (res == 1)
+	{
+		eingeloggt = 0;
+		verbunden = 0;
+	}
+	return res == 1;
 }
 
 bool MSKlient::terminieren()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\7", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Terminieren bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    if( res == 1 )
-    {
-        eingeloggt = 0;
-        verbunden = 0;
-    }
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\7", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Terminieren bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	if (res == 1)
+	{
+		eingeloggt = 0;
+		verbunden = 0;
+	}
+	return res == 1;
 }
 
-bool MSKlient::getPatchServerListe( Array< ServerData * > *list )
+bool MSKlient::getPatchServerListe(Array< ServerData* >* list)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x9", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Terminieren bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    else if( res == 1 )
-    {
-        int anz = 0;
-        k->getNachricht( (char *)&anz, 4 );
-        for( int i = 0; i < anz; i++ )
-        {
-            ServerData *s = new ServerData();
-            k->getNachricht( (char *)&s->id, 4 );
-            k->getNachricht( (char *)&s->port, 2 );
-            k->getNachricht( (char *)&s->adminPort, 2 );
-            unsigned char len = 0;
-            k->getNachricht( (char *)&len, 1 );
-            s->name.fillText( ' ', len );
-            k->getNachricht( s->name, len );
-            k->getNachricht( (char *)&len, 1 );
-            s->ip.fillText( ' ', len );
-            k->getNachricht( s->ip, len );
-            k->getNachricht( (char *)&len, 1 );
-            s->status.fillText( ' ', len );
-            k->getNachricht( s->status, len );
-            list->add( s );
-        }
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x9", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Terminieren bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	else if (res == 1)
+	{
+		int anz = 0;
+		k->getNachricht((char*)&anz, 4);
+		for (int i = 0; i < anz; i++)
+		{
+			ServerData* s = new ServerData();
+			k->getNachricht((char*)&s->id, 4);
+			k->getNachricht((char*)&s->port, 2);
+			k->getNachricht((char*)&s->adminPort, 2);
+			unsigned char len = 0;
+			k->getNachricht((char*)&len, 1);
+			s->name.fillText(' ', len);
+			k->getNachricht((char*)s->name.getText(), len);
+			k->getNachricht((char*)&len, 1);
+			s->ip.fillText(' ', len);
+			k->getNachricht((char*)s->ip.getText(), len);
+			k->getNachricht((char*)&len, 1);
+			s->status.fillText(' ', len);
+			k->getNachricht((char*)s->status.getText(), len);
+			list->add(s);
+		}
+	}
+	unlock();
+	return 1;
 }
 
-bool MSKlient::getPatchServerDetails( int id, ServerDetails *details )
+bool MSKlient::getPatchServerDetails(int id, ServerDetails* details)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\xA", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        k->sende( (char *)&id, 4 );
-        k->getNachricht( (char *)&res, 1 );
-        if( res == 1 )
-        {
-            unsigned char len = 0;
-            k->getNachricht( (char *)&len, 1 );
-            details->name.fillText( ' ', len );
-            k->getNachricht( details->name, len );
-            k->getNachricht( (char *)&len, 1 );
-            details->ip.fillText( ' ', len );
-            k->getNachricht( details->ip, len );
-            k->getNachricht( (char *)&details->port, 2 );
-            k->getNachricht( (char *)&details->adminPort, 2 );
-            k->getNachricht( (char *)&details->tasks, 4 );
-            k->getNachricht( (char *)&details->maxTasks, 4 );
-        }
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Terminieren bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\xA", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		k->sende((char*)&id, 4);
+		k->getNachricht((char*)&res, 1);
+		if (res == 1)
+		{
+			unsigned char len = 0;
+			k->getNachricht((char*)&len, 1);
+			details->name.fillText(' ', len);
+			k->getNachricht((char*)details->name.getText(), len);
+			k->getNachricht((char*)&len, 1);
+			details->ip.fillText(' ', len);
+			k->getNachricht((char*)details->ip.getText(), len);
+			k->getNachricht((char*)&details->port, 2);
+			k->getNachricht((char*)&details->adminPort, 2);
+			k->getNachricht((char*)&details->tasks, 4);
+			k->getNachricht((char*)&details->maxTasks, 4);
+		}
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Terminieren bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
 bool MSKlient::trenne()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\3", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während Trennen bei MainServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-    }
-    unlock();
-    eingeloggt = 0;
-    verbunden = 0;
-    k->trenne();
-    return res == 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\3", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während Trennen bei MainServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+	}
+	unlock();
+	eingeloggt = 0;
+	verbunden = 0;
+	k->trenne();
+	return res == 1;
 }
 
 // constant
 bool MSKlient::istVerbunden() const
 {
-    return verbunden;
+	return verbunden;
 }
 
 bool MSKlient::istEingeloggt() const
 {
-    return eingeloggt;
+	return eingeloggt;
 }
 
-const char *MSKlient::getLetzterFehler() const
+const char* MSKlient::getLetzterFehler() const
 {
-    return fehler->getText();
+	return fehler->getText();
 }

+ 347 - 347
SMP/Netzwerk/Patch/PSKlient.cpp

@@ -2,8 +2,8 @@
 
 // Inhalt der PSKlient Klasse aus PSKlient.h
 // Konstruktor
-PSKlient::PSKlient( const char *ip, int port )
-    : LTSKlient( ip, port )
+PSKlient::PSKlient(const char* ip, int port)
+	: LTSKlient(ip, port)
 {}
 
 // Destruktor
@@ -11,379 +11,379 @@ PSKlient::~PSKlient()
 {}
 
 // nicht constant
-bool PSKlient::getDateiListe( int *systemAnzahl, Array< int > *dateiAnzahl, RCArray< Text > *systeme, RCArray< RCArray< Text > > *dateien )
+bool PSKlient::getDateiListe(int* systemAnzahl, Array< int >* dateiAnzahl, RCArray< Text >* systeme, RCArray< RCArray< Text > >* dateien)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\xB", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während GetDateiListe bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    *systemAnzahl = 0;
-    int län = 0;
-    k->getNachricht( (char *)&län, 4 );
-    while( län )
-    { // System Sleife
-        char *txt = new char[ län + 1 ];
-        txt[ län ] = 0;
-        k->getNachricht( txt, län );
-        systeme->set( new Text( txt ), *systemAnzahl );
-        delete[] txt;
-        dateien->set( new RCArray< Text >(), *systemAnzahl );
-        int dAnzahl = 0;
-        k->getNachricht( (char *)&län, 4 );
-        while( län )
-        { // Datei Schleife
-            char *txt = new char[ län + 1 ];
-            txt[ län ] = 0;
-            k->getNachricht( txt, län );
-            dateien->z( *systemAnzahl )->set( new Text( txt ), dAnzahl );
-            delete[] txt;
-            dAnzahl++;
-            k->getNachricht( (char *)&län, 4 );
-        }
-        dateiAnzahl->set( dAnzahl, *systemAnzahl );
-        ( *systemAnzahl )++;
-        k->getNachricht( (char *)&län, 4 );
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\xB", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während GetDateiListe bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	*systemAnzahl = 0;
+	int län = 0;
+	k->getNachricht((char*)&län, 4);
+	while (län)
+	{ // System Sleife
+		char* txt = new char[län + 1];
+		txt[län] = 0;
+		k->getNachricht(txt, län);
+		systeme->set(new Text(txt), *systemAnzahl);
+		delete[] txt;
+		dateien->set(new RCArray< Text >(), *systemAnzahl);
+		int dAnzahl = 0;
+		k->getNachricht((char*)&län, 4);
+		while (län)
+		{ // Datei Schleife
+			char* txt = new char[län + 1];
+			txt[län] = 0;
+			k->getNachricht(txt, län);
+			dateien->z(*systemAnzahl)->set(new Text(txt), dAnzahl);
+			delete[] txt;
+			dAnzahl++;
+			k->getNachricht((char*)&län, 4);
+		}
+		dateiAnzahl->set(dAnzahl, *systemAnzahl);
+		(*systemAnzahl)++;
+		k->getNachricht((char*)&län, 4);
+	}
+	unlock();
+	return 1;
 }
 
 bool PSKlient::updateFertig()
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\xC", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während UpdateFertig bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\xC", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während UpdateFertig bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::updateStarten( int dateiGruppeId )
+bool PSKlient::updateStarten(int dateiGruppeId)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\xD", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während UpdateStarten bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    k->sende( (char *)&dateiGruppeId, 4 );
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während UpdateStarten bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\xD", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während UpdateStarten bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	k->sende((char*)&dateiGruppeId, 4);
+	k->getNachricht((char*)&res, 1);
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während UpdateStarten bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::getFileGroupInfoList( Array< FileGroupInfo * > *list )
+bool PSKlient::getFileGroupInfoList(Array< FileGroupInfo* >* list)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x10", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        int anz = 0;
-        k->getNachricht( (char *)&anz, 4 );
-        for( int i = 0; i < anz; i++ )
-        {
-            FileGroupInfo *info = new FileGroupInfo();
-            k->getNachricht( (char *)&info->id, 4 );
-            unsigned char len = 0;
-            k->getNachricht( (char *)&len, 1 );
-            info->name.fillText( ' ', len );
-            k->getNachricht( info->name, len );
-            k->getNachricht( (char *)&len, 1 );
-            info->status.fillText( ' ', len );
-            k->getNachricht( info->status, len );
-            unsigned short l = 0;
-            k->getNachricht( (char *)&l, 2 );
-            info->path.fillText( ' ', l );
-            k->getNachricht( info->path, l );
-            k->getNachricht( (char *)&info->version, 4 );
-            list->add( info );
-        }
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getFileGroupInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x10", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		int anz = 0;
+		k->getNachricht((char*)&anz, 4);
+		for (int i = 0; i < anz; i++)
+		{
+			FileGroupInfo* info = new FileGroupInfo();
+			k->getNachricht((char*)&info->id, 4);
+			unsigned char len = 0;
+			k->getNachricht((char*)&len, 1);
+			info->name.fillText(' ', len);
+			k->getNachricht((char*)info->name.getText(), len);
+			k->getNachricht((char*)&len, 1);
+			info->status.fillText(' ', len);
+			k->getNachricht((char*)info->status.getText(), len);
+			unsigned short l = 0;
+			k->getNachricht((char*)&l, 2);
+			info->path.fillText(' ', l);
+			k->getNachricht((char*)info->path.getText(), l);
+			k->getNachricht((char*)&info->version, 4);
+			list->add(info);
+		}
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getFileGroupInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::getSystemInfoList( Array< SystemInfo > *list )
+bool PSKlient::getSystemInfoList(Array< SystemInfo >* list)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x11", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        int anz = 0;
-        k->getNachricht( (char *)&anz, 4 );
-        for( int i = 0; i < anz; i++ )
-        {
-            SystemInfo info;
-            k->getNachricht( (char *)&info.id, 4 );
-            unsigned char len = 0;
-            k->getNachricht( (char *)&len, 1 );
-            info.name.fillText( ' ', len );
-            k->getNachricht( info.name, len );
-            list->add( info );
-        }
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x11", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		int anz = 0;
+		k->getNachricht((char*)&anz, 4);
+		for (int i = 0; i < anz; i++)
+		{
+			SystemInfo info;
+			k->getNachricht((char*)&info.id, 4);
+			unsigned char len = 0;
+			k->getNachricht((char*)&len, 1);
+			info.name.fillText(' ', len);
+			k->getNachricht((char*)info.name.getText(), len);
+			list->add(info);
+		}
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::getFileInfoList( int system, int group, Array< FileInfo > *list )
+bool PSKlient::getFileInfoList(int system, int group, Array< FileInfo >* list)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x12", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        k->sende( (char *)&system, 4 );
-        k->sende( (char *)&group, 4 );
-        int anz = 0;
-        k->getNachricht( (char *)&anz, 4 );
-        for( int i = 0; i < anz; i++ )
-        {
-            FileInfo obj;
-            k->getNachricht( (char *)&obj.id, 4 );
-            unsigned short len = 0;
-            k->getNachricht( (char *)&len, 2 );
-            obj.path.fillText( ' ', len );
-            k->getNachricht( obj.path, len );
-            k->getNachricht( (char *)&obj.version, 4 );
-            unsigned char l = 0;
-            k->getNachricht( (char *)&l, 1 );
-            obj.time.fillText( ' ', l );
-            k->getNachricht( obj.time, l );
-            list->add( obj );
-        }
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x12", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		k->sende((char*)&system, 4);
+		k->sende((char*)&group, 4);
+		int anz = 0;
+		k->getNachricht((char*)&anz, 4);
+		for (int i = 0; i < anz; i++)
+		{
+			FileInfo obj;
+			k->getNachricht((char*)&obj.id, 4);
+			unsigned short len = 0;
+			k->getNachricht((char*)&len, 2);
+			obj.path.fillText(' ', len);
+			k->getNachricht((char*)obj.path.getText(), len);
+			k->getNachricht((char*)&obj.version, 4);
+			unsigned char l = 0;
+			k->getNachricht((char*)&l, 1);
+			obj.time.fillText(' ', l);
+			k->getNachricht((char*)obj.time.getText(), l);
+			list->add(obj);
+		}
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::getFileVersion( char *path, int system, int group, int *version )
+bool PSKlient::getFileVersion(char* path, int system, int group, int* version)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x13", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        unsigned short len = textLength( path );
-        k->sende( (char *)&len, 2 );
-        k->sende( path, len );
-        k->sende( (char *)&group, 4 );
-        k->sende( (char *)&system, 4 );
-        k->getNachricht( (char *)version, 4 );
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x13", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		unsigned short len = textLength(path);
+		k->sende((char*)&len, 2);
+		k->sende(path, len);
+		k->sende((char*)&group, 4);
+		k->sende((char*)&system, 4);
+		k->getNachricht((char*)version, 4);
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::updateFile( const char *pfad, char status, Zeit *zLetzteÄnderung, int system, int gruppe )
+bool PSKlient::updateFile(const char* pfad, char status, Zeit* zLetzteÄnderung, int system, int gruppe)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x14", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        unsigned short len = textLength( pfad );
-        k->sende( (char *)&len, 2 );
-        k->sende( pfad, len );
-        k->sende( &status, 1 );
-        if( zLetzteÄnderung )
-        {
-            Text *time = zLetzteÄnderung->getZeit( "y-m-d h:i:s" );
-            unsigned char l = (unsigned char)time->getLength();
-            k->sende( (char *)&l, 1 );
-            k->sende( time->getText(), l );
-            time->release();
-        }
-        else
-            k->sende( (char *)"\x0", 1 );
-        k->sende( (char *)&system, 4 );
-        k->sende( (char *)&gruppe, 4 );
-        k->getNachricht( (char *)&res, 1 );
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x14", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		unsigned short len = textLength(pfad);
+		k->sende((char*)&len, 2);
+		k->sende(pfad, len);
+		k->sende(&status, 1);
+		if (zLetzteÄnderung)
+		{
+			Text* time = zLetzteÄnderung->getZeit("y-m-d h:i:s");
+			unsigned char l = (unsigned char)time->getLength();
+			k->sende((char*)&l, 1);
+			k->sende(time->getText(), l);
+			time->release();
+		}
+		else
+			k->sende((char*)"\x0", 1);
+		k->sende((char*)&system, 4);
+		k->sende((char*)&gruppe, 4);
+		k->getNachricht((char*)&res, 1);
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
-bool PSKlient::dateiGruppeUpdate( int gruppe )
+bool PSKlient::dateiGruppeUpdate(int gruppe)
 {
-    if( !verbunden )
-        verbinden();
-    if( !verbunden )
-        return 0;
-    lock();
-    k->sende( "\x15", 1 );
-    unsigned char res = 0;
-    k->getNachricht( (char *)&res, 1 );
-    if( res == 1 )
-    {
-        k->sende( (char *)&gruppe, 4 );
-        k->getNachricht( (char *)&res, 1 );
-    }
-    if( res == 3 )
-    {
-        k->getNachricht( (char *)&res, 1 );
-        char *txt = new char[ res + 1 ];
-        k->getNachricht( txt, res );
-        txt[ res ] = 0;
-        fehler->setText( "Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:" );
-        fehler->append( txt );
-        delete[] txt;
-        unlock();
-        return 0;
-    }
-    unlock();
-    return 1;
+	if (!verbunden)
+		verbinden();
+	if (!verbunden)
+		return 0;
+	lock();
+	k->sende("\x15", 1);
+	unsigned char res = 0;
+	k->getNachricht((char*)&res, 1);
+	if (res == 1)
+	{
+		k->sende((char*)&gruppe, 4);
+		k->getNachricht((char*)&res, 1);
+	}
+	if (res == 3)
+	{
+		k->getNachricht((char*)&res, 1);
+		char* txt = new char[res + 1];
+		k->getNachricht(txt, res);
+		txt[res] = 0;
+		fehler->setText("Fehler während getSystemInfoList bei PatchServer.\nServer Rückgabe:");
+		fehler->append(txt);
+		delete[] txt;
+		unlock();
+		return 0;
+	}
+	unlock();
+	return 1;
 }
 
 void PSKlient::abbruch()
 {
-    if( verbunden )
-        k->trenne();
-    eingeloggt = 0;
-    verbunden = 0;
+	if (verbunden)
+		k->trenne();
+	eingeloggt = 0;
+	verbunden = 0;
 }

+ 21 - 21
SMP/Programm/Basic/Abschnitt.cpp

@@ -3,39 +3,39 @@
 
 // Inhalt der Abschnitt Klasse aus Abschnitt.h
 // Konstruktor
-Abschnitt::Abschnitt( Bildschirm *b )
-    : ReferenceCounter()
+Abschnitt::Abschnitt(Bildschirm* b)
+	: ReferenceCounter()
 {
-    this->b = b;
-    sichtbar = 0;
+	this->b = b;
+	sichtbar = 0;
 }
 
 // Destruktor
 Abschnitt::~Abschnitt()
 {
-    if( b )
-        b->release();
+	if (b)
+		b->release();
 }
 
-int Abschnitt::getColorFromStatus( char *status )
+int Abschnitt::getColorFromStatus(const char* status)
 {
-    if( Text( "Unbekannt" ).istGleich( status ) )
-        return 0xFFFF8800;
-    if( Text( "Unerreichbar" ).istGleich( status ) )
-        return 0xFFFF0000;
-    if( Text( "Offline" ).istGleich( status ) )
-        return 0xFFFFFF00;
-    if( Text( "Pausiert" ).istGleich( status ) )
-        return 0xFF88FF00;
-    if( Text( "Online" ).istGleich( status ) )
-        return 0xFF00FF00;
-    if( Text( "Veraltet" ).istGleich( status ) )
-        return 0xFFB0FF00;
-    return 0xFFFFFFFF;
+	if (Text("Unbekannt").istGleich(status))
+		return 0xFFFF8800;
+	if (Text("Unerreichbar").istGleich(status))
+		return 0xFFFF0000;
+	if (Text("Offline").istGleich(status))
+		return 0xFFFFFF00;
+	if (Text("Pausiert").istGleich(status))
+		return 0xFF88FF00;
+	if (Text("Online").istGleich(status))
+		return 0xFF00FF00;
+	if (Text("Veraltet").istGleich(status))
+		return 0xFFB0FF00;
+	return 0xFFFFFFFF;
 }
 
 // constant
 bool Abschnitt::istSichtbar() const
 {
-    return sichtbar;
+	return sichtbar;
 }

+ 12 - 12
SMP/Programm/Basic/Abschnitt.h

@@ -8,21 +8,21 @@ using namespace Framework;
 class Abschnitt : public virtual ReferenceCounter
 {
 protected:
-    Bildschirm *b;
-    bool sichtbar;
+	Bildschirm* b;
+	bool sichtbar;
 
-    int getColorFromStatus( char *status );
+	int getColorFromStatus(const char* status);
 
 public:
-    // Konstruktor
-    Abschnitt( Bildschirm *b );
-    // Destruktor
-    ~Abschnitt();
-    // nicht constant
-    virtual void setFenster( Fenster *f ) = 0;
-    virtual void setSichtbar( bool s ) = 0;
-    // constant
-    bool istSichtbar() const;
+	// Konstruktor
+	Abschnitt(Bildschirm* b);
+	// Destruktor
+	~Abschnitt();
+	// nicht constant
+	virtual void setFenster(Fenster* f) = 0;
+	virtual void setSichtbar(bool s) = 0;
+	// constant
+	bool istSichtbar() const;
 };
 
 #endif

+ 1431 - 1431
SMP/Programm/Server/Patch/PatchServer.cpp

@@ -7,1603 +7,1603 @@
 
 // Inhalt der PSUpdate Klasse aus PatchServer.h
 // Kontruktor
-PSUpdate::PSUpdate( PatchServer *zPSA, AdminAccount *account )
-    : Thread()
+PSUpdate::PSUpdate(PatchServer* zPSA, AdminAccount* account)
+	: Thread()
 {
-    this->account = account;
-    this->zPSA = zPSA;
-    gruppeAnzahl = 0;
-    gruppeId = 0;
-    this->psc = 0;
-    id = 0;
+	this->account = account;
+	this->zPSA = zPSA;
+	gruppeAnzahl = 0;
+	gruppeId = 0;
+	this->psc = 0;
+	id = 0;
 }
 
 // Destruktor
 PSUpdate::~PSUpdate()
 {
-    if( psc )
-    {
-        psc->abbruch();
-        psc->release();
-    }
-    account->release();
-    delete[] gruppeId;
+	if (psc)
+	{
+		psc->abbruch();
+		psc->release();
+	}
+	account->release();
+	delete[] gruppeId;
 }
 
 // nicht constant
-void PSUpdate::setServer( const char *ip, unsigned short port )
+void PSUpdate::setServer(const char* ip, unsigned short port)
 {
-    if( psc )
-    {
-        psc->abbruch();
-        psc->release();
-    }
-    psc = new PSKlient( ip, port );
+	if (psc)
+	{
+		psc->abbruch();
+		psc->release();
+	}
+	psc = new PSKlient(ip, port);
 }
 
-void PSUpdate::setUpdateListe( int gAnzahl, Array< int > *gId )
+void PSUpdate::setUpdateListe(int gAnzahl, Array< int >* gId)
 {
-    gruppeAnzahl = gAnzahl;
-    delete[] gruppeId;
-    gruppeId = 0;
-    if( gAnzahl )
-    {
-        gruppeId = new int[ gAnzahl ];
-        for( int i = 0; i < gAnzahl; i++ )
-            gruppeId[ i ] = gId->get( i );
-    }
+	gruppeAnzahl = gAnzahl;
+	delete[] gruppeId;
+	gruppeId = 0;
+	if (gAnzahl)
+	{
+		gruppeId = new int[gAnzahl];
+		for (int i = 0; i < gAnzahl; i++)
+			gruppeId[i] = gId->get(i);
+	}
 }
 
 void PSUpdate::thread()
 {
-    if( !psc )
-    {
-        for( int g = 0; g < gruppeAnzahl; g++ )
-            zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-        return;
-    }
-    if( !psc->login( account->zName()->getText(), account->zPasswort()->getText() ) )
-    {
-        for( int g = 0; g < gruppeAnzahl; g++ )
-            zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-        return;
-    }
-    Array< FileGroupInfo * > fileGroupList;
-    psc->getFileGroupInfoList( &fileGroupList );
-    Array< SystemInfo > systemT;
-    psc->getSystemInfoList( &systemT );
-    int gAnz = fileGroupList.getEintragAnzahl();
-    for( int g = 0; g < gruppeAnzahl; g++ )
-    {
-        Text *initPfad = new Text( "data/" );
-        for( int i = 0; i < gAnz; i++ )
-        {
-            if( gruppeId[ g ] == fileGroupList.get( i )->id )
-            {
-                initPfad->append( (char *)fileGroupList.get( i )->name );
-                break;
-            }
-        }
-        initPfad->append( ".ini" );
-        InitDatei *systemInit = new InitDatei( initPfad );
-        systemInit->laden();
-        bool cont = 0;
-        int sAnz = systemT.getEintragAnzahl();
-        for( int i = 0; i < sAnz; i++ ) // Prüfen, ob Lokale Version aktuell ist
-        {
-            if( !systemInit->wertExistiert( systemT.get( i ).name ) )
-            {
-                systemInit->release();
-                zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-                cont = 1;
-                break;
-            }
-            Text *pfad = new Text( systemInit->zWert( (char *)systemT.get( i ).name )->getText() );
-            pfad->append( "/" );
-            Array< FileInfo > dateiT;
-            psc->getFileInfoList( systemT.get( i ).id, gruppeId[ g ], &dateiT );
-            int dAnz = dateiT.getEintragAnzahl();
-            bool br = 0;
-            for( int j = 0; j < dAnz; j++ )
-            {
-                Text *pf = new Text( pfad->getText() );
-                pf->append( dateiT.get( j ).path.getText() );
-                if( !DateiExistiert( pf->getText() ) )
-                {
-                    pfad->release();
-                    pf->release();
-                    systemInit->release();
-                    zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-                    cont = 1;
-                    br = 1;
-                    break;
-                }
-                if( !DateiIstVerzeichnis( pf->getText() ) )
-                {
-                    Datei *d = new Datei();
-                    d->setDatei( pf->getText() );
-                    Zeit *zeit = d->getLastChange();
-                    d->release();
-                    if( !zeit->istGleich( "y-m-d h:i:s", dateiT.get( j ).time.getText() ) )
-                    {
-                        zeit->release();
-                        pfad->release();
-                        pf->release();
-                        systemInit->release();
-                        zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-                        cont = 1;
-                        br = 1;
-                        break;
-                    }
-                    zeit->release();
-                }
-                pf->release();
-            }
-            if( br )
-                break;
-            pfad->release();
-        }
-        if( cont )
-            continue;
-        if( psc->updateStarten( gruppeId[ g ] ) )
-        {
-            RCArray< Text > *systemA = new RCArray< Text >();
-            RCArray< RCArray< Text > > *dateiA = new RCArray< RCArray< Text > >();
-            Array< int > *dateiAnzahlA = new Array< int >();
-            int systemAnzahl = 0;
-            bool ok = psc->getDateiListe( &systemAnzahl, dateiAnzahlA, systemA, dateiA );
-            if( !ok )
-            {
-                systemA->release();
-                dateiA->release();
-                dateiAnzahlA->release();
-                systemInit->release();
-                zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-                continue;
-            }
-            __int64 maxAktionen = 0;
-            for( int i = 0; i < systemAnzahl; i++ )
-            {
-                for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
-                {
-                    Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
-                    pfad->append( "/" );
-                    pfad->append( dateiA->z( i )->z( j )->getText() );
-                    Datei *d = new Datei();
-                    d->setDatei( pfad );
-                    if( !d->istOrdner() )
-                        maxAktionen += d->getSize();
-                    d->release();
-                }
-            }
-            __int64 aktionen = 0;
-            int prozent = 0;
-            bool br = 0;
-            for( int i = 0; i < systemAnzahl; i++ )
-            {
-                for( int j = 0; j < dateiAnzahlA->get( i ); j++ )
-                {
-                    Text *pfad = new Text( systemInit->zWert( systemA->z( i )->getText() )->getText() );
-                    pfad->append( "/" );
-                    pfad->append( dateiA->z( i )->z( j )->getText() );
-                    Datei *d = new Datei();
-                    d->setDatei( pfad );
-                    if( d->istOrdner() )
-                    {
-                        d->release();
-                        continue;
-                    }
-                    __int64 gr = d->getSize();
-                    d->open( Datei::Style::lesen );
-                    int version;
-                    int system = 0;
-                    for( int s = 0; s < sAnz; s++ )
-                    {
-                        if( systemT.get( s ).name.istGleich( systemA->z( i )->getText() ) )
-                            system = systemT.get( s ).id;
-                    }
-                    psc->getFileVersion( dateiA->z( i )->z( j )->getText(), system, gruppeId[ g ], &version );
-                    psc->lock();
-                    psc->zKlient()->sende( "\xE", 1 );
-                    char ret = 0;
-                    psc->zKlient()->getNachricht( &ret, 1 );
-                    if( ret == 1 )
-                    {
-                        psc->zKlient()->sende( (char *)&system, 4 );
-                        psc->zKlient()->sende( (char *)&version, 4 );
-                        short län = dateiA->z( i )->z( j )->getLength();
-                        psc->zKlient()->sende( (char *)&län, 2 );
-                        psc->zKlient()->sende( dateiA->z( i )->z( j )->getText(), län );
-                        psc->zKlient()->getNachricht( &ret, 1 );
-                        if( ret == 1 )
-                        {
-                            while( gr )
-                            {
-                                if( gr >= 2048 )
-                                {
-                                    gr -= 2048;
-                                    län = 2048;
-                                }
-                                else
-                                {
-                                    län = (int)gr;
-                                    gr = 0;
-                                }
-                                if( län < 0 )
-                                    break;
-                                psc->zKlient()->sende( (char *)&län, 2 );
-                                char *buff = new char[ län ];
-                                d->lese( buff, län );
-                                psc->zKlient()->sende( buff, län );
-                                delete[] buff;
-                                aktionen += län;
-                                if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
-                                {
-                                    prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
-                                    zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
-                                }
-                            }
-                            psc->zKlient()->sende( "\0\0", 2 );
-                            psc->zKlient()->getNachricht( &ret, 1 );
-                        }
-                    }
-                    if( prozent != 100 / ( maxAktionen / (long double)aktionen ) )
-                    {
-                        prozent = (int)( 100 / ( maxAktionen / (long double)aktionen ) );
-                        zPSA->setUpdateProzent( prozent, gruppeId[ g ] );
-                    }
-                    if( ret == 3 )
-                    {
-                        d->close();
-                        d->release();
-                        systemA->release();
-                        dateiA->release();
-                        dateiAnzahlA->release();
-                        char l = 0;
-                        psc->zKlient()->getNachricht( &l, 1 );
-                        char *txt = new char[ l + 1 ];
-                        txt[ l ] = 0;
-                        if( l )
-                            psc->zKlient()->getNachricht( txt, l );
-                        std::cout << "Error: " << txt << "\n";
-                        delete[] txt;
-                        psc->unlock();
-                        zPSA->setUpdateProzent( 0, gruppeId[ g ] );
-                        zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-                        br = 1;
-                        break;
-                    }
-                    psc->unlock();
-                    d->close();
-                    d->release();
-                }
-                if( br )
-                    break;
-            }
-            if( br )
-                continue;
-            psc->updateFertig();
-            systemA->release();
-            dateiA->release();
-            dateiAnzahlA->release();
-        }
-        else
-        {
-            systemInit->release();
-            zPSA->setUpdateProzent( 0, gruppeId[ g ] );
-            zPSA->setUpdateFertig( 1, gruppeId[ g ] );
-            continue;
-        }
-        zPSA->setUpdateProzent( 0, gruppeId[ g ] );
-        zPSA->setUpdateFertig( 0, gruppeId[ g ] );
-        systemInit->release();
-    }
-    for( int i = 0; i < gAnz; i++ )
-        delete fileGroupList.get( i );
-    zPSA->setUpdateFertig( 0, 0 );
-    run = 0;
+	if (!psc)
+	{
+		for (int g = 0; g < gruppeAnzahl; g++)
+			zPSA->setUpdateFertig(1, gruppeId[g]);
+		return;
+	}
+	if (!psc->login(account->zName()->getText(), account->zPasswort()->getText()))
+	{
+		for (int g = 0; g < gruppeAnzahl; g++)
+			zPSA->setUpdateFertig(1, gruppeId[g]);
+		return;
+	}
+	Array< FileGroupInfo* > fileGroupList;
+	psc->getFileGroupInfoList(&fileGroupList);
+	Array< SystemInfo > systemT;
+	psc->getSystemInfoList(&systemT);
+	int gAnz = fileGroupList.getEintragAnzahl();
+	for (int g = 0; g < gruppeAnzahl; g++)
+	{
+		Text* initPfad = new Text("data/");
+		for (int i = 0; i < gAnz; i++)
+		{
+			if (gruppeId[g] == fileGroupList.get(i)->id)
+			{
+				initPfad->append(fileGroupList.get(i)->name);
+				break;
+			}
+		}
+		initPfad->append(".ini");
+		InitDatei* systemInit = new InitDatei(initPfad);
+		systemInit->laden();
+		bool cont = 0;
+		int sAnz = systemT.getEintragAnzahl();
+		for (int i = 0; i < sAnz; i++) // Prüfen, ob Lokale Version aktuell ist
+		{
+			if (!systemInit->wertExistiert(systemT.get(i).name))
+			{
+				systemInit->release();
+				zPSA->setUpdateFertig(1, gruppeId[g]);
+				cont = 1;
+				break;
+			}
+			Text* pfad = new Text(systemInit->zWert(systemT.get(i).name)->getText());
+			pfad->append("/");
+			Array< FileInfo > dateiT;
+			psc->getFileInfoList(systemT.get(i).id, gruppeId[g], &dateiT);
+			int dAnz = dateiT.getEintragAnzahl();
+			bool br = 0;
+			for (int j = 0; j < dAnz; j++)
+			{
+				Text* pf = new Text(pfad->getText());
+				pf->append(dateiT.get(j).path.getText());
+				if (!DateiExistiert(pf->getText()))
+				{
+					pfad->release();
+					pf->release();
+					systemInit->release();
+					zPSA->setUpdateFertig(1, gruppeId[g]);
+					cont = 1;
+					br = 1;
+					break;
+				}
+				if (!DateiIstVerzeichnis(pf->getText()))
+				{
+					Datei* d = new Datei();
+					d->setDatei(pf->getText());
+					Zeit* zeit = d->getLastChange();
+					d->release();
+					if (!zeit->istGleich("y-m-d h:i:s", dateiT.get(j).time.getText()))
+					{
+						zeit->release();
+						pfad->release();
+						pf->release();
+						systemInit->release();
+						zPSA->setUpdateFertig(1, gruppeId[g]);
+						cont = 1;
+						br = 1;
+						break;
+					}
+					zeit->release();
+				}
+				pf->release();
+			}
+			if (br)
+				break;
+			pfad->release();
+		}
+		if (cont)
+			continue;
+		if (psc->updateStarten(gruppeId[g]))
+		{
+			RCArray< Text >* systemA = new RCArray< Text >();
+			RCArray< RCArray< Text > >* dateiA = new RCArray< RCArray< Text > >();
+			Array< int >* dateiAnzahlA = new Array< int >();
+			int systemAnzahl = 0;
+			bool ok = psc->getDateiListe(&systemAnzahl, dateiAnzahlA, systemA, dateiA);
+			if (!ok)
+			{
+				systemA->release();
+				dateiA->release();
+				dateiAnzahlA->release();
+				systemInit->release();
+				zPSA->setUpdateFertig(1, gruppeId[g]);
+				continue;
+			}
+			__int64 maxAktionen = 0;
+			for (int i = 0; i < systemAnzahl; i++)
+			{
+				for (int j = 0; j < dateiAnzahlA->get(i); j++)
+				{
+					Text* pfad = new Text(systemInit->zWert(systemA->z(i)->getText())->getText());
+					pfad->append("/");
+					pfad->append(dateiA->z(i)->z(j)->getText());
+					Datei* d = new Datei();
+					d->setDatei(pfad);
+					if (!d->istOrdner())
+						maxAktionen += d->getSize();
+					d->release();
+				}
+			}
+			__int64 aktionen = 0;
+			int prozent = 0;
+			bool br = 0;
+			for (int i = 0; i < systemAnzahl; i++)
+			{
+				for (int j = 0; j < dateiAnzahlA->get(i); j++)
+				{
+					Text* pfad = new Text(systemInit->zWert(systemA->z(i)->getText())->getText());
+					pfad->append("/");
+					pfad->append(dateiA->z(i)->z(j)->getText());
+					Datei* d = new Datei();
+					d->setDatei(pfad);
+					if (d->istOrdner())
+					{
+						d->release();
+						continue;
+					}
+					__int64 gr = d->getSize();
+					d->open(Datei::Style::lesen);
+					int version;
+					int system = 0;
+					for (int s = 0; s < sAnz; s++)
+					{
+						if (systemT.get(s).name.istGleich(systemA->z(i)->getText()))
+							system = systemT.get(s).id;
+					}
+					psc->getFileVersion((char*)dateiA->z(i)->z(j)->getText(), system, gruppeId[g], &version);
+					psc->lock();
+					psc->zKlient()->sende("\xE", 1);
+					char ret = 0;
+					psc->zKlient()->getNachricht(&ret, 1);
+					if (ret == 1)
+					{
+						psc->zKlient()->sende((char*)&system, 4);
+						psc->zKlient()->sende((char*)&version, 4);
+						short län = dateiA->z(i)->z(j)->getLength();
+						psc->zKlient()->sende((char*)&län, 2);
+						psc->zKlient()->sende(dateiA->z(i)->z(j)->getText(), län);
+						psc->zKlient()->getNachricht(&ret, 1);
+						if (ret == 1)
+						{
+							while (gr)
+							{
+								if (gr >= 2048)
+								{
+									gr -= 2048;
+									län = 2048;
+								}
+								else
+								{
+									län = (int)gr;
+									gr = 0;
+								}
+								if (län < 0)
+									break;
+								psc->zKlient()->sende((char*)&län, 2);
+								char* buff = new char[län];
+								d->lese(buff, län);
+								psc->zKlient()->sende(buff, län);
+								delete[] buff;
+								aktionen += län;
+								if (prozent != 100 / (maxAktionen / (long double)aktionen))
+								{
+									prozent = (int)(100 / (maxAktionen / (long double)aktionen));
+									zPSA->setUpdateProzent(prozent, gruppeId[g]);
+								}
+							}
+							psc->zKlient()->sende("\0\0", 2);
+							psc->zKlient()->getNachricht(&ret, 1);
+						}
+					}
+					if (prozent != 100 / (maxAktionen / (long double)aktionen))
+					{
+						prozent = (int)(100 / (maxAktionen / (long double)aktionen));
+						zPSA->setUpdateProzent(prozent, gruppeId[g]);
+					}
+					if (ret == 3)
+					{
+						d->close();
+						d->release();
+						systemA->release();
+						dateiA->release();
+						dateiAnzahlA->release();
+						char l = 0;
+						psc->zKlient()->getNachricht(&l, 1);
+						char* txt = new char[l + 1];
+						txt[l] = 0;
+						if (l)
+							psc->zKlient()->getNachricht(txt, l);
+						std::cout << "Error: " << txt << "\n";
+						delete[] txt;
+						psc->unlock();
+						zPSA->setUpdateProzent(0, gruppeId[g]);
+						zPSA->setUpdateFertig(1, gruppeId[g]);
+						br = 1;
+						break;
+					}
+					psc->unlock();
+					d->close();
+					d->release();
+				}
+				if (br)
+					break;
+			}
+			if (br)
+				continue;
+			psc->updateFertig();
+			systemA->release();
+			dateiA->release();
+			dateiAnzahlA->release();
+		}
+		else
+		{
+			systemInit->release();
+			zPSA->setUpdateProzent(0, gruppeId[g]);
+			zPSA->setUpdateFertig(1, gruppeId[g]);
+			continue;
+		}
+		zPSA->setUpdateProzent(0, gruppeId[g]);
+		zPSA->setUpdateFertig(0, gruppeId[g]);
+		systemInit->release();
+	}
+	for (int i = 0; i < gAnz; i++)
+		delete fileGroupList.get(i);
+	zPSA->setUpdateFertig(0, 0);
+	run = 0;
 }
 
 
 // Inhalt der PSDetails Klasse aus PatchServer.h
 // Konstruktor
-PSDetails::PSDetails( PatchServer *zPSA, MSKlient *mk )
-    : Thread()
+PSDetails::PSDetails(PatchServer* zPSA, MSKlient* mk)
+	: Thread()
 {
-    this->zPSA = zPSA;
-    this->mk = mk;
-    id = 0;
+	this->zPSA = zPSA;
+	this->mk = mk;
+	id = 0;
 }
 
 // Destruktor
 PSDetails::~PSDetails()
 {
-    mk->release();
+	mk->release();
 }
 
 // nicht constant
-void PSDetails::setServerId( int id )
+void PSDetails::setServerId(int id)
 {
-    this->id = id;
+	this->id = id;
 }
 
 void PSDetails::thread()
 {
-    ServerDetails detail;
-    mk->getPatchServerDetails( id, &detail );
-    if( !mk->getPatchServerDetails( id, &detail ) )
-    {
-        Text *err = new Text( "Fehler: Server Rückgabe: " );
-        err->append( mk->getLetzterFehler() );
-        zPSA->setServerDetails( id, (char *)"", (char *)"", 0, 0, 0, 0, -2, err );
-    }
-    else
-    {
-        PSKlient *psc = new PSKlient( detail.ip, detail.adminPort );
-        int st = psc->getStatus();
-        if( st >= 0 )
-            psc->trenne();
-        psc->release();
-        zPSA->setServerDetails( id,
-                                detail.name,
-                                detail.ip,
-                                detail.port,
-                                detail.adminPort,
-                                detail.tasks,
-                                detail.maxTasks,
-                                st,
-                                0 );
-    }
-    run = 0;
+	ServerDetails detail;
+	mk->getPatchServerDetails(id, &detail);
+	if (!mk->getPatchServerDetails(id, &detail))
+	{
+		Text* err = new Text("Fehler: Server Rückgabe: ");
+		err->append(mk->getLetzterFehler());
+		zPSA->setServerDetails(id, (char*)"", (char*)"", 0, 0, 0, 0, -2, err);
+	}
+	else
+	{
+		PSKlient* psc = new PSKlient(detail.ip, detail.adminPort);
+		int st = psc->getStatus();
+		if (st >= 0)
+			psc->trenne();
+		psc->release();
+		zPSA->setServerDetails(id,
+			detail.name,
+			detail.ip,
+			detail.port,
+			detail.adminPort,
+			detail.tasks,
+			detail.maxTasks,
+			st,
+			0);
+	}
+	run = 0;
 }
 
 
 // Inhalt der PSSuche Klasse aus PatchServer.h
 // Konstruktor
-PSSuche::PSSuche( PatchServer *zPSA, MSKlient *mk )
-    : Thread()
+PSSuche::PSSuche(PatchServer* zPSA, MSKlient* mk)
+	: Thread()
 {
-    this->zPSA = zPSA;
-    this->mk = mk;
+	this->zPSA = zPSA;
+	this->mk = mk;
 }
 
 // Destruktor
 PSSuche::~PSSuche()
 {
-    mk->release();
+	mk->release();
 }
 
 // nicht constant
 void PSSuche::thread()
 {
-    Array< ServerData * > list;
-    if( mk->getPatchServerListe( &list ) )
-    {
-        int anz = list.getEintragAnzahl();
-        for( int i = 0; i < anz; i++ )
-        {
-            int st = -1;
-            ServerData *s = list.get( i );
-            if( !s->status.istGleich( "Unerreichbar" ) )
-            {
-                PSKlient *psc = new PSKlient( s->ip.getText(), s->adminPort );
-                st = psc->getStatus();
-                switch( st )
-                {
-                case -2:
-                    s->status = "Unbekannt";
-                    break;
-                case -1:
-                    s->status = "Unerreichbar";
-                    break;
-                case 0:
-                    s->status = "Offline";
-                    break;
-                case 1:
-                    s->status = "Pausiert";
-                    break;
-                case 2:
-                    s->status = "Online";
-                    break;
-                case 3:
-                    s->status = "Veraltet";
-                    break;
-                }
-                if( st >= 0 )
-                    psc->trenne();
-                psc->release();
-            }
-            zPSA->addServer( s->id,
-                             s->name,
-                             s->ip,
-                             s->port,
-                             s->adminPort,
-                             s->status );
-            delete s;
-        }
-    }
-    zPSA->sucheAbgeschlossen();
-    run = 0;
+	Array< ServerData* > list;
+	if (mk->getPatchServerListe(&list))
+	{
+		int anz = list.getEintragAnzahl();
+		for (int i = 0; i < anz; i++)
+		{
+			int st = -1;
+			ServerData* s = list.get(i);
+			if (!s->status.istGleich("Unerreichbar"))
+			{
+				PSKlient* psc = new PSKlient(s->ip.getText(), s->adminPort);
+				st = psc->getStatus();
+				switch (st)
+				{
+				case -2:
+					s->status = "Unbekannt";
+					break;
+				case -1:
+					s->status = "Unerreichbar";
+					break;
+				case 0:
+					s->status = "Offline";
+					break;
+				case 1:
+					s->status = "Pausiert";
+					break;
+				case 2:
+					s->status = "Online";
+					break;
+				case 3:
+					s->status = "Veraltet";
+					break;
+				}
+				if (st >= 0)
+					psc->trenne();
+				psc->release();
+			}
+			zPSA->addServer(s->id,
+				s->name,
+				s->ip,
+				s->port,
+				s->adminPort,
+				s->status);
+			delete s;
+		}
+	}
+	zPSA->sucheAbgeschlossen();
+	run = 0;
 }
 
 
-TextFeld *getTabellenEintrag( const char *txt, Schrift *s, int farbe )
+TextFeld* getTabellenEintrag(const char* txt, Schrift* s, int farbe)
 {
-    TextFeld *tmp = new TextFeld();
-    tmp->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
-    tmp->setSchriftZ( s );
-    tmp->setText( txt );
-    tmp->setSchriftFarbe( farbe );
-    return tmp;
+	TextFeld* tmp = new TextFeld();
+	tmp->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Center);
+	tmp->setSchriftZ(s);
+	tmp->setText(txt);
+	tmp->setSchriftFarbe(farbe);
+	return tmp;
 }
 
 
 // Inhalt der PatchServer Klasse aus PatchServer.h
 // Konstruktor
-PatchServer::PatchServer( Schrift *s, InitDatei *d, MSKlient *msk, RessourceBild *rb, AdminAccount *acc, Bildschirm *b )
-    : Abschnitt( b )
+PatchServer::PatchServer(Schrift* s, InitDatei* d, MSKlient* msk, RessourceBild* rb, AdminAccount* acc, Bildschirm* b)
+	: Abschnitt(b)
 {
-    fenster = 0;
-    this->msk = msk;
-    iD = d;
-    account = acc;
-    schrift = s;
-    psc = 0;
-
-    f = new Fenster();
-    f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered );
-    f->setRFarbe( 0xFFFFFFFF );
-    f->setRBreite( 1 );
-    f->setTitel( "Patch Server" );
-    f->setTSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    f->setTSFarbe( 0xFFFFFFFF );
-    f->setTSSize( 12 );
-    f->setTAfFarbe( 0x1000FF00 );
-    f->setTAfStrength( -15 );
-    f->setTRFarbe( 0xFFFFFFFF );
-    f->setTRBreite( 1 );
-    f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
-    f->zTTextFeld()->setSize( 0, 20 );
-    f->setSize( 492, 277 );
-
-    liste = new Fenster();
-    liste->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt );
-    liste->setSize( 490, 255 );
-    f->addMember( dynamic_cast<Zeichnung *>( liste->getThis() ) );
-
-    details = new Fenster();
-    details->setStyle( Fenster::Style::Erlaubt );
-    details->setSize( 490, 255 );
-    f->addMember( dynamic_cast<Zeichnung *>( details->getThis() ) );
-
-    updateF = new Fenster();
-    updateF->setStyle( Fenster::Style::Erlaubt );
-    updateF->setSize( 490, 255 );
-    f->addMember( dynamic_cast<Zeichnung *>( updateF->getThis() ) );
-
-    tabelle = new ObjTabelle();
-    tabelle->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::VScroll | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::Erlaubt );
-    tabelle->setMausEreignis( _ret1ME );
-    tabelle->setRahmenFarbe( 0xFFFFFFFF );
-    tabelle->setRasterFarbe( 0xFFA0A0A0 );
-    tabelle->setRasterBreite( 1 );
-    tabelle->setPosition( 5, 5 );
-    tabelle->setSize( 480, 220 );
-    tabelle->setVertikalKlickScroll( 5 );
-    tabelle->addSpalte( "id" );
-    tabelle->setSpaltenBreite( 0, 40 );
-    tabelle->addSpalte( "name" );
-    tabelle->setSpaltenBreite( 1, 105 );
-    tabelle->addSpalte( "ip" );
-    tabelle->setSpaltenBreite( 2, 90 );
-    tabelle->addSpalte( "port" );
-    tabelle->setSpaltenBreite( 3, 50 );
-    tabelle->addSpalte( "aport" );
-    tabelle->setSpaltenBreite( 4, 50 );
-    tabelle->addSpalte( "status" );
-    tabelle->setSpaltenBreite( 5, 100 );
-    tabelle->addSpalte( "auswahl" );
-    tabelle->setSpaltenBreite( 6, 20 );
-    tabelle->addZeile( "Überschrifft" );
-    tabelle->setZeilenHeight( 0, 20 );
-    tabelle->setZeichnungZ( 0, 0, getTabellenEintrag( "Id", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 1, 0, getTabellenEintrag( "Name", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 2, 0, getTabellenEintrag( "Ip", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 3, 0, getTabellenEintrag( "Port", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 4, 0, getTabellenEintrag( "APort", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 5, 0, getTabellenEintrag( "Status", s ? dynamic_cast<Schrift *>( s->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 6, 0, 0 );
-    liste->addMember( dynamic_cast<Zeichnung *>( tabelle->getThis() ) );
-
-    aktualisieren = new Knopf();
-    aktualisieren->setText( "" );
-    aktualisieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    aktualisieren->setHintergrundBildZ( rb ? rb->get( "neuladen.png" ) : 0 );
-    aktualisieren->setPosition( 236, 230 );
-    aktualisieren->setSize( 20, 20 );
-    aktualisieren->setMausEreignisParameter( this );
-    aktualisieren->setMausEreignis( patchServerAktualisierenMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( aktualisieren->getThis() ) );
-
-    weiter = new Knopf();
-    weiter->setText( "" );
-    weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    weiter->setHintergrundBildZ( rb ? rb->get( "weiter.png" ) : 0 );
-    weiter->setPosition( 261, 230 );
-    weiter->setSize( 20, 20 );
-    weiter->setMausEreignisParameter( this );
-    weiter->setMausEreignis( patchServerWeiterMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( weiter->getThis() ) );
-
-    zurück = new Knopf();
-    zurück->setText( "" );
-    zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    zurück->setHintergrundBildZ( rb ? rb->get( "zurück.png" ) : 0 );
-    zurück->setPosition( 211, 230 );
-    zurück->setSize( 20, 20 );
-    zurück->setMausEreignisParameter( this );
-    zurück->setMausEreignis( patchServerZurückMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( zurück->getThis() ) );
-
-    serverId = new TextFeld();
-    serverId->setStyle( TextFeld::Style::Sichtbar );
-    serverId->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverId->setSchriftFarbe( 0xFFFFFFFF );
-    serverId->setSchriftSize( 12 );
-    serverId->setText( "ID: " );
-    serverId->setSize( 100, 20 );
-    serverId->setPosition( 10, 10 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverId->getThis() ) );
-
-    serverName = new TextFeld();
-    serverName->setStyle( TextFeld::Style::Sichtbar );
-    serverName->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverName->setSchriftFarbe( 0xFFFFFFFF );
-    serverName->setSchriftSize( 12 );
-    serverName->setText( "Name: " );
-    serverName->setSize( 150, 20 );
-    serverName->setPosition( 120, 10 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverName->getThis() ) );
-
-    serverIp = new TextFeld();
-    serverIp->setStyle( TextFeld::Style::Sichtbar );
-    serverIp->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverIp->setSchriftFarbe( 0xFFFFFFFF );
-    serverIp->setSchriftSize( 12 );
-    serverIp->setText( "IP: " );
-    serverIp->setSize( 120, 20 );
-    serverIp->setPosition( 280, 10 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverIp->getThis() ) );
-
-    serverPort = new TextFeld();
-    serverPort->setStyle( TextFeld::Style::Sichtbar );
-    serverPort->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverPort->setSchriftFarbe( 0xFFFFFFFF );
-    serverPort->setSchriftSize( 12 );
-    serverPort->setText( "Port: " );
-    serverPort->setSize( 100, 20 );
-    serverPort->setPosition( 10, 40 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverPort->getThis() ) );
-
-    serverAPort = new TextFeld();
-    serverAPort->setStyle( TextFeld::Style::Sichtbar );
-    serverAPort->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverAPort->setSchriftFarbe( 0xFFFFFFFF );
-    serverAPort->setSchriftSize( 12 );
-    serverAPort->setText( "Admin Port: " );
-    serverAPort->setSize( 200, 20 );
-    serverAPort->setPosition( 120, 40 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverAPort->getThis() ) );
-
-    serverClients = new TextFeld();
-    serverClients->setStyle( TextFeld::Style::Sichtbar );
-    serverClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverClients->setSchriftFarbe( 0xFFFFFFFF );
-    serverClients->setSchriftSize( 12 );
-    serverClients->setText( "Clients: " );
-    serverClients->setSize( 100, 20 );
-    serverClients->setPosition( 10, 70 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverClients->getThis() ) );
-
-    serverMaxClients = new TextFeld();
-    serverMaxClients->setStyle( TextFeld::Style::Sichtbar );
-    serverMaxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverMaxClients->setSchriftFarbe( 0xFFFFFFFF );
-    serverMaxClients->setSchriftSize( 12 );
-    serverMaxClients->setText( "Max Clients: " );
-    serverMaxClients->setSize( 80, 20 );
-    serverMaxClients->setPosition( 120, 70 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverMaxClients->getThis() ) );
-
-    maxClients = new TextFeld();
-    maxClients->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
-    maxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    maxClients->setSchriftFarbe( 0xFFFFFFFF );
-    maxClients->setSchriftSize( 12 );
-    maxClients->setRahmenBreite( 1 );
-    maxClients->setRahmenFarbe( 0xFFFFFFFF );
-    maxClients->setAlphaFeldFarbe( 0x1000FF00 );
-    maxClients->setAlphaFeldStrength( -5 );
-    maxClients->setText( "" );
-    maxClients->setSize( 100, 20 );
-    maxClients->setPosition( 200, 68 );
-    maxClients->setMausEreignis( _ret1ME );
-    maxClients->setTastaturEreignisParameter( this );
-    maxClients->setTastaturEreignis( patchServerMaxClientsTastaturEreignis );
-    details->addMember( dynamic_cast<Zeichnung *>( maxClients->getThis() ) );
-
-    serverStatus = new TextFeld();
-    serverStatus->setStyle( TextFeld::Style::Sichtbar );
-    serverStatus->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverStatus->setSchriftFarbe( 0xFFFFFFFF );
-    serverStatus->setSchriftSize( 12 );
-    serverStatus->setText( "Status: " );
-    serverStatus->setSize( 150, 20 );
-    serverStatus->setPosition( 10, 100 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverStatus->getThis() ) );
-
-    serverFehler = new TextFeld();
-    serverFehler->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig );
-    serverFehler->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    serverFehler->setSchriftFarbe( 0xFFFFFFFF );
-    serverFehler->setSchriftSize( 12 );
-    serverFehler->setText( "" );
-    serverFehler->setSize( 470, 60 );
-    serverFehler->setPosition( 10, 130 );
-    details->addMember( dynamic_cast<Zeichnung *>( serverFehler->getThis() ) );
-
-    update = new Knopf();
-    update->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    update->setText( "Update" );
-    update->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    update->setMausEreignisParameter( this );
-    update->setMausEreignis( patchServerUpdateMausEreignis );
-    update->setSize( 80, 20 );
-    update->setPosition( 400, 100 );
-    details->addMember( dynamic_cast<Zeichnung *>( update->getThis() ) );
-
-    pausieren = new Knopf();
-    pausieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    pausieren->setText( "Pausieren" );
-    pausieren->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    pausieren->setMausEreignisParameter( this );
-    pausieren->setMausEreignis( patchServerPausierenMausEreignis );
-    pausieren->setSize( 80, 20 );
-    pausieren->setPosition( 10, 200 );
-    details->addMember( dynamic_cast<Zeichnung *>( pausieren->getThis() ) );
-
-    stoppen = new Knopf();
-    stoppen->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    stoppen->setText( "Stoppen" );
-    stoppen->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    stoppen->setMausEreignisParameter( this );
-    stoppen->setMausEreignis( patchServerStoppenMausEreignis );
-    stoppen->setSize( 80, 20 );
-    stoppen->setPosition( 100, 200 );
-    details->addMember( dynamic_cast<Zeichnung *>( stoppen->getThis() ) );
-
-    beenden = new Knopf();
-    beenden->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    beenden->setText( "Beenden" );
-    beenden->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    beenden->setMausEreignisParameter( this );
-    beenden->setMausEreignis( patchServerBeendenMausEreignis );
-    beenden->setSize( 80, 20 );
-    beenden->setPosition( 190, 200 );
-    details->addMember( dynamic_cast<Zeichnung *>( beenden->getThis() ) );
-
-    terminieren = new Knopf();
-    terminieren->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    terminieren->setText( "Terminieren" );
-    terminieren->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    terminieren->setMausEreignisParameter( this );
-    terminieren->setMausEreignis( patchServerTerminierenMausEreignis );
-    terminieren->setSize( 80, 20 );
-    terminieren->setPosition( 280, 200 );
-    details->addMember( dynamic_cast<Zeichnung *>( terminieren->getThis() ) );
-
-    setMaxClients = new Knopf();
-    setMaxClients->setStyle( Knopf::Style::Normal & ~Knopf::Style::Erlaubt );
-    setMaxClients->setText( "set Max Clients" );
-    setMaxClients->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    setMaxClients->setMausEreignisParameter( this );
-    setMaxClients->setMausEreignis( patchServerSetMaxClientsMausEreignis );
-    setMaxClients->setSize( 110, 20 );
-    setMaxClients->setPosition( 370, 200 );
-    details->addMember( dynamic_cast<Zeichnung *>( setMaxClients->getThis() ) );
-
-    updateT = new ObjTabelle();
-    updateT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
-    updateT->setVertikalKlickScroll( 10 );
-    updateT->setMausEreignis( _ret1ME );
-    updateT->setRahmenFarbe( 0xFFFFFFFF );
-    updateT->setPosition( 5, 5 );
-    updateT->setSize( 480, 190 );
-    updateT->addSpalte( "Name" );
-    updateT->addSpalte( "Status" );
-    updateT->addSpalte( "Auswahl" );
-    updateT->addSpalte( "Update" );
-    updateT->setSpaltenBreite( 0, 340 );
-    updateT->setSpaltenBreite( 1, 100 );
-    updateT->setSpaltenBreite( 2, 22 );
-    updateT->setSpaltenBreite( 3, 0 );
-    updateT->addZeile( "Titel" );
-    updateT->setZeilenHeight( 0, 20 );
-    TextFeld *uTN = new TextFeld();
-    uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    uTN->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    uTN->setSchriftFarbe( 0xFFFFFFFF );
-    uTN->setSchriftSize( 12 );
-    uTN->setRahmenFarbe( 0xFFFFFFFF );
-    uTN->setText( "Name" );
-    updateT->setZeichnungZ( 0, 0, uTN );
-    TextFeld *uTS = new TextFeld();
-    uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    uTS->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    uTS->setSchriftFarbe( 0xFFFFFFFF );
-    uTS->setSchriftSize( 12 );
-    uTS->setRahmenFarbe( 0xFFFFFFFF );
-    uTS->setText( "Status" );
-    updateT->setZeichnungZ( 1, 0, uTS );
-    updateT->setMausEreignis( _ret1ME );
-    updateT->setTastaturEreignis( _ret1TE );
-    updateF->addMember( dynamic_cast<Zeichnung *>( updateT->getThis() ) );
-
-    updateStarten = new Knopf();
-    updateStarten->setStyle( Knopf::Style::Normal );
-    updateStarten->setText( "Start" );
-    updateStarten->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    updateStarten->setMausEreignisParameter( this );
-    updateStarten->setMausEreignis( patchServerUpdateStartenMausEreignis );
-    updateStarten->setSize( 80, 20 );
-    updateStarten->setPosition( 205, 200 );
-    updateF->addMember( dynamic_cast<Zeichnung *>( updateStarten->getThis() ) );
-
-    obj = new Zeichnung();
-
-    suchen = new PSSuche( this, dynamic_cast<MSKlient *>( msk->getThis() ) );
-    getDetails = new PSDetails( this, dynamic_cast<MSKlient *>( msk->getThis() ) );
-    updateTh = new PSUpdate( this, dynamic_cast<AdminAccount *>( account->getThis() ) );
-    if( rb )
-        rb->release();
+	fenster = 0;
+	this->msk = msk;
+	iD = d;
+	account = acc;
+	schrift = s;
+	psc = 0;
+
+	f = new Fenster();
+	f->setStyle(Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered);
+	f->setRFarbe(0xFFFFFFFF);
+	f->setRBreite(1);
+	f->setTitel("Patch Server");
+	f->setTSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	f->setTSFarbe(0xFFFFFFFF);
+	f->setTSSize(12);
+	f->setTAfFarbe(0x1000FF00);
+	f->setTAfStrength(-15);
+	f->setTRFarbe(0xFFFFFFFF);
+	f->setTRBreite(1);
+	f->zTTextFeld()->addStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen);
+	f->zTTextFeld()->setSize(0, 20);
+	f->setSize(492, 277);
+
+	liste = new Fenster();
+	liste->setStyle(Fenster::Style::Sichtbar | Fenster::Style::Erlaubt);
+	liste->setSize(490, 255);
+	f->addMember(dynamic_cast<Zeichnung*>(liste->getThis()));
+
+	details = new Fenster();
+	details->setStyle(Fenster::Style::Erlaubt);
+	details->setSize(490, 255);
+	f->addMember(dynamic_cast<Zeichnung*>(details->getThis()));
+
+	updateF = new Fenster();
+	updateF->setStyle(Fenster::Style::Erlaubt);
+	updateF->setSize(490, 255);
+	f->addMember(dynamic_cast<Zeichnung*>(updateF->getThis()));
+
+	tabelle = new ObjTabelle();
+	tabelle->setStyle(ObjTabelle::Style::Sichtbar | ObjTabelle::Style::VScroll | ObjTabelle::Style::Rahmen | ObjTabelle::Style::Raster | ObjTabelle::Style::Erlaubt);
+	tabelle->setMausEreignis(_ret1ME);
+	tabelle->setRahmenFarbe(0xFFFFFFFF);
+	tabelle->setRasterFarbe(0xFFA0A0A0);
+	tabelle->setRasterBreite(1);
+	tabelle->setPosition(5, 5);
+	tabelle->setSize(480, 220);
+	tabelle->setVertikalKlickScroll(5);
+	tabelle->addSpalte("id");
+	tabelle->setSpaltenBreite(0, 40);
+	tabelle->addSpalte("name");
+	tabelle->setSpaltenBreite(1, 105);
+	tabelle->addSpalte("ip");
+	tabelle->setSpaltenBreite(2, 90);
+	tabelle->addSpalte("port");
+	tabelle->setSpaltenBreite(3, 50);
+	tabelle->addSpalte("aport");
+	tabelle->setSpaltenBreite(4, 50);
+	tabelle->addSpalte("status");
+	tabelle->setSpaltenBreite(5, 100);
+	tabelle->addSpalte("auswahl");
+	tabelle->setSpaltenBreite(6, 20);
+	tabelle->addZeile("Überschrifft");
+	tabelle->setZeilenHeight(0, 20);
+	tabelle->setZeichnungZ(0, 0, getTabellenEintrag("Id", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(1, 0, getTabellenEintrag("Name", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(2, 0, getTabellenEintrag("Ip", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(3, 0, getTabellenEintrag("Port", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(4, 0, getTabellenEintrag("APort", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(5, 0, getTabellenEintrag("Status", s ? dynamic_cast<Schrift*>(s->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(6, 0, 0);
+	liste->addMember(dynamic_cast<Zeichnung*>(tabelle->getThis()));
+
+	aktualisieren = new Knopf();
+	aktualisieren->setText("");
+	aktualisieren->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	aktualisieren->setHintergrundBildZ(rb ? rb->get("neuladen.png") : 0);
+	aktualisieren->setPosition(236, 230);
+	aktualisieren->setSize(20, 20);
+	aktualisieren->setMausEreignisParameter(this);
+	aktualisieren->setMausEreignis(patchServerAktualisierenMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(aktualisieren->getThis()));
+
+	weiter = new Knopf();
+	weiter->setText("");
+	weiter->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	weiter->setHintergrundBildZ(rb ? rb->get("weiter.png") : 0);
+	weiter->setPosition(261, 230);
+	weiter->setSize(20, 20);
+	weiter->setMausEreignisParameter(this);
+	weiter->setMausEreignis(patchServerWeiterMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(weiter->getThis()));
+
+	zurück = new Knopf();
+	zurück->setText("");
+	zurück->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	zurück->setHintergrundBildZ(rb ? rb->get("zurück.png") : 0);
+	zurück->setPosition(211, 230);
+	zurück->setSize(20, 20);
+	zurück->setMausEreignisParameter(this);
+	zurück->setMausEreignis(patchServerZurückMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(zurück->getThis()));
+
+	serverId = new TextFeld();
+	serverId->setStyle(TextFeld::Style::Sichtbar);
+	serverId->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverId->setSchriftFarbe(0xFFFFFFFF);
+	serverId->setSchriftSize(12);
+	serverId->setText("ID: ");
+	serverId->setSize(100, 20);
+	serverId->setPosition(10, 10);
+	details->addMember(dynamic_cast<Zeichnung*>(serverId->getThis()));
+
+	serverName = new TextFeld();
+	serverName->setStyle(TextFeld::Style::Sichtbar);
+	serverName->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverName->setSchriftFarbe(0xFFFFFFFF);
+	serverName->setSchriftSize(12);
+	serverName->setText("Name: ");
+	serverName->setSize(150, 20);
+	serverName->setPosition(120, 10);
+	details->addMember(dynamic_cast<Zeichnung*>(serverName->getThis()));
+
+	serverIp = new TextFeld();
+	serverIp->setStyle(TextFeld::Style::Sichtbar);
+	serverIp->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverIp->setSchriftFarbe(0xFFFFFFFF);
+	serverIp->setSchriftSize(12);
+	serverIp->setText("IP: ");
+	serverIp->setSize(120, 20);
+	serverIp->setPosition(280, 10);
+	details->addMember(dynamic_cast<Zeichnung*>(serverIp->getThis()));
+
+	serverPort = new TextFeld();
+	serverPort->setStyle(TextFeld::Style::Sichtbar);
+	serverPort->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverPort->setSchriftFarbe(0xFFFFFFFF);
+	serverPort->setSchriftSize(12);
+	serverPort->setText("Port: ");
+	serverPort->setSize(100, 20);
+	serverPort->setPosition(10, 40);
+	details->addMember(dynamic_cast<Zeichnung*>(serverPort->getThis()));
+
+	serverAPort = new TextFeld();
+	serverAPort->setStyle(TextFeld::Style::Sichtbar);
+	serverAPort->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverAPort->setSchriftFarbe(0xFFFFFFFF);
+	serverAPort->setSchriftSize(12);
+	serverAPort->setText("Admin Port: ");
+	serverAPort->setSize(200, 20);
+	serverAPort->setPosition(120, 40);
+	details->addMember(dynamic_cast<Zeichnung*>(serverAPort->getThis()));
+
+	serverClients = new TextFeld();
+	serverClients->setStyle(TextFeld::Style::Sichtbar);
+	serverClients->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverClients->setSchriftFarbe(0xFFFFFFFF);
+	serverClients->setSchriftSize(12);
+	serverClients->setText("Clients: ");
+	serverClients->setSize(100, 20);
+	serverClients->setPosition(10, 70);
+	details->addMember(dynamic_cast<Zeichnung*>(serverClients->getThis()));
+
+	serverMaxClients = new TextFeld();
+	serverMaxClients->setStyle(TextFeld::Style::Sichtbar);
+	serverMaxClients->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverMaxClients->setSchriftFarbe(0xFFFFFFFF);
+	serverMaxClients->setSchriftSize(12);
+	serverMaxClients->setText("Max Clients: ");
+	serverMaxClients->setSize(80, 20);
+	serverMaxClients->setPosition(120, 70);
+	details->addMember(dynamic_cast<Zeichnung*>(serverMaxClients->getThis()));
+
+	maxClients = new TextFeld();
+	maxClients->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter);
+	maxClients->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	maxClients->setSchriftFarbe(0xFFFFFFFF);
+	maxClients->setSchriftSize(12);
+	maxClients->setRahmenBreite(1);
+	maxClients->setRahmenFarbe(0xFFFFFFFF);
+	maxClients->setAlphaFeldFarbe(0x1000FF00);
+	maxClients->setAlphaFeldStrength(-5);
+	maxClients->setText("");
+	maxClients->setSize(100, 20);
+	maxClients->setPosition(200, 68);
+	maxClients->setMausEreignis(_ret1ME);
+	maxClients->setTastaturEreignisParameter(this);
+	maxClients->setTastaturEreignis(patchServerMaxClientsTastaturEreignis);
+	details->addMember(dynamic_cast<Zeichnung*>(maxClients->getThis()));
+
+	serverStatus = new TextFeld();
+	serverStatus->setStyle(TextFeld::Style::Sichtbar);
+	serverStatus->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverStatus->setSchriftFarbe(0xFFFFFFFF);
+	serverStatus->setSchriftSize(12);
+	serverStatus->setText("Status: ");
+	serverStatus->setSize(150, 20);
+	serverStatus->setPosition(10, 100);
+	details->addMember(dynamic_cast<Zeichnung*>(serverStatus->getThis()));
+
+	serverFehler = new TextFeld();
+	serverFehler->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Mehrzeilig);
+	serverFehler->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	serverFehler->setSchriftFarbe(0xFFFFFFFF);
+	serverFehler->setSchriftSize(12);
+	serverFehler->setText("");
+	serverFehler->setSize(470, 60);
+	serverFehler->setPosition(10, 130);
+	details->addMember(dynamic_cast<Zeichnung*>(serverFehler->getThis()));
+
+	update = new Knopf();
+	update->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	update->setText("Update");
+	update->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	update->setMausEreignisParameter(this);
+	update->setMausEreignis(patchServerUpdateMausEreignis);
+	update->setSize(80, 20);
+	update->setPosition(400, 100);
+	details->addMember(dynamic_cast<Zeichnung*>(update->getThis()));
+
+	pausieren = new Knopf();
+	pausieren->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	pausieren->setText("Pausieren");
+	pausieren->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	pausieren->setMausEreignisParameter(this);
+	pausieren->setMausEreignis(patchServerPausierenMausEreignis);
+	pausieren->setSize(80, 20);
+	pausieren->setPosition(10, 200);
+	details->addMember(dynamic_cast<Zeichnung*>(pausieren->getThis()));
+
+	stoppen = new Knopf();
+	stoppen->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	stoppen->setText("Stoppen");
+	stoppen->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	stoppen->setMausEreignisParameter(this);
+	stoppen->setMausEreignis(patchServerStoppenMausEreignis);
+	stoppen->setSize(80, 20);
+	stoppen->setPosition(100, 200);
+	details->addMember(dynamic_cast<Zeichnung*>(stoppen->getThis()));
+
+	beenden = new Knopf();
+	beenden->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	beenden->setText("Beenden");
+	beenden->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	beenden->setMausEreignisParameter(this);
+	beenden->setMausEreignis(patchServerBeendenMausEreignis);
+	beenden->setSize(80, 20);
+	beenden->setPosition(190, 200);
+	details->addMember(dynamic_cast<Zeichnung*>(beenden->getThis()));
+
+	terminieren = new Knopf();
+	terminieren->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	terminieren->setText("Terminieren");
+	terminieren->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	terminieren->setMausEreignisParameter(this);
+	terminieren->setMausEreignis(patchServerTerminierenMausEreignis);
+	terminieren->setSize(80, 20);
+	terminieren->setPosition(280, 200);
+	details->addMember(dynamic_cast<Zeichnung*>(terminieren->getThis()));
+
+	setMaxClients = new Knopf();
+	setMaxClients->setStyle(Knopf::Style::Normal & ~Knopf::Style::Erlaubt);
+	setMaxClients->setText("set Max Clients");
+	setMaxClients->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	setMaxClients->setMausEreignisParameter(this);
+	setMaxClients->setMausEreignis(patchServerSetMaxClientsMausEreignis);
+	setMaxClients->setSize(110, 20);
+	setMaxClients->setPosition(370, 200);
+	details->addMember(dynamic_cast<Zeichnung*>(setMaxClients->getThis()));
+
+	updateT = new ObjTabelle();
+	updateT->setStyle(ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll);
+	updateT->setVertikalKlickScroll(10);
+	updateT->setMausEreignis(_ret1ME);
+	updateT->setRahmenFarbe(0xFFFFFFFF);
+	updateT->setPosition(5, 5);
+	updateT->setSize(480, 190);
+	updateT->addSpalte("Name");
+	updateT->addSpalte("Status");
+	updateT->addSpalte("Auswahl");
+	updateT->addSpalte("Update");
+	updateT->setSpaltenBreite(0, 340);
+	updateT->setSpaltenBreite(1, 100);
+	updateT->setSpaltenBreite(2, 22);
+	updateT->setSpaltenBreite(3, 0);
+	updateT->addZeile("Titel");
+	updateT->setZeilenHeight(0, 20);
+	TextFeld* uTN = new TextFeld();
+	uTN->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	uTN->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	uTN->setSchriftFarbe(0xFFFFFFFF);
+	uTN->setSchriftSize(12);
+	uTN->setRahmenFarbe(0xFFFFFFFF);
+	uTN->setText("Name");
+	updateT->setZeichnungZ(0, 0, uTN);
+	TextFeld* uTS = new TextFeld();
+	uTS->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	uTS->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	uTS->setSchriftFarbe(0xFFFFFFFF);
+	uTS->setSchriftSize(12);
+	uTS->setRahmenFarbe(0xFFFFFFFF);
+	uTS->setText("Status");
+	updateT->setZeichnungZ(1, 0, uTS);
+	updateT->setMausEreignis(_ret1ME);
+	updateT->setTastaturEreignis(_ret1TE);
+	updateF->addMember(dynamic_cast<Zeichnung*>(updateT->getThis()));
+
+	updateStarten = new Knopf();
+	updateStarten->setStyle(Knopf::Style::Normal);
+	updateStarten->setText("Start");
+	updateStarten->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	updateStarten->setMausEreignisParameter(this);
+	updateStarten->setMausEreignis(patchServerUpdateStartenMausEreignis);
+	updateStarten->setSize(80, 20);
+	updateStarten->setPosition(205, 200);
+	updateF->addMember(dynamic_cast<Zeichnung*>(updateStarten->getThis()));
+
+	obj = new Zeichnung();
+
+	suchen = new PSSuche(this, dynamic_cast<MSKlient*>(msk->getThis()));
+	getDetails = new PSDetails(this, dynamic_cast<MSKlient*>(msk->getThis()));
+	updateTh = new PSUpdate(this, dynamic_cast<AdminAccount*>(account->getThis()));
+	if (rb)
+		rb->release();
 }
 
 // Destruktor
 PatchServer::~PatchServer()
 {
-    updateTh->warteAufThread( 10000 );
-    updateTh->ende();
-    getDetails->warteAufThread( 10000 );
-    getDetails->ende();
-    suchen->warteAufThread( 10000 );
-    suchen->ende();
-    delete obj;
-    if( psc )
-    {
-        psc->trenne();
-        psc->release();
-    }
-    if( fenster )
-    {
-        fenster->removeMember( f );
-        fenster->release();
-    }
-    account->release();
-    msk->release();
-    iD->release();
-    f->release();
-    liste->release();
-    details->release();
-    updateF->release();
-    updateStarten->release();
-    updateT->release();
-    aktualisieren->release();
-    weiter->release();
-    zurück->release();
-    update->release();
-    pausieren->release();
-    stoppen->release();
-    beenden->release();
-    terminieren->release();
-    setMaxClients->release();
-    serverId->release();
-    serverName->release();
-    serverIp->release();
-    serverPort->release();
-    serverAPort->release();
-    serverClients->release();
-    serverMaxClients->release();
-    serverStatus->release();
-    serverFehler->release();
-    maxClients->release();
-    suchen->release();
-    getDetails->release();
-    updateTh->release();
-    tabelle->release();
-    if( schrift )
-        schrift->release();
+	updateTh->warteAufThread(10000);
+	updateTh->ende();
+	getDetails->warteAufThread(10000);
+	getDetails->ende();
+	suchen->warteAufThread(10000);
+	suchen->ende();
+	delete obj;
+	if (psc)
+	{
+		psc->trenne();
+		psc->release();
+	}
+	if (fenster)
+	{
+		fenster->removeMember(f);
+		fenster->release();
+	}
+	account->release();
+	msk->release();
+	iD->release();
+	f->release();
+	liste->release();
+	details->release();
+	updateF->release();
+	updateStarten->release();
+	updateT->release();
+	aktualisieren->release();
+	weiter->release();
+	zurück->release();
+	update->release();
+	pausieren->release();
+	stoppen->release();
+	beenden->release();
+	terminieren->release();
+	setMaxClients->release();
+	serverId->release();
+	serverName->release();
+	serverIp->release();
+	serverPort->release();
+	serverAPort->release();
+	serverClients->release();
+	serverMaxClients->release();
+	serverStatus->release();
+	serverFehler->release();
+	maxClients->release();
+	suchen->release();
+	getDetails->release();
+	updateTh->release();
+	tabelle->release();
+	if (schrift)
+		schrift->release();
 }
 
 // nicht constant
-void PatchServer::setFenster( Fenster *f )
+void PatchServer::setFenster(Fenster* f)
 {
-    if( fenster )
-        fenster->release();
-    this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
-    fenster = f;
+	if (fenster)
+		fenster->release();
+	this->f->setPosition(f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2);
+	fenster = f;
 }
 
-void PatchServer::setSichtbar( bool s )
+void PatchServer::setSichtbar(bool s)
 {
-    sichtbar = s;
-    if( s )
-    {
-        if( !suchen->isRunning() && liste->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
-                tabelle->removeZeile( 1 );
-            weiter->removeStyle( Knopf::Style::Erlaubt );
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
-            suchen->start();
-        }
-        if( fenster )
-            fenster->addMember( dynamic_cast<Zeichnung *>( f->getThis() ) );
-    }
-    else if( fenster )
-        fenster->removeMember( f );
+	sichtbar = s;
+	if (s)
+	{
+		if (!suchen->isRunning() && liste->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int y = 1; y < tabelle->getZeilenAnzahl(); y++)
+				tabelle->removeZeile(1);
+			weiter->removeStyle(Knopf::Style::Erlaubt);
+			aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+			tabelle->removeStyle(ObjTabelle::Style::Erlaubt);
+			suchen->start();
+		}
+		if (fenster)
+			fenster->addMember(dynamic_cast<Zeichnung*>(f->getThis()));
+	}
+	else if (fenster)
+		fenster->removeMember(f);
 }
 
-void PatchServer::addServer( int id, char *name, char *ip, int port, int adminPort, char *status )
+void PatchServer::addServer(int id, const char* name, const char* ip, int port, int adminPort, const char* status)
 {
-    Text *txt = new Text();
-    txt->append( id );
-    tabelle->addZeile( txt->getText() );
-    int y = tabelle->getZeilenNummer( txt->getText() );
-    tabelle->setZeilenHeight( y, 20 );
-    tabelle->setZeichnungZ( 0, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 1, y, getTabellenEintrag( name, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
-    tabelle->setZeichnungZ( 2, y, getTabellenEintrag( ip, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
-    txt->setText( "" );
-    txt->append( port );
-    tabelle->setZeichnungZ( 3, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
-    txt->setText( "" );
-    txt->append( adminPort );
-    tabelle->setZeichnungZ( 4, y, getTabellenEintrag( txt->getText(), schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, 0xFFFFFFFF ) );
-    txt->release();
-    tabelle->setZeichnungZ( 5, y, getTabellenEintrag( status, schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0, getColorFromStatus( status ) ) );
-    KontrollKnopf *knopf = new KontrollKnopf();
-    knopf->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
-    knopf->loadData( "data/bilder/icons.ltdb" );
-    knopf->setMausEreignisParameter( this );
-    knopf->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
-    tabelle->setZeichnungZ( 6, y, knopf );
+	Text* txt = new Text();
+	txt->append(id);
+	tabelle->addZeile(txt->getText());
+	int y = tabelle->getZeilenNummer(txt->getText());
+	tabelle->setZeilenHeight(y, 20);
+	tabelle->setZeichnungZ(0, y, getTabellenEintrag(txt->getText(), schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(1, y, getTabellenEintrag(name, schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, 0xFFFFFFFF));
+	tabelle->setZeichnungZ(2, y, getTabellenEintrag(ip, schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, 0xFFFFFFFF));
+	txt->setText("");
+	txt->append(port);
+	tabelle->setZeichnungZ(3, y, getTabellenEintrag(txt->getText(), schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, 0xFFFFFFFF));
+	txt->setText("");
+	txt->append(adminPort);
+	tabelle->setZeichnungZ(4, y, getTabellenEintrag(txt->getText(), schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, 0xFFFFFFFF));
+	txt->release();
+	tabelle->setZeichnungZ(5, y, getTabellenEintrag(status, schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0, getColorFromStatus(status)));
+	KontrollKnopf* knopf = new KontrollKnopf();
+	knopf->setStyle(KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer);
+	knopf->loadData("data/bilder/icons.ltdb");
+	knopf->setMausEreignisParameter(this);
+	knopf->setMausEreignis(patchServerAuswahlKnopfMausEreignis);
+	tabelle->setZeichnungZ(6, y, knopf);
 }
 
-void PatchServer::setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text *error )
+void PatchServer::setServerDetails(int id, const char* name, const char* ip, int port, int adminPort, int clients, int maxClients, int status, Text* error)
 {
-    if( !psc )
-    {
-        psc = new PSKlient( ip, adminPort );
-        psc->verbinden();
-        psc->login( account->zName()->getText(), account->zPasswort()->getText() );
-        updateTh->setServer( ip, adminPort );
-    }
-    if( !error )
-    {
-        serverId->setText( "ID: " );
-        serverId->zText()->append( id );
-        serverName->setText( "Name: " );
-        serverName->zText()->append( name );
-        serverIp->setText( "IP: " );
-        serverIp->zText()->append( ip );
-        serverPort->setText( "Port: " );
-        serverPort->zText()->append( port );
-        serverAPort->setText( "Admin Port: " );
-        serverAPort->zText()->append( adminPort );
-        serverClients->setText( "Clients: " );
-        serverClients->zText()->append( clients );
-        this->maxClients->setText( "" );
-        this->maxClients->zText()->append( maxClients );
-        serverFehler->setText( "" );
-        serverFehler->setSchriftFarbe( 0xFFFFFFFF );
-        switch( status )
-        {
-        case -2: // Unbekannt
-            serverStatus->setText( "Status: Unbekannt" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF8800 );
-            break;
-        case -1: // Unerreichbar
-            serverStatus->setText( "Status: Unerreichbar" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFF0000 );
-            break;
-        case 0: // Offline
-            serverStatus->setText( "Status: Offline" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFFFFF00 );
-            stoppen->setText( "Starten" );
-            stoppen->addStyle( Knopf::Style::Erlaubt );
-            beenden->addStyle( Knopf::Style::Erlaubt );
-            terminieren->addStyle( Knopf::Style::Erlaubt );
-            this->maxClients->addStyle( TextFeld::Style::Erlaubt );
-            break;
-        case 1: // Pausiert
-            serverStatus->setText( "Status: Pausiert" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF88FF00 );
-            pausieren->setText( "Fortsetzen" );
-            pausieren->addStyle( Knopf::Style::Erlaubt );
-            stoppen->setText( "Stoppen" );
-            stoppen->addStyle( Knopf::Style::Erlaubt );
-            beenden->addStyle( Knopf::Style::Erlaubt );
-            terminieren->addStyle( Knopf::Style::Erlaubt );
-            this->maxClients->addStyle( TextFeld::Style::Erlaubt );
-            break;
-        case 2: // Online
-            serverStatus->setText( "Status: Online" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFF00FF00 );
-            pausieren->setText( "Pausieren" );
-            pausieren->addStyle( Knopf::Style::Erlaubt );
-            terminieren->addStyle( Knopf::Style::Erlaubt );
-            this->maxClients->addStyle( TextFeld::Style::Erlaubt );
-            break;
-        case 3: // Veraltet
-            serverStatus->setText( "Status: Veraltet" );
-            serverStatus->setSchriftFarbe( 8, serverStatus->zText()->getLength(), 0xFFB0FF00 );
-            pausieren->setText( "Pausieren" );
-            pausieren->addStyle( Knopf::Style::Erlaubt );
-            update->addStyle( Knopf::Style::Erlaubt );
-            beenden->addStyle( Knopf::Style::Erlaubt );
-            terminieren->addStyle( Knopf::Style::Erlaubt );
-            this->maxClients->addStyle( TextFeld::Style::Erlaubt );
-            break;
-        }
-        aktualisieren->addStyle( Knopf::Style::Erlaubt );
-        zurück->addStyle( Knopf::Style::Erlaubt );
-        update->addStyle( Knopf::Style::Erlaubt );
-    }
-    else
-    {
-        serverId->setText( "ID: " );
-        serverName->setText( "Name: " );
-        serverIp->setText( "IP: " );
-        serverPort->setText( "Port: " );
-        serverAPort->setText( "APort: " );
-        serverClients->setText( "Clients: " );
-        this->maxClients->setText( "" );
-        this->serverStatus->setText( "Status: " );
-        aktualisieren->addStyle( Knopf::Style::Erlaubt );
-        zurück->addStyle( Knopf::Style::Erlaubt );
-        serverFehler->setText( error );
-    }
+	if (!psc)
+	{
+		psc = new PSKlient(ip, adminPort);
+		psc->verbinden();
+		psc->login(account->zName()->getText(), account->zPasswort()->getText());
+		updateTh->setServer(ip, adminPort);
+	}
+	if (!error)
+	{
+		serverId->setText("ID: ");
+		serverId->zText()->append(id);
+		serverName->setText("Name: ");
+		serverName->zText()->append(name);
+		serverIp->setText("IP: ");
+		serverIp->zText()->append(ip);
+		serverPort->setText("Port: ");
+		serverPort->zText()->append(port);
+		serverAPort->setText("Admin Port: ");
+		serverAPort->zText()->append(adminPort);
+		serverClients->setText("Clients: ");
+		serverClients->zText()->append(clients);
+		this->maxClients->setText("");
+		this->maxClients->zText()->append(maxClients);
+		serverFehler->setText("");
+		serverFehler->setSchriftFarbe(0xFFFFFFFF);
+		switch (status)
+		{
+		case -2: // Unbekannt
+			serverStatus->setText("Status: Unbekannt");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFFFF8800);
+			break;
+		case -1: // Unerreichbar
+			serverStatus->setText("Status: Unerreichbar");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFFFF0000);
+			break;
+		case 0: // Offline
+			serverStatus->setText("Status: Offline");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFFFFFF00);
+			stoppen->setText("Starten");
+			stoppen->addStyle(Knopf::Style::Erlaubt);
+			beenden->addStyle(Knopf::Style::Erlaubt);
+			terminieren->addStyle(Knopf::Style::Erlaubt);
+			this->maxClients->addStyle(TextFeld::Style::Erlaubt);
+			break;
+		case 1: // Pausiert
+			serverStatus->setText("Status: Pausiert");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFF88FF00);
+			pausieren->setText("Fortsetzen");
+			pausieren->addStyle(Knopf::Style::Erlaubt);
+			stoppen->setText("Stoppen");
+			stoppen->addStyle(Knopf::Style::Erlaubt);
+			beenden->addStyle(Knopf::Style::Erlaubt);
+			terminieren->addStyle(Knopf::Style::Erlaubt);
+			this->maxClients->addStyle(TextFeld::Style::Erlaubt);
+			break;
+		case 2: // Online
+			serverStatus->setText("Status: Online");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFF00FF00);
+			pausieren->setText("Pausieren");
+			pausieren->addStyle(Knopf::Style::Erlaubt);
+			terminieren->addStyle(Knopf::Style::Erlaubt);
+			this->maxClients->addStyle(TextFeld::Style::Erlaubt);
+			break;
+		case 3: // Veraltet
+			serverStatus->setText("Status: Veraltet");
+			serverStatus->setSchriftFarbe(8, serverStatus->zText()->getLength(), 0xFFB0FF00);
+			pausieren->setText("Pausieren");
+			pausieren->addStyle(Knopf::Style::Erlaubt);
+			update->addStyle(Knopf::Style::Erlaubt);
+			beenden->addStyle(Knopf::Style::Erlaubt);
+			terminieren->addStyle(Knopf::Style::Erlaubt);
+			this->maxClients->addStyle(TextFeld::Style::Erlaubt);
+			break;
+		}
+		aktualisieren->addStyle(Knopf::Style::Erlaubt);
+		zurück->addStyle(Knopf::Style::Erlaubt);
+		update->addStyle(Knopf::Style::Erlaubt);
+	}
+	else
+	{
+		serverId->setText("ID: ");
+		serverName->setText("Name: ");
+		serverIp->setText("IP: ");
+		serverPort->setText("Port: ");
+		serverAPort->setText("APort: ");
+		serverClients->setText("Clients: ");
+		this->maxClients->setText("");
+		this->serverStatus->setText("Status: ");
+		aktualisieren->addStyle(Knopf::Style::Erlaubt);
+		zurück->addStyle(Knopf::Style::Erlaubt);
+		serverFehler->setText(error);
+	}
 }
 
 void PatchServer::sucheAbgeschlossen()
 {
-    aktualisieren->addStyle( Knopf::Style::Erlaubt );
-    tabelle->addStyle( ObjTabelle::Style::Erlaubt );
+	aktualisieren->addStyle(Knopf::Style::Erlaubt);
+	tabelle->addStyle(ObjTabelle::Style::Erlaubt);
 }
 
-void PatchServer::setUpdateProzent( int prozent, int gruppe )
+void PatchServer::setUpdateProzent(int prozent, int gruppe)
 {
-    for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
-    {
-        if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
-        {
-            if( updateT->zZeichnung( 3, i ) != obj )
-            {
-                updateT->lockZeichnung();
-                FBalken *fb = new FBalken();
-                fb->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
-                fb->setFBgFarbe( 0xFF00FF00 );
-                fb->setHintergrundFarbe( 0xFFFFFFFF );
-                fb->setSFarbe( 0xFF000000 );
-                fb->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                fb->setSSize( 12 );
-                fb->setRahmenBreite( 1 );
-                fb->setRahmenFarbe( 0xFF55FF55 );
-                fb->setFRFarbe( 0xFF55FF55 );
-                fb->reset();
-                fb->setAktionAnzahl( 100 );
-                updateT->setZeichnungZ( 1, i, fb );
-                updateT->setZeichnungZ( 3, i, dynamic_cast<Zeichnung *>( obj->getThis() ) );
-                updateT->unlockZeichnung();
-            }
-            ( (FBalken *)updateT->zZeichnung( 1, i ) )->reset();
-            ( (FBalken *)updateT->zZeichnung( 1, i ) )->aktionPlus( prozent );
-            return;
-        }
-    }
+	for (int i = 0; i < updateT->getZeilenAnzahl(); i++)
+	{
+		if (gruppe == TextZuInt(updateT->zZeilenName(i)->getText(), 10))
+		{
+			if (updateT->zZeichnung(3, i) != obj)
+			{
+				updateT->lockZeichnung();
+				FBalken* fb = new FBalken();
+				fb->setStyle(FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::FFarbe | FBalken::Style::Hintergrund | FBalken::Style::Prozent | FBalken::Style::Rahmen | FBalken::Style::FRahmen);
+				fb->setFBgFarbe(0xFF00FF00);
+				fb->setHintergrundFarbe(0xFFFFFFFF);
+				fb->setSFarbe(0xFF000000);
+				fb->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				fb->setSSize(12);
+				fb->setRahmenBreite(1);
+				fb->setRahmenFarbe(0xFF55FF55);
+				fb->setFRFarbe(0xFF55FF55);
+				fb->reset();
+				fb->setAktionAnzahl(100);
+				updateT->setZeichnungZ(1, i, fb);
+				updateT->setZeichnungZ(3, i, dynamic_cast<Zeichnung*>(obj->getThis()));
+				updateT->unlockZeichnung();
+			}
+			((FBalken*)updateT->zZeichnung(1, i))->reset();
+			((FBalken*)updateT->zZeichnung(1, i))->aktionPlus(prozent);
+			return;
+		}
+	}
 }
 
-void PatchServer::setUpdateFertig( bool error, int gruppe )
+void PatchServer::setUpdateFertig(bool error, int gruppe)
 {
-    if( !gruppe )
-    { // gesamter Vorgang abgeschlossen
-        aktualisieren->addStyle( Knopf::Style::Erlaubt );
-        zurück->addStyle( Knopf::Style::Erlaubt );
-        updateStarten->addStyle( Knopf::Style::Erlaubt );
-        updateT->addStyle( ObjTabelle::Style::Erlaubt );
-        MausEreignis me;
-        me.id = ME_RLinks;
-        if( b )
-            b->lock();
-        aktualisierenMausEreignis( 0, me );
-        if( b )
-            b->unlock();
-    }
-    else
-    { // einzelner Schritt abgeschlossen
-        for( int i = 0; i < updateT->getZeilenAnzahl(); i++ )
-        {
-            if( gruppe == TextZuInt( updateT->zZeilenName( i )->getText(), 10 ) )
-            {
-                updateT->lockZeichnung();
-                TextFeld *uTS = new TextFeld();
-                uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-                uTS->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                uTS->setSchriftSize( 12 );
-                uTS->setRahmenFarbe( 0xFFFFFFFF );
-                if( error )
-                {
-                    uTS->setText( "Fehler" );
-                    uTS->setSchriftFarbe( 0xFFFF0000 );
-                }
-                else
-                {
-                    uTS->setText( "Aktuell" );
-                    uTS->setSchriftFarbe( 0xFF00FF00 );
-                }
-                updateT->setZeichnungZ( 1, i, uTS );
-                updateT->setZeichnungZ( 3, i, 0 );
-                updateT->unlockZeichnung();
-                return;
-            }
-        }
-    }
+	if (!gruppe)
+	{ // gesamter Vorgang abgeschlossen
+		aktualisieren->addStyle(Knopf::Style::Erlaubt);
+		zurück->addStyle(Knopf::Style::Erlaubt);
+		updateStarten->addStyle(Knopf::Style::Erlaubt);
+		updateT->addStyle(ObjTabelle::Style::Erlaubt);
+		MausEreignis me;
+		me.id = ME_RLinks;
+		if (b)
+			b->lock();
+		aktualisierenMausEreignis(0, me);
+		if (b)
+			b->unlock();
+	}
+	else
+	{ // einzelner Schritt abgeschlossen
+		for (int i = 0; i < updateT->getZeilenAnzahl(); i++)
+		{
+			if (gruppe == TextZuInt(updateT->zZeilenName(i)->getText(), 10))
+			{
+				updateT->lockZeichnung();
+				TextFeld* uTS = new TextFeld();
+				uTS->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+				uTS->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				uTS->setSchriftSize(12);
+				uTS->setRahmenFarbe(0xFFFFFFFF);
+				if (error)
+				{
+					uTS->setText("Fehler");
+					uTS->setSchriftFarbe(0xFFFF0000);
+				}
+				else
+				{
+					uTS->setText("Aktuell");
+					uTS->setSchriftFarbe(0xFF00FF00);
+				}
+				updateT->setZeichnungZ(1, i, uTS);
+				updateT->setZeichnungZ(3, i, 0);
+				updateT->unlockZeichnung();
+				return;
+			}
+		}
+	}
 }
 
-bool PatchServer::aktualisierenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::aktualisierenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( liste->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            if( !suchen->isRunning() )
-            {
-                for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
-                    tabelle->removeZeile( 1 );
-                weiter->removeStyle( Knopf::Style::Erlaubt );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                tabelle->removeStyle( ObjTabelle::Style::Erlaubt );
-                suchen->start();
-            }
-        }
-        else if( details->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            update->removeStyle( Knopf::Style::Erlaubt );
-            pausieren->removeStyle( Knopf::Style::Erlaubt );
-            stoppen->removeStyle( Knopf::Style::Erlaubt );
-            beenden->removeStyle( Knopf::Style::Erlaubt );
-            terminieren->removeStyle( Knopf::Style::Erlaubt );
-            setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-            maxClients->removeStyle( TextFeld::Style::Erlaubt );
-            getDetails->start();
-        }
-        else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            int id = -1;
-            for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
-            {
-                if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-                {
-                    id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
-                    break;
-                }
-            }
-            Array< FileGroupInfo * > list;
-            if( psc->getFileGroupInfoList( &list ) )
-            {
-                for( int i = 1; i < updateT->getZeilenAnzahl(); )
-                    updateT->removeZeile( i );
-                int anz = list.getEintragAnzahl();
-                for( int i = 0; i < anz; i++ )
-                {
-                    FileGroupInfo *info = list.get( i );
-                    updateT->addZeile( new Text( info->id ) );
-                    TextFeld *uTN = new TextFeld();
-                    uTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                    uTN->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                    uTN->setSchriftFarbe( 0xFFFFFFFF );
-                    uTN->setSchriftSize( 12 );
-                    uTN->setRahmenFarbe( 0xFFFFFFFF );
-                    uTN->setText( info->name );
-                    updateT->setZeichnungZ( 0, i + 1, uTN );
-                    TextFeld *uTS = new TextFeld();
-                    uTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-                    uTS->setRahmenFarbe( 0xFFFFFFFF );
-                    uTS->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                    uTS->setSchriftSize( 12 );
-                    if( info->status.istGleich( "Fehlt" ) )
-                        uTS->setSchriftFarbe( 0xFFFF0000 );
-                    if( info->status.istGleich( "Aktuell" ) )
-                        uTS->setSchriftFarbe( 0xFF00FF00 );
-                    if( info->status.istGleich( "Veraltet" ) )
-                        uTS->setSchriftFarbe( 0xFFFFFF00 );
-                    if( info->status.istGleich( "Update" ) )
-                        uTS->setSchriftFarbe( 0xFFFFFFFF );
-                    uTS->setText( info->status.getText() );
-                    updateT->setZeichnungZ( 1, i + 1, uTS );
-                    if( info->status.istGleich( "Veraltet" ) || info->status.istGleich( "Fehlt" ) )
-                    {
-                        KontrollKnopf *auswahl = new KontrollKnopf();
-                        auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
-                        auswahl->loadData( "data/bilder/icons.ltdb" );
-                        auswahl->setMausEreignisParameter( this );
-                        auswahl->setMausEreignis( patchServerAuswahlKnopfMausEreignis );
-                        auswahl->setRahmenFarbe( 0xFFFFFFFF );
-                        updateT->setZeichnungZ( 2, i + 1, auswahl );
-                    }
-                    delete info;
-                }
-            }
-            else
-                WMessageBox( 0, new Text( "Fehler" ), new Text( psc->getLetzterFehler() ), MB_ICONERROR );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (liste->hatStyle(Fenster::Style::Sichtbar))
+		{
+			if (!suchen->isRunning())
+			{
+				for (int y = 1; y < tabelle->getZeilenAnzahl(); y++)
+					tabelle->removeZeile(1);
+				weiter->removeStyle(Knopf::Style::Erlaubt);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				tabelle->removeStyle(ObjTabelle::Style::Erlaubt);
+				suchen->start();
+			}
+		}
+		else if (details->hatStyle(Fenster::Style::Sichtbar))
+		{
+			aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			update->removeStyle(Knopf::Style::Erlaubt);
+			pausieren->removeStyle(Knopf::Style::Erlaubt);
+			stoppen->removeStyle(Knopf::Style::Erlaubt);
+			beenden->removeStyle(Knopf::Style::Erlaubt);
+			terminieren->removeStyle(Knopf::Style::Erlaubt);
+			setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+			maxClients->removeStyle(TextFeld::Style::Erlaubt);
+			getDetails->start();
+		}
+		else if (updateF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			int id = -1;
+			for (int i = 1; i < tabelle->getZeilenAnzahl(); i++)
+			{
+				if (((KontrollKnopf*)tabelle->zZeichnung(6, i))->hatStyle(KontrollKnopf::Style::Selected))
+				{
+					id = TextZuInt(tabelle->zZeilenName(i)->getText(), 10);
+					break;
+				}
+			}
+			Array< FileGroupInfo* > list;
+			if (psc->getFileGroupInfoList(&list))
+			{
+				for (int i = 1; i < updateT->getZeilenAnzahl(); )
+					updateT->removeZeile(i);
+				int anz = list.getEintragAnzahl();
+				for (int i = 0; i < anz; i++)
+				{
+					FileGroupInfo* info = list.get(i);
+					updateT->addZeile(new Text(info->id));
+					TextFeld* uTN = new TextFeld();
+					uTN->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+					uTN->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+					uTN->setSchriftFarbe(0xFFFFFFFF);
+					uTN->setSchriftSize(12);
+					uTN->setRahmenFarbe(0xFFFFFFFF);
+					uTN->setText(info->name);
+					updateT->setZeichnungZ(0, i + 1, uTN);
+					TextFeld* uTS = new TextFeld();
+					uTS->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+					uTS->setRahmenFarbe(0xFFFFFFFF);
+					uTS->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+					uTS->setSchriftSize(12);
+					if (info->status.istGleich("Fehlt"))
+						uTS->setSchriftFarbe(0xFFFF0000);
+					if (info->status.istGleich("Aktuell"))
+						uTS->setSchriftFarbe(0xFF00FF00);
+					if (info->status.istGleich("Veraltet"))
+						uTS->setSchriftFarbe(0xFFFFFF00);
+					if (info->status.istGleich("Update"))
+						uTS->setSchriftFarbe(0xFFFFFFFF);
+					uTS->setText(info->status.getText());
+					updateT->setZeichnungZ(1, i + 1, uTS);
+					if (info->status.istGleich("Veraltet") || info->status.istGleich("Fehlt"))
+					{
+						KontrollKnopf* auswahl = new KontrollKnopf();
+						auswahl->setStyle(KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen);
+						auswahl->loadData("data/bilder/icons.ltdb");
+						auswahl->setMausEreignisParameter(this);
+						auswahl->setMausEreignis(patchServerAuswahlKnopfMausEreignis);
+						auswahl->setRahmenFarbe(0xFFFFFFFF);
+						updateT->setZeichnungZ(2, i + 1, auswahl);
+					}
+					delete info;
+				}
+			}
+			else
+				WMessageBox(0, new Text("Fehler"), new Text(psc->getLetzterFehler()), MB_ICONERROR);
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::auswahlKnopfMausEreignis( void *o, MausEreignis me )
+bool PatchServer::auswahlKnopfMausEreignis(void* o, MausEreignis me)
 {
-    if( !o )
-        return 0;
-    if( me.id == ME_RLinks )
-    {
-        if( liste->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
-                ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->removeStyle( KontrollKnopf::Style::Selected );
-            weiter->addStyle( Knopf::Style::Erlaubt );
-        }
-    }
-    return 1;
+	if (!o)
+		return 0;
+	if (me.id == ME_RLinks)
+	{
+		if (liste->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int i = 1; i < tabelle->getZeilenAnzahl(); i++)
+				((KontrollKnopf*)tabelle->zZeichnung(6, i))->removeStyle(KontrollKnopf::Style::Selected);
+			weiter->addStyle(Knopf::Style::Erlaubt);
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::weiterMausEreignis( void *o, MausEreignis me )
+bool PatchServer::weiterMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        liste->removeStyle( Fenster::Style::Sichtbar );
-        details->addStyle( Fenster::Style::Sichtbar );
-        aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-        zurück->removeStyle( Knopf::Style::Erlaubt );
-        update->removeStyle( Knopf::Style::Erlaubt );
-        pausieren->removeStyle( Knopf::Style::Erlaubt );
-        stoppen->removeStyle( Knopf::Style::Erlaubt );
-        beenden->removeStyle( Knopf::Style::Erlaubt );
-        terminieren->removeStyle( Knopf::Style::Erlaubt );
-        setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-        maxClients->removeStyle( TextFeld::Style::Erlaubt );
-        int id = -1;
-        for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
-        {
-            if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-            {
-                id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
-                break;
-            }
-        }
-        getDetails->setServerId( id );
-        getDetails->start();
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		liste->removeStyle(Fenster::Style::Sichtbar);
+		details->addStyle(Fenster::Style::Sichtbar);
+		aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+		zurück->removeStyle(Knopf::Style::Erlaubt);
+		update->removeStyle(Knopf::Style::Erlaubt);
+		pausieren->removeStyle(Knopf::Style::Erlaubt);
+		stoppen->removeStyle(Knopf::Style::Erlaubt);
+		beenden->removeStyle(Knopf::Style::Erlaubt);
+		terminieren->removeStyle(Knopf::Style::Erlaubt);
+		setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+		maxClients->removeStyle(TextFeld::Style::Erlaubt);
+		int id = -1;
+		for (int i = 1; i < tabelle->getZeilenAnzahl(); i++)
+		{
+			if (((KontrollKnopf*)tabelle->zZeichnung(6, i))->hatStyle(KontrollKnopf::Style::Selected))
+			{
+				id = TextZuInt(tabelle->zZeilenName(i)->getText(), 10);
+				break;
+			}
+		}
+		getDetails->setServerId(id);
+		getDetails->start();
+	}
+	return 1;
 }
 
-bool PatchServer::zurückMausEreignis( void *o, MausEreignis me )
+bool PatchServer::zurückMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( details->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            details->removeStyle( Fenster::Style::Sichtbar );
-            liste->addStyle( Fenster::Style::Sichtbar );
-            if( !suchen->isRunning() )
-            {
-                for( int y = 1; y < tabelle->getZeilenAnzahl(); y++ )
-                    tabelle->removeZeile( 1 );
-                weiter->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                suchen->start();
-            }
-            if( psc )
-            {
-                psc->trenne();
-                psc = (PSKlient *)psc->release();
-            }
-        }
-        else if( updateF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            updateF->removeStyle( Fenster::Style::Sichtbar );
-            details->addStyle( Fenster::Style::Sichtbar );
-            aktualisierenMausEreignis( 0, me );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (details->hatStyle(Fenster::Style::Sichtbar))
+		{
+			details->removeStyle(Fenster::Style::Sichtbar);
+			liste->addStyle(Fenster::Style::Sichtbar);
+			if (!suchen->isRunning())
+			{
+				for (int y = 1; y < tabelle->getZeilenAnzahl(); y++)
+					tabelle->removeZeile(1);
+				weiter->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				suchen->start();
+			}
+			if (psc)
+			{
+				psc->trenne();
+				psc = (PSKlient*)psc->release();
+			}
+		}
+		else if (updateF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			updateF->removeStyle(Fenster::Style::Sichtbar);
+			details->addStyle(Fenster::Style::Sichtbar);
+			aktualisierenMausEreignis(0, me);
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::updateMausEreignis( void *o, MausEreignis me )
+bool PatchServer::updateMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        zurück->addStyle( Knopf::Style::Erlaubt );
-        weiter->removeStyle( Knopf::Style::Erlaubt );
-        details->removeStyle( Fenster::Style::Sichtbar );
-        updateF->addStyle( Fenster::Style::Sichtbar );
-        aktualisieren->addStyle( Knopf::Style::Erlaubt );
-        aktualisierenMausEreignis( 0, me );
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		zurück->addStyle(Knopf::Style::Erlaubt);
+		weiter->removeStyle(Knopf::Style::Erlaubt);
+		details->removeStyle(Fenster::Style::Sichtbar);
+		updateF->addStyle(Fenster::Style::Sichtbar);
+		aktualisieren->addStyle(Knopf::Style::Erlaubt);
+		aktualisierenMausEreignis(0, me);
+	}
+	return 1;
 }
 
-bool PatchServer::pausierenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::pausierenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( pausieren->zText()->istGleich( "Pausieren" ) )
-        {
-            if( psc->pause() )
-            {
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                update->removeStyle( Knopf::Style::Erlaubt );
-                pausieren->removeStyle( Knopf::Style::Erlaubt );
-                stoppen->removeStyle( Knopf::Style::Erlaubt );
-                beenden->removeStyle( Knopf::Style::Erlaubt );
-                terminieren->removeStyle( Knopf::Style::Erlaubt );
-                setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-                maxClients->removeStyle( TextFeld::Style::Erlaubt );
-                getDetails->start();
-            }
-            else
-                serverFehler->setText( psc->getLetzterFehler() );
-        }
-        else
-        {
-            if( psc->fortsetzen() )
-            {
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                update->removeStyle( Knopf::Style::Erlaubt );
-                pausieren->removeStyle( Knopf::Style::Erlaubt );
-                stoppen->removeStyle( Knopf::Style::Erlaubt );
-                beenden->removeStyle( Knopf::Style::Erlaubt );
-                terminieren->removeStyle( Knopf::Style::Erlaubt );
-                setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-                maxClients->removeStyle( TextFeld::Style::Erlaubt );
-                getDetails->start();
-            }
-            else
-                serverFehler->setText( psc->getLetzterFehler() );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (pausieren->zText()->istGleich("Pausieren"))
+		{
+			if (psc->pause())
+			{
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				update->removeStyle(Knopf::Style::Erlaubt);
+				pausieren->removeStyle(Knopf::Style::Erlaubt);
+				stoppen->removeStyle(Knopf::Style::Erlaubt);
+				beenden->removeStyle(Knopf::Style::Erlaubt);
+				terminieren->removeStyle(Knopf::Style::Erlaubt);
+				setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+				maxClients->removeStyle(TextFeld::Style::Erlaubt);
+				getDetails->start();
+			}
+			else
+				serverFehler->setText(psc->getLetzterFehler());
+		}
+		else
+		{
+			if (psc->fortsetzen())
+			{
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				update->removeStyle(Knopf::Style::Erlaubt);
+				pausieren->removeStyle(Knopf::Style::Erlaubt);
+				stoppen->removeStyle(Knopf::Style::Erlaubt);
+				beenden->removeStyle(Knopf::Style::Erlaubt);
+				terminieren->removeStyle(Knopf::Style::Erlaubt);
+				setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+				maxClients->removeStyle(TextFeld::Style::Erlaubt);
+				getDetails->start();
+			}
+			else
+				serverFehler->setText(psc->getLetzterFehler());
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::stoppenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::stoppenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( stoppen->zText()->istGleich( "Stoppen" ) )
-        {
-            if( psc->stop() )
-            {
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                update->removeStyle( Knopf::Style::Erlaubt );
-                pausieren->removeStyle( Knopf::Style::Erlaubt );
-                stoppen->removeStyle( Knopf::Style::Erlaubt );
-                beenden->removeStyle( Knopf::Style::Erlaubt );
-                terminieren->removeStyle( Knopf::Style::Erlaubt );
-                setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-                maxClients->removeStyle( TextFeld::Style::Erlaubt );
-                getDetails->start();
-            }
-            else
-                serverFehler->setText( psc->getLetzterFehler() );
-        }
-        else
-        {
-            if( psc->start() )
-            {
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                update->removeStyle( Knopf::Style::Erlaubt );
-                pausieren->removeStyle( Knopf::Style::Erlaubt );
-                stoppen->removeStyle( Knopf::Style::Erlaubt );
-                beenden->removeStyle( Knopf::Style::Erlaubt );
-                terminieren->removeStyle( Knopf::Style::Erlaubt );
-                setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-                maxClients->removeStyle( TextFeld::Style::Erlaubt );
-                getDetails->start();
-            }
-            else
-                serverFehler->setText( psc->getLetzterFehler() );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (stoppen->zText()->istGleich("Stoppen"))
+		{
+			if (psc->stop())
+			{
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				update->removeStyle(Knopf::Style::Erlaubt);
+				pausieren->removeStyle(Knopf::Style::Erlaubt);
+				stoppen->removeStyle(Knopf::Style::Erlaubt);
+				beenden->removeStyle(Knopf::Style::Erlaubt);
+				terminieren->removeStyle(Knopf::Style::Erlaubt);
+				setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+				maxClients->removeStyle(TextFeld::Style::Erlaubt);
+				getDetails->start();
+			}
+			else
+				serverFehler->setText(psc->getLetzterFehler());
+		}
+		else
+		{
+			if (psc->start())
+			{
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				update->removeStyle(Knopf::Style::Erlaubt);
+				pausieren->removeStyle(Knopf::Style::Erlaubt);
+				stoppen->removeStyle(Knopf::Style::Erlaubt);
+				beenden->removeStyle(Knopf::Style::Erlaubt);
+				terminieren->removeStyle(Knopf::Style::Erlaubt);
+				setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+				maxClients->removeStyle(TextFeld::Style::Erlaubt);
+				getDetails->start();
+			}
+			else
+				serverFehler->setText(psc->getLetzterFehler());
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::beendenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::beendenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( psc->beenden() )
-        {
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            update->removeStyle( Knopf::Style::Erlaubt );
-            pausieren->removeStyle( Knopf::Style::Erlaubt );
-            stoppen->removeStyle( Knopf::Style::Erlaubt );
-            beenden->removeStyle( Knopf::Style::Erlaubt );
-            terminieren->removeStyle( Knopf::Style::Erlaubt );
-            setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-            maxClients->removeStyle( TextFeld::Style::Erlaubt );
-            zurückMausEreignis( 0, me );
-        }
-        else
-            serverFehler->setText( psc->getLetzterFehler() );
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (psc->beenden())
+		{
+			aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			update->removeStyle(Knopf::Style::Erlaubt);
+			pausieren->removeStyle(Knopf::Style::Erlaubt);
+			stoppen->removeStyle(Knopf::Style::Erlaubt);
+			beenden->removeStyle(Knopf::Style::Erlaubt);
+			terminieren->removeStyle(Knopf::Style::Erlaubt);
+			setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+			maxClients->removeStyle(TextFeld::Style::Erlaubt);
+			zurückMausEreignis(0, me);
+		}
+		else
+			serverFehler->setText(psc->getLetzterFehler());
+	}
+	return 1;
 }
 
-bool PatchServer::terminierenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::terminierenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( psc->terminieren() )
-        {
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            update->removeStyle( Knopf::Style::Erlaubt );
-            pausieren->removeStyle( Knopf::Style::Erlaubt );
-            stoppen->removeStyle( Knopf::Style::Erlaubt );
-            beenden->removeStyle( Knopf::Style::Erlaubt );
-            terminieren->removeStyle( Knopf::Style::Erlaubt );
-            setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-            maxClients->removeStyle( TextFeld::Style::Erlaubt );
-            zurückMausEreignis( 0, me );
-        }
-        else
-            serverFehler->setText( psc->getLetzterFehler() );
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (psc->terminieren())
+		{
+			aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			update->removeStyle(Knopf::Style::Erlaubt);
+			pausieren->removeStyle(Knopf::Style::Erlaubt);
+			stoppen->removeStyle(Knopf::Style::Erlaubt);
+			beenden->removeStyle(Knopf::Style::Erlaubt);
+			terminieren->removeStyle(Knopf::Style::Erlaubt);
+			setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+			maxClients->removeStyle(TextFeld::Style::Erlaubt);
+			zurückMausEreignis(0, me);
+		}
+		else
+			serverFehler->setText(psc->getLetzterFehler());
+	}
+	return 1;
 }
 
-bool PatchServer::setMaxClientsMausEreignis( void *o, MausEreignis me )
+bool PatchServer::setMaxClientsMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( psc->setMaxTasks( TextZuInt( maxClients->zText()->getText(), 10 ) ) )
-        {
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            update->removeStyle( Knopf::Style::Erlaubt );
-            pausieren->removeStyle( Knopf::Style::Erlaubt );
-            stoppen->removeStyle( Knopf::Style::Erlaubt );
-            beenden->removeStyle( Knopf::Style::Erlaubt );
-            terminieren->removeStyle( Knopf::Style::Erlaubt );
-            setMaxClients->removeStyle( Knopf::Style::Erlaubt );
-            maxClients->removeStyle( TextFeld::Style::Erlaubt );
-            getDetails->start();
-        }
-        else
-            serverFehler->setText( psc->getLetzterFehler() );
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (psc->setMaxTasks(TextZuInt(maxClients->zText()->getText(), 10)))
+		{
+			aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			update->removeStyle(Knopf::Style::Erlaubt);
+			pausieren->removeStyle(Knopf::Style::Erlaubt);
+			stoppen->removeStyle(Knopf::Style::Erlaubt);
+			beenden->removeStyle(Knopf::Style::Erlaubt);
+			terminieren->removeStyle(Knopf::Style::Erlaubt);
+			setMaxClients->removeStyle(Knopf::Style::Erlaubt);
+			maxClients->removeStyle(TextFeld::Style::Erlaubt);
+			getDetails->start();
+		}
+		else
+			serverFehler->setText(psc->getLetzterFehler());
+	}
+	return 1;
 }
 
-bool PatchServer::updateStartenMausEreignis( void *o, MausEreignis me )
+bool PatchServer::updateStartenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        int id = -1;
-        for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
-        {
-            if( ( (KontrollKnopf *)tabelle->zZeichnung( 6, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-            {
-                id = TextZuInt( tabelle->zZeilenName( i )->getText(), 10 );
-                break;
-            }
-        }
-        if( id > 0 )
-        {
-            int anzahl = 0;
-            Array< int > *gruppen = new Array< int >();
-            for( int i = 1; i < updateT->getZeilenAnzahl(); i++ )
-            {
-                if( updateT->zZeichnung( 2, i ) && ( (KontrollKnopf *)updateT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-                {
-                    int gId = TextZuInt( updateT->zZeilenName( i )->getText(), 10 );
-                    gruppen->set( gId, anzahl );
-                    anzahl++;
-                }
-            }
-            if( anzahl )
-            {
-                updateStarten->removeStyle( Knopf::Style::Erlaubt );
-                zurück->removeStyle( Knopf::Style::Erlaubt );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                updateT->removeStyle( ObjTabelle::Style::Erlaubt );
-                updateTh->setUpdateListe( anzahl, gruppen );
-                updateTh->start();
-            }
-            gruppen->release();
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		int id = -1;
+		for (int i = 1; i < tabelle->getZeilenAnzahl(); i++)
+		{
+			if (((KontrollKnopf*)tabelle->zZeichnung(6, i))->hatStyle(KontrollKnopf::Style::Selected))
+			{
+				id = TextZuInt(tabelle->zZeilenName(i)->getText(), 10);
+				break;
+			}
+		}
+		if (id > 0)
+		{
+			int anzahl = 0;
+			Array< int >* gruppen = new Array< int >();
+			for (int i = 1; i < updateT->getZeilenAnzahl(); i++)
+			{
+				if (updateT->zZeichnung(2, i) && ((KontrollKnopf*)updateT->zZeichnung(2, i))->hatStyle(KontrollKnopf::Style::Selected))
+				{
+					int gId = TextZuInt(updateT->zZeilenName(i)->getText(), 10);
+					gruppen->set(gId, anzahl);
+					anzahl++;
+				}
+			}
+			if (anzahl)
+			{
+				updateStarten->removeStyle(Knopf::Style::Erlaubt);
+				zurück->removeStyle(Knopf::Style::Erlaubt);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				updateT->removeStyle(ObjTabelle::Style::Erlaubt);
+				updateTh->setUpdateListe(anzahl, gruppen);
+				updateTh->start();
+			}
+			gruppen->release();
+		}
+	}
+	return 1;
 }
 
-bool PatchServer::maxClientsTastaturEreignis( void *o, TastaturEreignis te )
+bool PatchServer::maxClientsTastaturEreignis(void* o, TastaturEreignis te)
 {
-    bool ret = 0;
-    if( te.taste >= '0' && te.taste <= '9' )
-        ret = 1;
-    if( te.taste == T_Entf || te.taste == T_BackSpace )
-        ret = 1;
-    if( te.taste == T_Links || te.taste == T_Rechts )
-        ret = 1;
-    if( ret )
-        setMaxClients->addStyle( Knopf::Style::Erlaubt );
-    return ret;
+	bool ret = 0;
+	if (te.taste >= '0' && te.taste <= '9')
+		ret = 1;
+	if (te.taste == T_Entf || te.taste == T_BackSpace)
+		ret = 1;
+	if (te.taste == T_Links || te.taste == T_Rechts)
+		ret = 1;
+	if (ret)
+		setMaxClients->addStyle(Knopf::Style::Erlaubt);
+	return ret;
 }
 
 void PatchServer::updateAll()
 {
-    std::cout << "Searching for Patch Servers ...\n";
-    while( suchen->isRunning() )
-    {
-        Sleep( 100 );
-    }
-    MausEreignis me;
-    me.id = ME_RLinks;
-    me.verarbeitet = 0;
-    for( int i = 1; i < tabelle->getZeilenAnzahl(); i++ )
-    {
-        if( ( (TextFeld *)tabelle->zZeichnung( 5, i ) )->zText()->istGleich( "Veraltet" ) )
-        {
-            std::cout << "Request details from server " << ( (TextFeld *)tabelle->zZeichnung( 0, i ) )->zText()->getText() << " ...\n";
-            Zeichnung *z = tabelle->zZeichnung( 6, i );
-            me.mx = z->getX();
-            me.my = z->getY();
-            me.verarbeitet = 0;
-            z->doPublicMausEreignis( me );
-            me.verarbeitet = 0;
-            weiterMausEreignis( weiter, me );
-            while( getDetails->isRunning() )
-            {
-                Sleep( 100 );
-            }
-            updateMausEreignis( update, me );
-            for( int j = 1; j < updateT->getZeilenAnzahl(); j++ )
-            {
-                if( ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->istGleich( "Veraltet" ) )
-                {
-                    std::cout << "Update group " << ( (TextFeld *)updateT->zZeichnung( 0, j ) )->zText()->getText() << " ... ";
-                    Zeichnung *z = updateT->zZeichnung( 2, j );
-                    me.mx = z->getX();
-                    me.my = z->getY();
-                    me.verarbeitet = 0;
-                    z->doPublicMausEreignis( me );
-                    me.verarbeitet = 0;
-                    updateStartenMausEreignis( updateStarten, me );
-                    while( updateTh->isRunning() )
-                    {
-                        Sleep( 100 );
-                    }
-                    std::cout << ( (TextFeld *)updateT->zZeichnung( 1, j ) )->zText()->getText() << "\n";
-                    j = 0;
-                }
-            }
-            zurückMausEreignis( zurück, me );
-            while( getDetails->isRunning() )
-            {
-                Sleep( 100 );
-            }
-            zurückMausEreignis( zurück, me );
-            while( suchen->isRunning() )
-            {
-                Sleep( 100 );
-            }
-            i = 0;
-        }
-    }
-    std::cout << "Everything is up to date!\n";
+	std::cout << "Searching for Patch Servers ...\n";
+	while (suchen->isRunning())
+	{
+		Sleep(100);
+	}
+	MausEreignis me;
+	me.id = ME_RLinks;
+	me.verarbeitet = 0;
+	for (int i = 1; i < tabelle->getZeilenAnzahl(); i++)
+	{
+		if (((TextFeld*)tabelle->zZeichnung(5, i))->zText()->istGleich("Veraltet"))
+		{
+			std::cout << "Request details from server " << ((TextFeld*)tabelle->zZeichnung(0, i))->zText()->getText() << " ...\n";
+			Zeichnung* z = tabelle->zZeichnung(6, i);
+			me.mx = z->getX();
+			me.my = z->getY();
+			me.verarbeitet = 0;
+			z->doPublicMausEreignis(me);
+			me.verarbeitet = 0;
+			weiterMausEreignis(weiter, me);
+			while (getDetails->isRunning())
+			{
+				Sleep(100);
+			}
+			updateMausEreignis(update, me);
+			for (int j = 1; j < updateT->getZeilenAnzahl(); j++)
+			{
+				if (((TextFeld*)updateT->zZeichnung(1, j))->zText()->istGleich("Veraltet"))
+				{
+					std::cout << "Update group " << ((TextFeld*)updateT->zZeichnung(0, j))->zText()->getText() << " ... ";
+					Zeichnung* z = updateT->zZeichnung(2, j);
+					me.mx = z->getX();
+					me.my = z->getY();
+					me.verarbeitet = 0;
+					z->doPublicMausEreignis(me);
+					me.verarbeitet = 0;
+					updateStartenMausEreignis(updateStarten, me);
+					while (updateTh->isRunning())
+					{
+						Sleep(100);
+					}
+					std::cout << ((TextFeld*)updateT->zZeichnung(1, j))->zText()->getText() << "\n";
+					j = 0;
+				}
+			}
+			zurückMausEreignis(zurück, me);
+			while (getDetails->isRunning())
+			{
+				Sleep(100);
+			}
+			zurückMausEreignis(zurück, me);
+			while (suchen->isRunning())
+			{
+				Sleep(100);
+			}
+			i = 0;
+		}
+	}
+	std::cout << "Everything is up to date!\n";
 }
 
 
 // Ereignisse
-bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerAktualisierenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->aktualisierenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->aktualisierenMausEreignis(o, me);
 }
 
-bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerAuswahlKnopfMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->auswahlKnopfMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->auswahlKnopfMausEreignis(o, me);
 }
 
-bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerWeiterMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->weiterMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->weiterMausEreignis(o, me);
 }
 
-bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerZurückMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->zurückMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->zurückMausEreignis(o, me);
 }
 
-bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerUpdateMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->updateMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->updateMausEreignis(o, me);
 }
 
-bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerPausierenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->pausierenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->pausierenMausEreignis(o, me);
 }
 
-bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerStoppenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->stoppenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->stoppenMausEreignis(o, me);
 }
 
-bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerBeendenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->beendenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->beendenMausEreignis(o, me);
 }
 
-bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerTerminierenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->terminierenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->terminierenMausEreignis(o, me);
 }
 
-bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerSetMaxClientsMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->setMaxClientsMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->setMaxClientsMausEreignis(o, me);
 }
 
-bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me )
+bool patchServerUpdateStartenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->updateStartenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->updateStartenMausEreignis(o, me);
 }
 
-bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te )
+bool patchServerMaxClientsTastaturEreignis(void* p, void* o, TastaturEreignis te)
 {
-    if( !p )
-        return 0;
-    return ( (PatchServer *)p )->maxClientsTastaturEreignis( o, te );
+	if (!p)
+		return 0;
+	return ((PatchServer*)p)->maxClientsTastaturEreignis(o, te);
 }

+ 105 - 105
SMP/Programm/Server/Patch/PatchServer.h

@@ -17,136 +17,136 @@ class PatchServer; // PatchServer.h
 class PSUpdate : public Thread
 {
 private:
-    PatchServer *zPSA;
-    AdminAccount *account;
-    PSKlient *psc;
-    int gruppeAnzahl;
-    int *gruppeId;
-    int id;
+	PatchServer* zPSA;
+	AdminAccount* account;
+	PSKlient* psc;
+	int gruppeAnzahl;
+	int* gruppeId;
+	int id;
 
 public:
-    // Kontruktor
-    PSUpdate( PatchServer *zPSA, AdminAccount *account );
-    // Destruktor
-    ~PSUpdate();
-    // nicht constant
-    void setServer( const char *ip, unsigned short port );
-    void setUpdateListe( int gAnzahl, Array< int > *gId );
-    virtual void thread();
+	// Kontruktor
+	PSUpdate(PatchServer* zPSA, AdminAccount* account);
+	// Destruktor
+	~PSUpdate();
+	// nicht constant
+	void setServer(const char* ip, unsigned short port);
+	void setUpdateListe(int gAnzahl, Array< int >* gId);
+	virtual void thread();
 };
 
 class PSDetails : public Thread
 {
 private:
-    PatchServer *zPSA;
-    MSKlient *mk;
-    int id;
+	PatchServer* zPSA;
+	MSKlient* mk;
+	int id;
 
 public:
-    // Konstruktor
-    PSDetails( PatchServer *zPSA, MSKlient *mk );
-    // Destruktor
-    ~PSDetails();
-    // nicht constant
-    void setServerId( int id );
-    virtual void thread();
+	// Konstruktor
+	PSDetails(PatchServer* zPSA, MSKlient* mk);
+	// Destruktor
+	~PSDetails();
+	// nicht constant
+	void setServerId(int id);
+	virtual void thread();
 };
 
 class PSSuche : public Thread
 {
 private:
-    PatchServer *zPSA;
-    MSKlient *mk;
+	PatchServer* zPSA;
+	MSKlient* mk;
 
 public:
-    // Konstruktor
-    PSSuche( PatchServer *zPSA, MSKlient *mk );
-    // Destruktor
-    ~PSSuche();
-    // nicht constant
-    virtual void thread();
+	// Konstruktor
+	PSSuche(PatchServer* zPSA, MSKlient* mk);
+	// Destruktor
+	~PSSuche();
+	// nicht constant
+	virtual void thread();
 };
 
 class PatchServer : public Abschnitt
 {
 private:
-    Fenster *fenster;
-    Fenster *liste;
-    Fenster *details;
-    Fenster *updateF;
-    MSKlient *msk;
-    InitDatei *iD;
-    Fenster *f;
-    AdminAccount *account;
-    Knopf *aktualisieren;
-    Knopf *weiter;
-    Knopf *zurück;
-    ObjTabelle *tabelle;
-    ObjTabelle *updateT;
-    PSSuche *suchen;
-    PSDetails *getDetails;
-    PSUpdate *updateTh;
-    Schrift *schrift;
-    PSKlient *psc;
-    TextFeld *serverId;
-    TextFeld *serverName;
-    TextFeld *serverIp;
-    TextFeld *serverPort;
-    TextFeld *serverAPort;
-    TextFeld *serverClients;
-    TextFeld *serverMaxClients;
-    TextFeld *maxClients;
-    TextFeld *serverStatus;
-    TextFeld *serverFehler;
-    Knopf *updateStarten;
-    Knopf *update;
-    Knopf *pausieren;
-    Knopf *stoppen;
-    Knopf *beenden;
-    Knopf *terminieren;
-    Knopf *setMaxClients;
-    Zeichnung *obj;
+	Fenster* fenster;
+	Fenster* liste;
+	Fenster* details;
+	Fenster* updateF;
+	MSKlient* msk;
+	InitDatei* iD;
+	Fenster* f;
+	AdminAccount* account;
+	Knopf* aktualisieren;
+	Knopf* weiter;
+	Knopf* zurück;
+	ObjTabelle* tabelle;
+	ObjTabelle* updateT;
+	PSSuche* suchen;
+	PSDetails* getDetails;
+	PSUpdate* updateTh;
+	Schrift* schrift;
+	PSKlient* psc;
+	TextFeld* serverId;
+	TextFeld* serverName;
+	TextFeld* serverIp;
+	TextFeld* serverPort;
+	TextFeld* serverAPort;
+	TextFeld* serverClients;
+	TextFeld* serverMaxClients;
+	TextFeld* maxClients;
+	TextFeld* serverStatus;
+	TextFeld* serverFehler;
+	Knopf* updateStarten;
+	Knopf* update;
+	Knopf* pausieren;
+	Knopf* stoppen;
+	Knopf* beenden;
+	Knopf* terminieren;
+	Knopf* setMaxClients;
+	Zeichnung* obj;
 
 public:
-    // Konstruktor
-    PatchServer( Schrift *s, InitDatei *d, MSKlient *msk, RessourceBild *rb, AdminAccount *acc, Bildschirm *b );
-    // Destruktor
-    ~PatchServer();
-    // nicht constant
-    virtual void setFenster( Fenster *f );
-    virtual void setSichtbar( bool s );
-    void addServer( int id, char *name, char *ip, int port, int adminPort, char *status );
-    void sucheAbgeschlossen();
-    void setServerDetails( int id, char *name, char *ip, int port, int adminPort, int clients, int maxClients, int status, Text *error );
-    void setUpdateProzent( int prozent, int gruppe );
-    void setUpdateFertig( bool error, int gruppe );
-    bool aktualisierenMausEreignis( void *o, MausEreignis me );
-    bool auswahlKnopfMausEreignis( void *o, MausEreignis me );
-    bool weiterMausEreignis( void *o, MausEreignis me );
-    bool zurückMausEreignis( void *o, MausEreignis me );
-    bool updateMausEreignis( void *o, MausEreignis me );
-    bool pausierenMausEreignis( void *o, MausEreignis me );
-    bool stoppenMausEreignis( void *o, MausEreignis me );
-    bool beendenMausEreignis( void *o, MausEreignis me );
-    bool terminierenMausEreignis( void *o, MausEreignis me );
-    bool setMaxClientsMausEreignis( void *o, MausEreignis me );
-    bool updateStartenMausEreignis( void *o, MausEreignis me );
-    bool maxClientsTastaturEreignis( void *o, TastaturEreignis te );
-    void updateAll();
+	// Konstruktor
+	PatchServer(Schrift* s, InitDatei* d, MSKlient* msk, RessourceBild* rb, AdminAccount* acc, Bildschirm* b);
+	// Destruktor
+	~PatchServer();
+	// nicht constant
+	virtual void setFenster(Fenster* f);
+	virtual void setSichtbar(bool s);
+	void addServer(int id, const char* name, const char* ip, int port, int adminPort, const char* status);
+	void sucheAbgeschlossen();
+	void setServerDetails(int id, const char* name, const char* ip, int port, int adminPort, int clients, int maxClients, int status, Text* error);
+	void setUpdateProzent(int prozent, int gruppe);
+	void setUpdateFertig(bool error, int gruppe);
+	bool aktualisierenMausEreignis(void* o, MausEreignis me);
+	bool auswahlKnopfMausEreignis(void* o, MausEreignis me);
+	bool weiterMausEreignis(void* o, MausEreignis me);
+	bool zurückMausEreignis(void* o, MausEreignis me);
+	bool updateMausEreignis(void* o, MausEreignis me);
+	bool pausierenMausEreignis(void* o, MausEreignis me);
+	bool stoppenMausEreignis(void* o, MausEreignis me);
+	bool beendenMausEreignis(void* o, MausEreignis me);
+	bool terminierenMausEreignis(void* o, MausEreignis me);
+	bool setMaxClientsMausEreignis(void* o, MausEreignis me);
+	bool updateStartenMausEreignis(void* o, MausEreignis me);
+	bool maxClientsTastaturEreignis(void* o, TastaturEreignis te);
+	void updateAll();
 };
 
 // Ereignisse
-bool patchServerAktualisierenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerWeiterMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerZurückMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerUpdateMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerPausierenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerStoppenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerBeendenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerTerminierenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerSetMaxClientsMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerUpdateStartenMausEreignis( void *p, void *o, MausEreignis me );
-bool patchServerMaxClientsTastaturEreignis( void *p, void *o, TastaturEreignis te );
+bool patchServerAktualisierenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerAuswahlKnopfMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerWeiterMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerZurückMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerUpdateMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerPausierenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerStoppenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerBeendenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerTerminierenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerSetMaxClientsMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerUpdateStartenMausEreignis(void* p, void* o, MausEreignis me);
+bool patchServerMaxClientsTastaturEreignis(void* p, void* o, TastaturEreignis te);
 
 #endif

+ 966 - 966
SMP/Programm/Version/Version.cpp

@@ -5,1067 +5,1067 @@
 
 // Inhalt der Version Klasse aus Version.h
 // Konstruktor
-Version::Version( Schrift *s, MSKlient *msc, RessourceBild *rb, AdminAccount *acc, Bildschirm *b )
-    : Abschnitt( b )
+Version::Version(Schrift* s, MSKlient* msc, RessourceBild* rb, AdminAccount* acc, Bildschirm* b)
+	: Abschnitt(b)
 {
-    fenster = 0;
-    this->msc = msc;
-    account = acc;
-    schrift = s;
-    psc = 0;
+	fenster = 0;
+	this->msc = msc;
+	account = acc;
+	schrift = s;
+	psc = 0;
 
-    Array< ServerData * > list;
-    if( msc->getPatchServerListe( &list ) )
-    {
-        int anz = list.getEintragAnzahl();
-        for( int i = 0; i < anz; i++ )
-        {
-            ServerData *server = list.get( i );
-            if( !psc )
-            {
-                psc = new PSKlient( server->ip, server->adminPort );
-                if( !psc->verbinden() )
-                    psc = (PSKlient *)psc->release();
-            }
-            delete server;
-        }
-    }
-    if( !psc )
-        WMessageBox( 0, new Text( "Warnung" ), new Text( "Es wurde kein erreichbarer Patch Server gefunden. Es kann keine neue Version des Clients veröffentlicht werden." ), MB_ICONERROR );
-    else
-        psc->login( acc->zName()->getText(), acc->zPasswort()->getText() );
-    f = new Fenster();
-    f->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered );
-    f->setRFarbe( 0xFFFFFFFF );
-    f->setRBreite( 1 );
-    f->setTitel( "Version" );
-    f->setTSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    f->setTSFarbe( 0xFFFFFFFF );
-    f->setTSSize( 12 );
-    f->setTAfFarbe( 0x1000FF00 );
-    f->setTAfStrength( -15 );
-    f->setTRFarbe( 0xFFFFFFFF );
-    f->setTRBreite( 1 );
-    f->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
-    f->zTTextFeld()->setSize( 0, 20 );
-    f->setSize( 700, 700 );
+	Array< ServerData* > list;
+	if (msc->getPatchServerListe(&list))
+	{
+		int anz = list.getEintragAnzahl();
+		for (int i = 0; i < anz; i++)
+		{
+			ServerData* server = list.get(i);
+			if (!psc)
+			{
+				psc = new PSKlient(server->ip, server->adminPort);
+				if (!psc->verbinden())
+					psc = (PSKlient*)psc->release();
+			}
+			delete server;
+		}
+	}
+	if (!psc)
+		WMessageBox(0, new Text("Warnung"), new Text("Es wurde kein erreichbarer Patch Server gefunden. Es kann keine neue Version des Clients veröffentlicht werden."), MB_ICONERROR);
+	else
+		psc->login(acc->zName()->getText(), acc->zPasswort()->getText());
+	f = new Fenster();
+	f->setStyle(Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered);
+	f->setRFarbe(0xFFFFFFFF);
+	f->setRBreite(1);
+	f->setTitel("Version");
+	f->setTSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	f->setTSFarbe(0xFFFFFFFF);
+	f->setTSSize(12);
+	f->setTAfFarbe(0x1000FF00);
+	f->setTAfStrength(-15);
+	f->setTRFarbe(0xFFFFFFFF);
+	f->setTRBreite(1);
+	f->zTTextFeld()->addStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen);
+	f->zTTextFeld()->setSize(0, 20);
+	f->setSize(700, 700);
 
-    gruppeF = new Fenster();
-    gruppeF->setStyle( Fenster::Style::Sichtbar | Fenster::Style::Erlaubt );
-    gruppeF->setSize( 680, 640 );
-    gruppeF->setPosition( 10, 10 );
-    f->addMember( dynamic_cast<Zeichnung *>( gruppeF->getThis() ) );
+	gruppeF = new Fenster();
+	gruppeF->setStyle(Fenster::Style::Sichtbar | Fenster::Style::Erlaubt);
+	gruppeF->setSize(680, 640);
+	gruppeF->setPosition(10, 10);
+	f->addMember(dynamic_cast<Zeichnung*>(gruppeF->getThis()));
 
-    gruppeT = new ObjTabelle();
-    gruppeT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
-    gruppeT->setVertikalKlickScroll( 10 );
-    gruppeT->setMausEreignis( _ret1ME );
-    gruppeT->setRahmenFarbe( 0xFFFFFFFF );
-    gruppeT->setSize( 680, 600 );
-    gruppeT->addSpalte( "Name" );
-    gruppeT->addSpalte( "Pfad" );
-    gruppeT->addSpalte( "Version" );
-    gruppeT->addSpalte( "Auswahl" );
-    gruppeT->setSpaltenBreite( 0, 285 );
-    gruppeT->setSpaltenBreite( 1, 285 );
-    gruppeT->setSpaltenBreite( 2, 68 );
-    gruppeT->setSpaltenBreite( 3, 22 );
-    gruppeT->addZeile( "Titel" );
-    gruppeT->setZeilenHeight( 0, 20 );
-    TextFeld *gTN = new TextFeld();
-    gTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    gTN->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    gTN->setSchriftFarbe( 0xFFFFFFFF );
-    gTN->setSchriftSize( 12 );
-    gTN->setRahmenFarbe( 0xFFFFFFFF );
-    gTN->setText( "Name" );
-    gruppeT->setZeichnungZ( 0, 0, gTN );
-    TextFeld *gTP = new TextFeld();
-    gTP->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    gTP->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    gTP->setSchriftFarbe( 0xFFFFFFFF );
-    gTP->setSchriftSize( 12 );
-    gTP->setRahmenFarbe( 0xFFFFFFFF );
-    gTP->setText( "Pfad" );
-    gruppeT->setZeichnungZ( 1, 0, gTP );
-    TextFeld *gTV = new TextFeld();
-    gTV->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    gTV->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    gTV->setSchriftFarbe( 0xFFFFFFFF );
-    gTV->setSchriftSize( 12 );
-    gTV->setRahmenFarbe( 0xFFFFFFFF );
-    gTV->setText( "Version" );
-    gruppeT->setZeichnungZ( 2, 0, gTV );
-    gruppeT->setMausEreignis( _ret1ME );
-    gruppeT->setTastaturEreignis( _ret1TE );
-    gruppeF->addMember( dynamic_cast<Zeichnung *>( gruppeT->getThis() ) );
+	gruppeT = new ObjTabelle();
+	gruppeT->setStyle(ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll);
+	gruppeT->setVertikalKlickScroll(10);
+	gruppeT->setMausEreignis(_ret1ME);
+	gruppeT->setRahmenFarbe(0xFFFFFFFF);
+	gruppeT->setSize(680, 600);
+	gruppeT->addSpalte("Name");
+	gruppeT->addSpalte("Pfad");
+	gruppeT->addSpalte("Version");
+	gruppeT->addSpalte("Auswahl");
+	gruppeT->setSpaltenBreite(0, 285);
+	gruppeT->setSpaltenBreite(1, 285);
+	gruppeT->setSpaltenBreite(2, 68);
+	gruppeT->setSpaltenBreite(3, 22);
+	gruppeT->addZeile("Titel");
+	gruppeT->setZeilenHeight(0, 20);
+	TextFeld* gTN = new TextFeld();
+	gTN->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	gTN->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	gTN->setSchriftFarbe(0xFFFFFFFF);
+	gTN->setSchriftSize(12);
+	gTN->setRahmenFarbe(0xFFFFFFFF);
+	gTN->setText("Name");
+	gruppeT->setZeichnungZ(0, 0, gTN);
+	TextFeld* gTP = new TextFeld();
+	gTP->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	gTP->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	gTP->setSchriftFarbe(0xFFFFFFFF);
+	gTP->setSchriftSize(12);
+	gTP->setRahmenFarbe(0xFFFFFFFF);
+	gTP->setText("Pfad");
+	gruppeT->setZeichnungZ(1, 0, gTP);
+	TextFeld* gTV = new TextFeld();
+	gTV->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	gTV->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	gTV->setSchriftFarbe(0xFFFFFFFF);
+	gTV->setSchriftSize(12);
+	gTV->setRahmenFarbe(0xFFFFFFFF);
+	gTV->setText("Version");
+	gruppeT->setZeichnungZ(2, 0, gTV);
+	gruppeT->setMausEreignis(_ret1ME);
+	gruppeT->setTastaturEreignis(_ret1TE);
+	gruppeF->addMember(dynamic_cast<Zeichnung*>(gruppeT->getThis()));
 
-    neuGruppeName = new TextFeld();
-    neuGruppeName->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
-    neuGruppeName->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    neuGruppeName->setSchriftFarbe( 0xFFFFFFFF );
-    neuGruppeName->setSchriftSize( 12 );
-    neuGruppeName->setRahmenBreite( 1 );
-    neuGruppeName->setRahmenFarbe( 0xFFFFFFFF );
-    neuGruppeName->setAlphaFeldFarbe( 0x1000FF00 );
-    neuGruppeName->setAlphaFeldStrength( -5 );
-    neuGruppeName->setSize( 285, 20 );
-    neuGruppeName->setPosition( 40, 610 );
-    neuGruppeName->setMausEreignis( _ret1ME );
-    neuGruppeName->setTastaturEreignis( _ret1TE );
-    neuGruppeName->setText( "" );
-    gruppeF->addMember( dynamic_cast<Zeichnung *>( neuGruppeName->getThis() ) );
+	neuGruppeName = new TextFeld();
+	neuGruppeName->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter);
+	neuGruppeName->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	neuGruppeName->setSchriftFarbe(0xFFFFFFFF);
+	neuGruppeName->setSchriftSize(12);
+	neuGruppeName->setRahmenBreite(1);
+	neuGruppeName->setRahmenFarbe(0xFFFFFFFF);
+	neuGruppeName->setAlphaFeldFarbe(0x1000FF00);
+	neuGruppeName->setAlphaFeldStrength(-5);
+	neuGruppeName->setSize(285, 20);
+	neuGruppeName->setPosition(40, 610);
+	neuGruppeName->setMausEreignis(_ret1ME);
+	neuGruppeName->setTastaturEreignis(_ret1TE);
+	neuGruppeName->setText("");
+	gruppeF->addMember(dynamic_cast<Zeichnung*>(neuGruppeName->getThis()));
 
-    neuGruppePfad = new TextFeld();
-    neuGruppePfad->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
-    neuGruppePfad->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    neuGruppePfad->setSchriftFarbe( 0xFFFFFFFF );
-    neuGruppePfad->setSchriftSize( 12 );
-    neuGruppePfad->setRahmenBreite( 1 );
-    neuGruppePfad->setRahmenFarbe( 0xFFFFFFFF );
-    neuGruppePfad->setAlphaFeldFarbe( 0x1000FF00 );
-    neuGruppePfad->setAlphaFeldStrength( -5 );
-    neuGruppePfad->setSize( 285, 20 );
-    neuGruppePfad->setPosition( 330, 610 );
-    neuGruppePfad->setMausEreignis( _ret1ME );
-    neuGruppePfad->setTastaturEreignis( _ret1TE );
-    neuGruppePfad->setText( "" );
-    gruppeF->addMember( dynamic_cast<Zeichnung *>( neuGruppePfad->getThis() ) );
+	neuGruppePfad = new TextFeld();
+	neuGruppePfad->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter);
+	neuGruppePfad->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	neuGruppePfad->setSchriftFarbe(0xFFFFFFFF);
+	neuGruppePfad->setSchriftSize(12);
+	neuGruppePfad->setRahmenBreite(1);
+	neuGruppePfad->setRahmenFarbe(0xFFFFFFFF);
+	neuGruppePfad->setAlphaFeldFarbe(0x1000FF00);
+	neuGruppePfad->setAlphaFeldStrength(-5);
+	neuGruppePfad->setSize(285, 20);
+	neuGruppePfad->setPosition(330, 610);
+	neuGruppePfad->setMausEreignis(_ret1ME);
+	neuGruppePfad->setTastaturEreignis(_ret1TE);
+	neuGruppePfad->setText("");
+	gruppeF->addMember(dynamic_cast<Zeichnung*>(neuGruppePfad->getThis()));
 
-    neuGruppeK = new Knopf();
-    neuGruppeK->setText( "" );
-    neuGruppeK->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    neuGruppeK->setHintergrundBildZ( rb ? rb->get( "neu.png" ) : 0 );
-    neuGruppeK->setPosition( 625, 610 );
-    neuGruppeK->setSize( 20, 20 );
-    neuGruppeK->setMausEreignisParameter( this );
-    neuGruppeK->setMausEreignis( versionNeuGruppeKMausEreignis );
-    gruppeF->addMember( dynamic_cast<Zeichnung *>( neuGruppeK->getThis() ) );
+	neuGruppeK = new Knopf();
+	neuGruppeK->setText("");
+	neuGruppeK->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	neuGruppeK->setHintergrundBildZ(rb ? rb->get("neu.png") : 0);
+	neuGruppeK->setPosition(625, 610);
+	neuGruppeK->setSize(20, 20);
+	neuGruppeK->setMausEreignisParameter(this);
+	neuGruppeK->setMausEreignis(versionNeuGruppeKMausEreignis);
+	gruppeF->addMember(dynamic_cast<Zeichnung*>(neuGruppeK->getThis()));
 
-    systemF = new Fenster();
-    systemF->setStyle( Fenster::Style::Erlaubt );
-    systemF->setSize( 680, 640 );
-    systemF->setPosition( 10, 10 );
-    f->addMember( dynamic_cast<Zeichnung *>( systemF->getThis() ) );
+	systemF = new Fenster();
+	systemF->setStyle(Fenster::Style::Erlaubt);
+	systemF->setSize(680, 640);
+	systemF->setPosition(10, 10);
+	f->addMember(dynamic_cast<Zeichnung*>(systemF->getThis()));
 
-    systemInit = new InitDatei();
+	systemInit = new InitDatei();
 
-    systemT = new ObjTabelle();
-    systemT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
-    systemT->setVertikalKlickScroll( 10 );
-    systemT->setMausEreignis( _ret1ME );
-    systemT->setRahmenFarbe( 0xFFFFFFFF );
-    systemT->setSize( 680, 600 );
-    systemT->addSpalte( "Name" );
-    systemT->addSpalte( "Pfad" );
-    systemT->addSpalte( "Auswahl" );
-    systemT->setSpaltenBreite( 0, 150 );
-    systemT->setSpaltenBreite( 1, 490 );
-    systemT->setSpaltenBreite( 2, 22 );
-    systemT->addZeile( "Titel" );
-    systemT->setZeilenHeight( 0, 20 );
-    TextFeld *sTN = new TextFeld();
-    sTN->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    sTN->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    sTN->setSchriftFarbe( 0xFFFFFFFF );
-    sTN->setSchriftSize( 12 );
-    sTN->setRahmenFarbe( 0xFFFFFFFF );
-    sTN->setText( "Name" );
-    systemT->setZeichnungZ( 0, 0, sTN );
-    TextFeld *sTP = new TextFeld();
-    sTP->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    sTP->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    sTP->setSchriftFarbe( 0xFFFFFFFF );
-    sTP->setSchriftSize( 12 );
-    sTP->setRahmenFarbe( 0xFFFFFFFF );
-    sTP->setText( "Pfad" );
-    systemT->setZeichnungZ( 1, 0, sTP );
-    systemT->setMausEreignis( _ret1ME );
-    systemT->setTastaturEreignis( _ret1TE );
-    systemF->addMember( dynamic_cast<Zeichnung *>( systemT->getThis() ) );
+	systemT = new ObjTabelle();
+	systemT->setStyle(ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll);
+	systemT->setVertikalKlickScroll(10);
+	systemT->setMausEreignis(_ret1ME);
+	systemT->setRahmenFarbe(0xFFFFFFFF);
+	systemT->setSize(680, 600);
+	systemT->addSpalte("Name");
+	systemT->addSpalte("Pfad");
+	systemT->addSpalte("Auswahl");
+	systemT->setSpaltenBreite(0, 150);
+	systemT->setSpaltenBreite(1, 490);
+	systemT->setSpaltenBreite(2, 22);
+	systemT->addZeile("Titel");
+	systemT->setZeilenHeight(0, 20);
+	TextFeld* sTN = new TextFeld();
+	sTN->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	sTN->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	sTN->setSchriftFarbe(0xFFFFFFFF);
+	sTN->setSchriftSize(12);
+	sTN->setRahmenFarbe(0xFFFFFFFF);
+	sTN->setText("Name");
+	systemT->setZeichnungZ(0, 0, sTN);
+	TextFeld* sTP = new TextFeld();
+	sTP->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	sTP->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	sTP->setSchriftFarbe(0xFFFFFFFF);
+	sTP->setSchriftSize(12);
+	sTP->setRahmenFarbe(0xFFFFFFFF);
+	sTP->setText("Pfad");
+	systemT->setZeichnungZ(1, 0, sTP);
+	systemT->setMausEreignis(_ret1ME);
+	systemT->setTastaturEreignis(_ret1TE);
+	systemF->addMember(dynamic_cast<Zeichnung*>(systemT->getThis()));
 
-    neuSystemName = new TextFeld();
-    neuSystemName->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
-    neuSystemName->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    neuSystemName->setSchriftFarbe( 0xFFFFFFFF );
-    neuSystemName->setSchriftSize( 12 );
-    neuSystemName->setRahmenBreite( 1 );
-    neuSystemName->setRahmenFarbe( 0xFFFFFFFF );
-    neuSystemName->setAlphaFeldFarbe( 0x1000FF00 );
-    neuSystemName->setAlphaFeldStrength( -5 );
-    neuSystemName->setSize( 490, 20 );
-    neuSystemName->setPosition( 80, 610 );
-    neuSystemName->setMausEreignis( _ret1ME );
-    neuSystemName->setTastaturEreignis( _ret1TE );
-    neuSystemName->setText( "" );
-    systemF->addMember( dynamic_cast<Zeichnung *>( neuSystemName->getThis() ) );
+	neuSystemName = new TextFeld();
+	neuSystemName->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter);
+	neuSystemName->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	neuSystemName->setSchriftFarbe(0xFFFFFFFF);
+	neuSystemName->setSchriftSize(12);
+	neuSystemName->setRahmenBreite(1);
+	neuSystemName->setRahmenFarbe(0xFFFFFFFF);
+	neuSystemName->setAlphaFeldFarbe(0x1000FF00);
+	neuSystemName->setAlphaFeldStrength(-5);
+	neuSystemName->setSize(490, 20);
+	neuSystemName->setPosition(80, 610);
+	neuSystemName->setMausEreignis(_ret1ME);
+	neuSystemName->setTastaturEreignis(_ret1TE);
+	neuSystemName->setText("");
+	systemF->addMember(dynamic_cast<Zeichnung*>(neuSystemName->getThis()));
 
-    neuSystemK = new Knopf();
-    neuSystemK->setText( "" );
-    neuSystemK->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    neuSystemK->setHintergrundBildZ( rb ? rb->get( "neu.png" ) : 0 );
-    neuSystemK->setPosition( 580, 610 );
-    neuSystemK->setSize( 20, 20 );
-    neuSystemK->setMausEreignisParameter( this );
-    neuSystemK->setMausEreignis( versionNeuSystemKMausEreignis );
-    systemF->addMember( dynamic_cast<Zeichnung *>( neuSystemK->getThis() ) );
+	neuSystemK = new Knopf();
+	neuSystemK->setText("");
+	neuSystemK->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	neuSystemK->setHintergrundBildZ(rb ? rb->get("neu.png") : 0);
+	neuSystemK->setPosition(580, 610);
+	neuSystemK->setSize(20, 20);
+	neuSystemK->setMausEreignisParameter(this);
+	neuSystemK->setMausEreignis(versionNeuSystemKMausEreignis);
+	systemF->addMember(dynamic_cast<Zeichnung*>(neuSystemK->getThis()));
 
-    dateiF = new Fenster();
-    dateiF->setStyle( Fenster::Style::Erlaubt );
-    dateiF->setSize( 680, 640 );
-    dateiF->setPosition( 10, 10 );
-    f->addMember( dynamic_cast<Zeichnung *>( dateiF->getThis() ) );
+	dateiF = new Fenster();
+	dateiF->setStyle(Fenster::Style::Erlaubt);
+	dateiF->setSize(680, 640);
+	dateiF->setPosition(10, 10);
+	f->addMember(dynamic_cast<Zeichnung*>(dateiF->getThis()));
 
-    dateiT = new ObjTabelle();
-    dateiT->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll );
-    dateiT->setVertikalKlickScroll( 10 );
-    dateiT->setMausEreignis( _ret1ME );
-    dateiT->setRahmenFarbe( 0xFFFFFFFF );
-    dateiT->setSize( 680, 600 );
-    dateiT->addSpalte( "Pfad" );
-    dateiT->addSpalte( "Version" );
-    dateiT->addSpalte( "Status" );
-    dateiT->setSpaltenBreite( 0, 510 );
-    dateiT->setSpaltenBreite( 1, 50 );
-    dateiT->setSpaltenBreite( 2, 100 );
-    dateiT->addZeile( "Titel" );
-    dateiT->setZeilenHeight( 0, 20 );
-    TextFeld *dTP = new TextFeld();
-    dTP->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    dTP->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    dTP->setSchriftFarbe( 0xFFFFFFFF );
-    dTP->setSchriftSize( 12 );
-    dTP->setRahmenFarbe( 0xFFFFFFFF );
-    dTP->setText( "Pfad" );
-    dateiT->setZeichnungZ( 0, 0, dTP );
-    TextFeld *dTV = new TextFeld();
-    dTV->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    dTV->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    dTV->setSchriftFarbe( 0xFFFFFFFF );
-    dTV->setSchriftSize( 12 );
-    dTV->setRahmenFarbe( 0xFFFFFFFF );
-    dTV->setText( "Version" );
-    dateiT->setZeichnungZ( 1, 0, dTV );
-    TextFeld *dTS = new TextFeld();
-    dTS->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-    dTS->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    dTS->setSchriftFarbe( 0xFFFFFFFF );
-    dTS->setSchriftSize( 12 );
-    dTS->setRahmenFarbe( 0xFFFFFFFF );
-    dTS->setText( "Status" );
-    dateiT->setZeichnungZ( 2, 0, dTS );
-    dateiF->addMember( dynamic_cast<Zeichnung *>( dateiT->getThis() ) );
+	dateiT = new ObjTabelle();
+	dateiT->setStyle(ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen | ObjTabelle::Style::VScroll);
+	dateiT->setVertikalKlickScroll(10);
+	dateiT->setMausEreignis(_ret1ME);
+	dateiT->setRahmenFarbe(0xFFFFFFFF);
+	dateiT->setSize(680, 600);
+	dateiT->addSpalte("Pfad");
+	dateiT->addSpalte("Version");
+	dateiT->addSpalte("Status");
+	dateiT->setSpaltenBreite(0, 510);
+	dateiT->setSpaltenBreite(1, 50);
+	dateiT->setSpaltenBreite(2, 100);
+	dateiT->addZeile("Titel");
+	dateiT->setZeilenHeight(0, 20);
+	TextFeld* dTP = new TextFeld();
+	dTP->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	dTP->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	dTP->setSchriftFarbe(0xFFFFFFFF);
+	dTP->setSchriftSize(12);
+	dTP->setRahmenFarbe(0xFFFFFFFF);
+	dTP->setText("Pfad");
+	dateiT->setZeichnungZ(0, 0, dTP);
+	TextFeld* dTV = new TextFeld();
+	dTV->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	dTV->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	dTV->setSchriftFarbe(0xFFFFFFFF);
+	dTV->setSchriftSize(12);
+	dTV->setRahmenFarbe(0xFFFFFFFF);
+	dTV->setText("Version");
+	dateiT->setZeichnungZ(1, 0, dTV);
+	TextFeld* dTS = new TextFeld();
+	dTS->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+	dTS->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	dTS->setSchriftFarbe(0xFFFFFFFF);
+	dTS->setSchriftSize(12);
+	dTS->setRahmenFarbe(0xFFFFFFFF);
+	dTS->setText("Status");
+	dateiT->setZeichnungZ(2, 0, dTS);
+	dateiF->addMember(dynamic_cast<Zeichnung*>(dateiT->getThis()));
 
-    commit = new Knopf();
-    commit->setStyle( Knopf::Style::Normal );
-    commit->setText( "Veröffentlichen" );
-    commit->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    commit->setMausEreignisParameter( this );
-    commit->setMausEreignis( versionCommitMausEreignis );
-    commit->setSize( 100, 20 );
-    commit->setPosition( 290, 610 );
-    dateiF->addMember( dynamic_cast<Zeichnung *>( commit->getThis() ) );
+	commit = new Knopf();
+	commit->setStyle(Knopf::Style::Normal);
+	commit->setText("Veröffentlichen");
+	commit->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	commit->setMausEreignisParameter(this);
+	commit->setMausEreignis(versionCommitMausEreignis);
+	commit->setSize(100, 20);
+	commit->setPosition(290, 610);
+	dateiF->addMember(dynamic_cast<Zeichnung*>(commit->getThis()));
 
-    fehlerF = new Fenster();
-    fehlerF->setStyle( Fenster::Style::Erlaubt );
-    fehlerF->setSize( 680, 640 );
-    fehlerF->setPosition( 10, 10 );
-    f->addMember( dynamic_cast<Zeichnung *>( fehlerF->getThis() ) );
+	fehlerF = new Fenster();
+	fehlerF->setStyle(Fenster::Style::Erlaubt);
+	fehlerF->setSize(680, 640);
+	fehlerF->setPosition(10, 10);
+	f->addMember(dynamic_cast<Zeichnung*>(fehlerF->getThis()));
 
-    fehlerText = new TextFeld();
-    fehlerText->setStyle( TextFeld::Style::Text );
-    fehlerText->setSchriftZ( s ? dynamic_cast<Schrift *>( s->getThis() ) : 0 );
-    fehlerText->setSchriftFarbe( 0xFFFFFFFF );
-    fehlerText->setSchriftSize( 12 );
-    fehlerText->setText( "" );
-    fehlerText->setSize( 680, 650 );
-    fehlerF->addMember( dynamic_cast<Zeichnung *>( fehlerText->getThis() ) );
+	fehlerText = new TextFeld();
+	fehlerText->setStyle(TextFeld::Style::Text);
+	fehlerText->setSchriftZ(s ? dynamic_cast<Schrift*>(s->getThis()) : 0);
+	fehlerText->setSchriftFarbe(0xFFFFFFFF);
+	fehlerText->setSchriftSize(12);
+	fehlerText->setText("");
+	fehlerText->setSize(680, 650);
+	fehlerF->addMember(dynamic_cast<Zeichnung*>(fehlerText->getThis()));
 
-    zurück = new Knopf();
-    zurück->setText( "" );
-    zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    zurück->setHintergrundBildZ( rb ? rb->get( "zurück.png" ) : 0 );
-    zurück->setPosition( 295, 650 );
-    zurück->setSize( 20, 20 );
-    zurück->setMausEreignisParameter( this );
-    zurück->setMausEreignis( versionZurückMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( zurück->getThis() ) );
+	zurück = new Knopf();
+	zurück->setText("");
+	zurück->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	zurück->setHintergrundBildZ(rb ? rb->get("zurück.png") : 0);
+	zurück->setPosition(295, 650);
+	zurück->setSize(20, 20);
+	zurück->setMausEreignisParameter(this);
+	zurück->setMausEreignis(versionZurückMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(zurück->getThis()));
 
-    aktualisieren = new Knopf();
-    aktualisieren->setText( "" );
-    aktualisieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    aktualisieren->setHintergrundBildZ( rb ? rb->get( "neuladen.png" ) : 0 );
-    aktualisieren->setPosition( 325, 650 );
-    aktualisieren->setSize( 20, 20 );
-    aktualisieren->setMausEreignisParameter( this );
-    aktualisieren->setMausEreignis( versionAktualisierenMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( aktualisieren->getThis() ) );
+	aktualisieren = new Knopf();
+	aktualisieren->setText("");
+	aktualisieren->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	aktualisieren->setHintergrundBildZ(rb ? rb->get("neuladen.png") : 0);
+	aktualisieren->setPosition(325, 650);
+	aktualisieren->setSize(20, 20);
+	aktualisieren->setMausEreignisParameter(this);
+	aktualisieren->setMausEreignis(versionAktualisierenMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(aktualisieren->getThis()));
 
-    speichern = new Knopf();
-    speichern->setText( "" );
-    speichern->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    speichern->setHintergrundBildZ( rb ? rb->get( "speichern.png" ) : 0 );
-    speichern->setPosition( 355, 650 );
-    speichern->setSize( 20, 20 );
-    speichern->setMausEreignisParameter( this );
-    speichern->setMausEreignis( versionSpeichernMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( speichern->getThis() ) );
+	speichern = new Knopf();
+	speichern->setText("");
+	speichern->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	speichern->setHintergrundBildZ(rb ? rb->get("speichern.png") : 0);
+	speichern->setPosition(355, 650);
+	speichern->setSize(20, 20);
+	speichern->setMausEreignisParameter(this);
+	speichern->setMausEreignis(versionSpeichernMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(speichern->getThis()));
 
-    weiter = new Knopf();
-    weiter->setText( "" );
-    weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    weiter->setHintergrundBildZ( rb ? rb->get( "weiter.png" ) : 0 );
-    weiter->setPosition( 385, 650 );
-    weiter->setSize( 20, 20 );
-    weiter->setMausEreignisParameter( this );
-    weiter->setMausEreignis( versionWeiterMausEreignis );
-    f->addMember( dynamic_cast<Zeichnung *>( weiter->getThis() ) );
+	weiter = new Knopf();
+	weiter->setText("");
+	weiter->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer);
+	weiter->setHintergrundBildZ(rb ? rb->get("weiter.png") : 0);
+	weiter->setPosition(385, 650);
+	weiter->setSize(20, 20);
+	weiter->setMausEreignisParameter(this);
+	weiter->setMausEreignis(versionWeiterMausEreignis);
+	f->addMember(dynamic_cast<Zeichnung*>(weiter->getThis()));
 
-    sName = new Text( "" );
-    system = 0;
+	sName = new Text("");
+	system = 0;
 
-    if( rb )
-        rb->release();
+	if (rb)
+		rb->release();
 }
 
 // Destruktor
 Version::~Version()
 {
-    if( fenster )
-    {
-        fenster->removeMember( f );
-        fenster->release();
-    }
-    account->release();
-    msc->release();
-    if( psc )
-        psc->release();
-    f->release();
-    gruppeF->release();
-    gruppeT->release();
-    neuGruppeName->release();
-    neuGruppePfad->release();
-    neuGruppeK->release();
-    systemF->release();
-    systemInit->release();
-    systemT->release();
-    neuSystemName->release();
-    neuSystemK->release();
-    speichern->release();
-    weiter->release();
-    dateiF->release();
-    dateiT->release();
-    commit->release();
-    aktualisieren->release();
-    fehlerF->release();
-    fehlerText->release();
-    zurück->release();
-    if( schrift )
-        schrift->release();
-    sName->release();
+	if (fenster)
+	{
+		fenster->removeMember(f);
+		fenster->release();
+	}
+	account->release();
+	msc->release();
+	if (psc)
+		psc->release();
+	f->release();
+	gruppeF->release();
+	gruppeT->release();
+	neuGruppeName->release();
+	neuGruppePfad->release();
+	neuGruppeK->release();
+	systemF->release();
+	systemInit->release();
+	systemT->release();
+	neuSystemName->release();
+	neuSystemK->release();
+	speichern->release();
+	weiter->release();
+	dateiF->release();
+	dateiT->release();
+	commit->release();
+	aktualisieren->release();
+	fehlerF->release();
+	fehlerText->release();
+	zurück->release();
+	if (schrift)
+		schrift->release();
+	sName->release();
 }
 
 // privat
-void Version::sucheDateien( const char *pfad, Array< FileInfo > &list )
+void Version::sucheDateien(const char* pfad, Array< FileInfo >& list)
 {
-    Datei *d = new Datei();
-    d->setDatei( pfad );
-    if( d->istOrdner() )
-    {
-        RCArray< Text > *liste = d->getDateiListe();
-        int anzahl = d->getUnterdateiAnzahl();
-        for( int i = 0; i < anzahl; i++ )
-        {
-            Text *p = new Text( pfad );
-            p->append( "/" );
-            p->append( liste->z( i )->getText() );
-            sucheDateien( p->getText(), list );
-            p->release();
-        }
-        liste->release();
-    }
-    d->release();
-    Text *pf = new Text( pfad );
-    pf->remove( systemInit->zWert( sName->getText() )->getText() );
-    pf->remove( 0, 1 );
-    if( !pf->getLength() )
-    {
-        pf->release();
-        return;
-    }
-    bool gefunden = 0;
-    int anz = list.getEintragAnzahl();
-    for( int i = 0; i < anz; i++ )
-    {
-        if( pf->istGleich( list.get( i ).path ) )
-        {
-            gefunden = 1;
-            break;
-        }
-    }
-    if( !gefunden )
-    {
-        dateiT->addZeile( "0" );
-        TextFeld *pfad = new TextFeld();
-        pfad->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-        pfad->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-        pfad->setSchriftFarbe( 0xFFFFFFFF );
-        pfad->setSchriftSize( 12 );
-        pfad->setRahmenFarbe( 0xFFFFFFFF );
-        pfad->setText( pf->getText() );
-        dateiT->setZeichnungZ( 0, dateiT->getZeilenAnzahl() - 1, pfad );
-        TextFeld *version = new TextFeld();
-        version->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-        version->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-        version->setSchriftFarbe( 0xFFFFFFFF );
-        version->setSchriftSize( 12 );
-        version->setRahmenFarbe( 0xFFFFFFFF );
-        version->setText( "0" );
-        dateiT->setZeichnungZ( 1, dateiT->getZeilenAnzahl() - 1, version );
-        TextFeld *status = new TextFeld();
-        status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-        status->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-        status->setSchriftFarbe( 0xFFFFFFFF );
-        status->setSchriftSize( 12 );
-        status->setRahmenFarbe( 0xFFFFFFFF );
-        status->setText( "Neu" );
-        dateiT->setZeichnungZ( 2, dateiT->getZeilenAnzahl() - 1, status );
-    }
-    pf->release();
+	Datei* d = new Datei();
+	d->setDatei(pfad);
+	if (d->istOrdner())
+	{
+		RCArray< Text >* liste = d->getDateiListe();
+		int anzahl = d->getUnterdateiAnzahl();
+		for (int i = 0; i < anzahl; i++)
+		{
+			Text* p = new Text(pfad);
+			p->append("/");
+			p->append(liste->z(i)->getText());
+			sucheDateien(p->getText(), list);
+			p->release();
+		}
+		liste->release();
+	}
+	d->release();
+	Text* pf = new Text(pfad);
+	pf->remove(systemInit->zWert(sName->getText())->getText());
+	pf->remove(0, 1);
+	if (!pf->getLength())
+	{
+		pf->release();
+		return;
+	}
+	bool gefunden = 0;
+	int anz = list.getEintragAnzahl();
+	for (int i = 0; i < anz; i++)
+	{
+		if (pf->istGleich(list.get(i).path))
+		{
+			gefunden = 1;
+			break;
+		}
+	}
+	if (!gefunden)
+	{
+		dateiT->addZeile("0");
+		TextFeld* pfad = new TextFeld();
+		pfad->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+		pfad->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+		pfad->setSchriftFarbe(0xFFFFFFFF);
+		pfad->setSchriftSize(12);
+		pfad->setRahmenFarbe(0xFFFFFFFF);
+		pfad->setText(pf->getText());
+		dateiT->setZeichnungZ(0, dateiT->getZeilenAnzahl() - 1, pfad);
+		TextFeld* version = new TextFeld();
+		version->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+		version->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+		version->setSchriftFarbe(0xFFFFFFFF);
+		version->setSchriftSize(12);
+		version->setRahmenFarbe(0xFFFFFFFF);
+		version->setText("0");
+		dateiT->setZeichnungZ(1, dateiT->getZeilenAnzahl() - 1, version);
+		TextFeld* status = new TextFeld();
+		status->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+		status->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+		status->setSchriftFarbe(0xFFFFFFFF);
+		status->setSchriftSize(12);
+		status->setRahmenFarbe(0xFFFFFFFF);
+		status->setText("Neu");
+		dateiT->setZeichnungZ(2, dateiT->getZeilenAnzahl() - 1, status);
+	}
+	pf->release();
 }
 
 // nicht constant
-void Version::setFenster( Fenster *f )
+void Version::setFenster(Fenster* f)
 {
-    if( fenster )
-        fenster->release();
-    this->f->setPosition( f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2 );
-    fenster = f;
+	if (fenster)
+		fenster->release();
+	this->f->setPosition(f->getBreite() / 2 - this->f->getBreite() / 2, f->getHeight() / 2 - this->f->getHeight() / 2);
+	fenster = f;
 }
 
-void Version::setSichtbar( bool s )
+void Version::setSichtbar(bool s)
 {
-    sichtbar = s;
-    if( s )
-        fenster->addMember( dynamic_cast<Zeichnung *>( f->getThis() ) );
-    else
-        fenster->removeMember( f );
+	sichtbar = s;
+	if (s)
+		fenster->addMember(dynamic_cast<Zeichnung*>(f->getThis()));
+	else
+		fenster->removeMember(f);
 }
 
-bool Version::neuGruppeKMausEreignis( void *o, MausEreignis me )
+bool Version::neuGruppeKMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( neuGruppeName->zText()->getLength() )
-        {
-            /*if( !pgDb->neueDateiGruppeErstellen( neuGruppeName->zText()->getText(), neuGruppePfad->zText()->getText() ) )
-            {
-                fehlerText->setText( "Es ist ein Fehler aufgetreten. Siehe in den Logdateien nach für nähere\nInformationen." );
-                gruppeF->removeStyle( Fenster::Style::Sichtbar );
-                weiter->removeStyle( Knopf::Style::Erlaubt );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                speichern->removeStyle( Knopf::Style::Erlaubt );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-            }
-            else
-            {
-                neuGruppeName->setText( "" );
-                neuGruppeName->setAuswahl( 0, 0 );
-                neuGruppePfad->setText( "" );
-                neuGruppePfad->setAuswahl( 0, 0 );
-                aktualisierenMausEreignis( 0, me );
-            }*/
-            WMessageBox( 0, new Text( "Warnung" ), new Text( "Diese Funktion ist momentan nicht implementiert. Nehmen sie die Änderungen manuell in der Datenbank vor." ), MB_ICONERROR );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (neuGruppeName->zText()->getLength())
+		{
+			/*if( !pgDb->neueDateiGruppeErstellen( neuGruppeName->zText()->getText(), neuGruppePfad->zText()->getText() ) )
+			{
+				fehlerText->setText( "Es ist ein Fehler aufgetreten. Siehe in den Logdateien nach für nähere\nInformationen." );
+				gruppeF->removeStyle( Fenster::Style::Sichtbar );
+				weiter->removeStyle( Knopf::Style::Erlaubt );
+				zurück->addStyle( Knopf::Style::Erlaubt );
+				aktualisieren->removeStyle( Knopf::Style::Erlaubt );
+				speichern->removeStyle( Knopf::Style::Erlaubt );
+				fehlerF->addStyle( Fenster::Style::Sichtbar );
+			}
+			else
+			{
+				neuGruppeName->setText( "" );
+				neuGruppeName->setAuswahl( 0, 0 );
+				neuGruppePfad->setText( "" );
+				neuGruppePfad->setAuswahl( 0, 0 );
+				aktualisierenMausEreignis( 0, me );
+			}*/
+			WMessageBox(0, new Text("Warnung"), new Text("Diese Funktion ist momentan nicht implementiert. Nehmen sie die Änderungen manuell in der Datenbank vor."), MB_ICONERROR);
+		}
+	}
+	return 1;
 }
 
-bool Version::auswahlKnopfMausEreignis( void *o, MausEreignis me )
+bool Version::auswahlKnopfMausEreignis(void* o, MausEreignis me)
 {
-    if( !o )
-        return 0;
-    if( me.id == ME_RLinks )
-    {
-        if( gruppeF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int i = 1; i < gruppeT->getZeilenAnzahl(); i++ )
-                ( (KontrollKnopf *)gruppeT->zZeichnung( 3, i ) )->removeStyle( KontrollKnopf::Style::Selected );
-            weiter->addStyle( Knopf::Style::Erlaubt );
-        }
-        else if( systemF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int i = 1; i < systemT->getZeilenAnzahl(); i++ )
-                ( (KontrollKnopf *)systemT->zZeichnung( 2, i ) )->removeStyle( KontrollKnopf::Style::Selected );
-            weiter->addStyle( Knopf::Style::Erlaubt );
-        }
-    }
-    return 1;
+	if (!o)
+		return 0;
+	if (me.id == ME_RLinks)
+	{
+		if (gruppeF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int i = 1; i < gruppeT->getZeilenAnzahl(); i++)
+				((KontrollKnopf*)gruppeT->zZeichnung(3, i))->removeStyle(KontrollKnopf::Style::Selected);
+			weiter->addStyle(Knopf::Style::Erlaubt);
+		}
+		else if (systemF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int i = 1; i < systemT->getZeilenAnzahl(); i++)
+				((KontrollKnopf*)systemT->zZeichnung(2, i))->removeStyle(KontrollKnopf::Style::Selected);
+			weiter->addStyle(Knopf::Style::Erlaubt);
+		}
+	}
+	return 1;
 }
 
-bool Version::neuSystemKMausEreignis( void *o, MausEreignis me )
+bool Version::neuSystemKMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( neuSystemName->zText()->getLength() )
-        {
-            /*if( !pgDb->neuesSystemErstellen( neuSystemName->zText()->getText() ) )
-            {
-                fehlerText->setText( "Es ist ein Fehler aufgetreten. Siehe in den Logdateien nach für nähere\nInformationen." );
-                systemF->removeStyle( Fenster::Style::Sichtbar );
-                weiter->removeStyle( Knopf::Style::Erlaubt );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                speichern->removeStyle( Knopf::Style::Erlaubt );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-            }
-            else
-            {
-                neuSystemName->setText( "" );
-                neuSystemName->setAuswahl( 0, 0 );
-                aktualisierenMausEreignis( 0, me );
-            }*/
-            WMessageBox( 0, new Text( "Warnung" ), new Text( "Diese Funktion ist momentan nicht implementiert. Nehmen sie die Änderungen manuell in der Datenbank vor." ), MB_ICONERROR );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (neuSystemName->zText()->getLength())
+		{
+			/*if( !pgDb->neuesSystemErstellen( neuSystemName->zText()->getText() ) )
+			{
+				fehlerText->setText( "Es ist ein Fehler aufgetreten. Siehe in den Logdateien nach für nähere\nInformationen." );
+				systemF->removeStyle( Fenster::Style::Sichtbar );
+				weiter->removeStyle( Knopf::Style::Erlaubt );
+				zurück->addStyle( Knopf::Style::Erlaubt );
+				aktualisieren->removeStyle( Knopf::Style::Erlaubt );
+				speichern->removeStyle( Knopf::Style::Erlaubt );
+				fehlerF->addStyle( Fenster::Style::Sichtbar );
+			}
+			else
+			{
+				neuSystemName->setText( "" );
+				neuSystemName->setAuswahl( 0, 0 );
+				aktualisierenMausEreignis( 0, me );
+			}*/
+			WMessageBox(0, new Text("Warnung"), new Text("Diese Funktion ist momentan nicht implementiert. Nehmen sie die Änderungen manuell in der Datenbank vor."), MB_ICONERROR);
+		}
+	}
+	return 1;
 }
 
-bool Version::speichernMausEreignis( void *o, MausEreignis me )
+bool Version::speichernMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        systemInit->removeAlle();
-        for( int i = 1; i < systemT->getZeilenAnzahl(); i++ )
-        {
-            systemInit->addWert( ( (TextFeld *)systemT->zZeichnung( 0, i ) )->zText()->getText(),
-                                 ( (TextFeld *)systemT->zZeichnung( 1, i ) )->zText()->getText() );
-            systemInit->speichern();
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		systemInit->removeAlle();
+		for (int i = 1; i < systemT->getZeilenAnzahl(); i++)
+		{
+			systemInit->addWert(((TextFeld*)systemT->zZeichnung(0, i))->zText()->getText(),
+				((TextFeld*)systemT->zZeichnung(1, i))->zText()->getText());
+			systemInit->speichern();
+		}
+	}
+	return 1;
 }
 
-bool Version::weiterMausEreignis( void *o, MausEreignis me )
+bool Version::weiterMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( gruppeF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int i = 1; i < gruppeT->getZeilenAnzahl(); i++ )
-            {
-                if( ( (KontrollKnopf *)gruppeT->zZeichnung( 3, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-                {
-                    gruppe = TextZuInt( gruppeT->zZeilenName( i )->getText(), 10 );
-                    Text *pfad = new Text( "data/" );
-                    pfad->append( ( (TextFeld *)gruppeT->zZeichnung( 0, i ) )->getText() );
-                    pfad->append( ".ini" );
-                    systemInit->setPfad( pfad );
-                    systemInit->removeAlle();
-                    systemInit->laden();
-                    gruppeF->removeStyle( Fenster::Style::Sichtbar );
-                    systemF->addStyle( Fenster::Style::Sichtbar );
-                    speichern->addStyle( Knopf::Style::Erlaubt );
-                    aktualisieren->addStyle( Knopf::Style::Erlaubt );
-                    weiter->removeStyle( Knopf::Style::Erlaubt );
-                    zurück->addStyle( Knopf::Style::Erlaubt );
-                    aktualisierenMausEreignis( 0, me );
-                    return 1;
-                }
-            }
-        }
-        else if( systemF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            for( int i = 1; i < systemT->getZeilenAnzahl(); i++ )
-            {
-                if( ( (KontrollKnopf *)systemT->zZeichnung( 2, i ) )->hatStyle( KontrollKnopf::Style::Selected ) )
-                {
-                    sName->setText( ( (TextFeld *)systemT->zZeichnung( 0, i ) )->zText()->getText() );
-                    system = TextZuInt( systemT->zZeilenName( i )->getText(), 10 );
-                    systemF->removeStyle( Fenster::Style::Sichtbar );
-                    speichern->removeStyle( Knopf::Style::Erlaubt );
-                    aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                    weiter->removeStyle( Knopf::Style::Erlaubt );
-                    zurück->addStyle( Knopf::Style::Erlaubt );
-                    if( !systemInit->wertExistiert( sName->getText() ) )
-                    {
-                        fehlerText->setText( "Der Pfad wurde für dieses System noch nicht gesetzt." );
-                        fehlerF->addStyle( Fenster::Style::Sichtbar );
-                        return 1;
-                    }
-                    if( !DateiExistiert( systemInit->getWert( sName->getText() ) ) || !DateiIstVerzeichnis( systemInit->getWert( sName->getText() ) ) )
-                    {
-                        fehlerText->setText( "Unter dem angegebenem Pfad wurde keine Datei gefunden." );
-                        fehlerF->addStyle( Fenster::Style::Sichtbar );
-                        return 1;
-                    }
-                    aktualisieren->addStyle( Knopf::Style::Erlaubt );
-                    dateiF->addStyle( Fenster::Style::Sichtbar );
-                    aktualisierenMausEreignis( 0, me );
-                    return 1;
-                }
-            }
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (gruppeF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int i = 1; i < gruppeT->getZeilenAnzahl(); i++)
+			{
+				if (((KontrollKnopf*)gruppeT->zZeichnung(3, i))->hatStyle(KontrollKnopf::Style::Selected))
+				{
+					gruppe = TextZuInt(gruppeT->zZeilenName(i)->getText(), 10);
+					Text* pfad = new Text("data/");
+					pfad->append(((TextFeld*)gruppeT->zZeichnung(0, i))->getText());
+					pfad->append(".ini");
+					systemInit->setPfad(pfad);
+					systemInit->removeAlle();
+					systemInit->laden();
+					gruppeF->removeStyle(Fenster::Style::Sichtbar);
+					systemF->addStyle(Fenster::Style::Sichtbar);
+					speichern->addStyle(Knopf::Style::Erlaubt);
+					aktualisieren->addStyle(Knopf::Style::Erlaubt);
+					weiter->removeStyle(Knopf::Style::Erlaubt);
+					zurück->addStyle(Knopf::Style::Erlaubt);
+					aktualisierenMausEreignis(0, me);
+					return 1;
+				}
+			}
+		}
+		else if (systemF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			for (int i = 1; i < systemT->getZeilenAnzahl(); i++)
+			{
+				if (((KontrollKnopf*)systemT->zZeichnung(2, i))->hatStyle(KontrollKnopf::Style::Selected))
+				{
+					sName->setText(((TextFeld*)systemT->zZeichnung(0, i))->zText()->getText());
+					system = TextZuInt(systemT->zZeilenName(i)->getText(), 10);
+					systemF->removeStyle(Fenster::Style::Sichtbar);
+					speichern->removeStyle(Knopf::Style::Erlaubt);
+					aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+					weiter->removeStyle(Knopf::Style::Erlaubt);
+					zurück->addStyle(Knopf::Style::Erlaubt);
+					if (!systemInit->wertExistiert(sName->getText()))
+					{
+						fehlerText->setText("Der Pfad wurde für dieses System noch nicht gesetzt.");
+						fehlerF->addStyle(Fenster::Style::Sichtbar);
+						return 1;
+					}
+					if (!DateiExistiert(systemInit->getWert(sName->getText())) || !DateiIstVerzeichnis(systemInit->getWert(sName->getText())))
+					{
+						fehlerText->setText("Unter dem angegebenem Pfad wurde keine Datei gefunden.");
+						fehlerF->addStyle(Fenster::Style::Sichtbar);
+						return 1;
+					}
+					aktualisieren->addStyle(Knopf::Style::Erlaubt);
+					dateiF->addStyle(Fenster::Style::Sichtbar);
+					aktualisierenMausEreignis(0, me);
+					return 1;
+				}
+			}
+		}
+	}
+	return 1;
 }
 
-bool Version::commitMausEreignis( void *o, MausEreignis me )
+bool Version::commitMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        /*if( !pgDb->adminHatRecht( account->getId(), Admin_Recht::LTCUpdate ) )
-        {
-            dateiF->removeStyle( Fenster::Style::Sichtbar );
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            fehlerText->setText( "Du hast keine Berechtigung für diesen Vorgang." );
-            fehlerF->addStyle( Fenster::Style::Sichtbar );
-            zurück->addStyle( Knopf::Style::Erlaubt );
-            return 1;
-        }
-        if( pgDb->sindPatchServerOnline() )
-        {
-            dateiF->removeStyle( Fenster::Style::Sichtbar );
-            aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-            fehlerText->setText( "Es müssen zunächst alle Patchserver herunterfahren." );
-            fehlerF->addStyle( Fenster::Style::Sichtbar );
-            zurück->addStyle( Knopf::Style::Erlaubt );
-            return 1;
-        }*/
-        aktualisierenMausEreignis( 0, me );
-        bool gU = 0;
-        for( int i = 1; i < dateiT->getZeilenAnzahl(); i++ )
-        {
-            if( ( (TextFeld *)dateiT->zZeichnung( 2, i ) )->zText()->istGleich( "Veraltet" ) )
-            { // datei ist Veraltet
-                Text *pfad = new Text( systemInit->zWert( sName->getText() )->getText() );
-                pfad->append( "/" );
-                pfad->append( ( (TextFeld *)dateiT->zZeichnung( 0, i ) )->zText()->getText() );
-                Datei *d = new Datei();
-                d->setDatei( pfad );
-                Zeit *zeit = d->getLastChange();
-                if( !psc || !psc->updateFile( ( (TextFeld *)dateiT->zZeichnung( 0, i ) )->zText()->getText(), 1, zeit, system, gruppe ) )
-                {
-                    dateiF->removeStyle( Fenster::Style::Sichtbar );
-                    aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                    if( !psc )
-                        fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                    else
-                        fehlerText->setText( psc->getLetzterFehler() );
-                    fehlerF->addStyle( Fenster::Style::Sichtbar );
-                    zurück->addStyle( Knopf::Style::Erlaubt );
-                    if( zeit )
-                        zeit->release();
-                    d->release();
-                    return 1;
-                }
-                if( zeit )
-                    zeit->release();
-                d->release();
-                gU = 1;
-            }
-            else if( ( (TextFeld *)dateiT->zZeichnung( 2, i ) )->zText()->istGleich( "Gelöscht" ) )
-            { // datei ist Gelöscht
-                if( !psc || !psc->updateFile( ( (TextFeld *)dateiT->zZeichnung( 0, i ) )->zText()->getText(), 0, 0, system, gruppe ) )
-                {
-                    dateiF->removeStyle( Fenster::Style::Sichtbar );
-                    aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                    if( !psc )
-                        fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                    else
-                        fehlerText->setText( psc->getLetzterFehler() );
-                    fehlerF->addStyle( Fenster::Style::Sichtbar );
-                    zurück->addStyle( Knopf::Style::Erlaubt );
-                    return 1;
-                }
-                gU = 1;
-            }
-            else if( ( (TextFeld *)dateiT->zZeichnung( 2, i ) )->zText()->istGleich( "Neu" ) )
-            { // datei ist Neu
-                Text *pfad = new Text( systemInit->zWert( sName->getText() )->getText() );
-                pfad->append( "/" );
-                pfad->append( ( (TextFeld *)dateiT->zZeichnung( 0, i ) )->zText()->getText() );
-                Datei *d = new Datei();
-                d->setDatei( pfad );
-                Zeit *zeit = d->getLastChange();
-                if( !psc || !psc->updateFile( ( (TextFeld *)dateiT->zZeichnung( 0, i ) )->zText()->getText(), 2, zeit, system, gruppe ) )
-                {
-                    dateiF->removeStyle( Fenster::Style::Sichtbar );
-                    aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                    if( !psc )
-                        fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                    else
-                        fehlerText->setText( psc->getLetzterFehler() );
-                    fehlerF->addStyle( Fenster::Style::Sichtbar );
-                    zurück->addStyle( Knopf::Style::Erlaubt );
-                    if( zeit )
-                        zeit->release();
-                    d->release();
-                    return 1;
-                }
-                if( zeit )
-                    zeit->release();
-                d->release();
-                gU = 1;
-            }
-        }
-        if( gU )
-        {
-            if( !psc || !psc->dateiGruppeUpdate( gruppe ) )
-            {
-                dateiF->removeStyle( Fenster::Style::Sichtbar );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                if( !psc )
-                    fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                else
-                    fehlerText->setText( psc->getLetzterFehler() );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                return 1;
-            }
-        }
-        aktualisierenMausEreignis( 0, me );
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		/*if( !pgDb->adminHatRecht( account->getId(), Admin_Recht::LTCUpdate ) )
+		{
+			dateiF->removeStyle( Fenster::Style::Sichtbar );
+			aktualisieren->removeStyle( Knopf::Style::Erlaubt );
+			fehlerText->setText( "Du hast keine Berechtigung für diesen Vorgang." );
+			fehlerF->addStyle( Fenster::Style::Sichtbar );
+			zurück->addStyle( Knopf::Style::Erlaubt );
+			return 1;
+		}
+		if( pgDb->sindPatchServerOnline() )
+		{
+			dateiF->removeStyle( Fenster::Style::Sichtbar );
+			aktualisieren->removeStyle( Knopf::Style::Erlaubt );
+			fehlerText->setText( "Es müssen zunächst alle Patchserver herunterfahren." );
+			fehlerF->addStyle( Fenster::Style::Sichtbar );
+			zurück->addStyle( Knopf::Style::Erlaubt );
+			return 1;
+		}*/
+		aktualisierenMausEreignis(0, me);
+		bool gU = 0;
+		for (int i = 1; i < dateiT->getZeilenAnzahl(); i++)
+		{
+			if (((TextFeld*)dateiT->zZeichnung(2, i))->zText()->istGleich("Veraltet"))
+			{ // datei ist Veraltet
+				Text* pfad = new Text(systemInit->zWert(sName->getText())->getText());
+				pfad->append("/");
+				pfad->append(((TextFeld*)dateiT->zZeichnung(0, i))->zText()->getText());
+				Datei* d = new Datei();
+				d->setDatei(pfad);
+				Zeit* zeit = d->getLastChange();
+				if (!psc || !psc->updateFile(((TextFeld*)dateiT->zZeichnung(0, i))->zText()->getText(), 1, zeit, system, gruppe))
+				{
+					dateiF->removeStyle(Fenster::Style::Sichtbar);
+					aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+					if (!psc)
+						fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+					else
+						fehlerText->setText(psc->getLetzterFehler());
+					fehlerF->addStyle(Fenster::Style::Sichtbar);
+					zurück->addStyle(Knopf::Style::Erlaubt);
+					if (zeit)
+						zeit->release();
+					d->release();
+					return 1;
+				}
+				if (zeit)
+					zeit->release();
+				d->release();
+				gU = 1;
+			}
+			else if (((TextFeld*)dateiT->zZeichnung(2, i))->zText()->istGleich("Gelöscht"))
+			{ // datei ist Gelöscht
+				if (!psc || !psc->updateFile(((TextFeld*)dateiT->zZeichnung(0, i))->zText()->getText(), 0, 0, system, gruppe))
+				{
+					dateiF->removeStyle(Fenster::Style::Sichtbar);
+					aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+					if (!psc)
+						fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+					else
+						fehlerText->setText(psc->getLetzterFehler());
+					fehlerF->addStyle(Fenster::Style::Sichtbar);
+					zurück->addStyle(Knopf::Style::Erlaubt);
+					return 1;
+				}
+				gU = 1;
+			}
+			else if (((TextFeld*)dateiT->zZeichnung(2, i))->zText()->istGleich("Neu"))
+			{ // datei ist Neu
+				Text* pfad = new Text(systemInit->zWert(sName->getText())->getText());
+				pfad->append("/");
+				pfad->append(((TextFeld*)dateiT->zZeichnung(0, i))->zText()->getText());
+				Datei* d = new Datei();
+				d->setDatei(pfad);
+				Zeit* zeit = d->getLastChange();
+				if (!psc || !psc->updateFile(((TextFeld*)dateiT->zZeichnung(0, i))->zText()->getText(), 2, zeit, system, gruppe))
+				{
+					dateiF->removeStyle(Fenster::Style::Sichtbar);
+					aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+					if (!psc)
+						fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+					else
+						fehlerText->setText(psc->getLetzterFehler());
+					fehlerF->addStyle(Fenster::Style::Sichtbar);
+					zurück->addStyle(Knopf::Style::Erlaubt);
+					if (zeit)
+						zeit->release();
+					d->release();
+					return 1;
+				}
+				if (zeit)
+					zeit->release();
+				d->release();
+				gU = 1;
+			}
+		}
+		if (gU)
+		{
+			if (!psc || !psc->dateiGruppeUpdate(gruppe))
+			{
+				dateiF->removeStyle(Fenster::Style::Sichtbar);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				if (!psc)
+					fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+				else
+					fehlerText->setText(psc->getLetzterFehler());
+				fehlerF->addStyle(Fenster::Style::Sichtbar);
+				zurück->addStyle(Knopf::Style::Erlaubt);
+				return 1;
+			}
+		}
+		aktualisierenMausEreignis(0, me);
+	}
+	return 1;
 }
 
-bool Version::aktualisierenMausEreignis( void *o, MausEreignis me )
+bool Version::aktualisierenMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( gruppeF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            if( !psc )
-            {
-                gruppeF->removeStyle( Fenster::Style::Sichtbar );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                return 1;
-            }
-            for( int i = 1; i < gruppeT->getZeilenAnzahl(); )
-                gruppeT->removeZeile( i );
-            Array< FileGroupInfo * > list;
-            psc->getFileGroupInfoList( &list );
-            int anz = list.getEintragAnzahl();
-            for( int i = 0; i < anz; i++ )
-            {
-                FileGroupInfo *fileGroup = list.get( i );
-                Text *zeile = new Text( "" );
-                zeile->append( fileGroup->id );
-                gruppeT->addZeile( i + 1, zeile );
-                TextFeld *name = new TextFeld();
-                name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                name->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                name->setSchriftFarbe( 0xFFFFFFFF );
-                name->setSchriftSize( 12 );
-                name->setRahmenFarbe( 0xFFFFFFFF );
-                name->setText( fileGroup->name );
-                gruppeT->setZeichnungZ( 0, i + 1, name );
-                TextFeld *pfad = new TextFeld();
-                pfad->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                pfad->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                pfad->setSchriftFarbe( 0xFFFFFFFF );
-                pfad->setSchriftSize( 12 );
-                pfad->setRahmenFarbe( 0xFFFFFFFF );
-                pfad->setText( fileGroup->path );
-                gruppeT->setZeichnungZ( 1, i + 1, pfad );
-                TextFeld *version = new TextFeld();
-                version->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                version->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                version->setSchriftFarbe( 0xFFFFFFFF );
-                version->setSchriftSize( 12 );
-                version->setRahmenFarbe( 0xFFFFFFFF );
-                version->setText( Text( fileGroup->version ) );
-                gruppeT->setZeichnungZ( 2, i + 1, version );
-                KontrollKnopf *auswahl = new KontrollKnopf();
-                auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
-                auswahl->loadData( "data/bilder/icons.ltdb" );
-                auswahl->setMausEreignisParameter( this );
-                auswahl->setMausEreignis( versionAuswahlKnopfMausEreignis );
-                auswahl->setRahmenFarbe( 0xFFFFFFFF );
-                gruppeT->setZeichnungZ( 3, i + 1, auswahl );
-                delete fileGroup;
-            }
-        }
-        else if( systemF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            if( !psc )
-            {
-                gruppeF->removeStyle( Fenster::Style::Sichtbar );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                return 1;
-            }
-            for( int i = 1; i < systemT->getZeilenAnzahl(); )
-                systemT->removeZeile( i );
-            Array< SystemInfo > list;
-            psc->getSystemInfoList( &list );
-            int anz = list.getEintragAnzahl();
-            for( int i = 0; i < anz; i++ )
-            {
-                SystemInfo system = list.get( i );
-                Text *zeile = new Text( "" );
-                zeile->append( system.id );
-                systemT->addZeile( i + 1, zeile );
-                TextFeld *name = new TextFeld();
-                name->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                name->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                name->setSchriftFarbe( 0xFFFFFFFF );
-                name->setSchriftSize( 12 );
-                name->setRahmenFarbe( 0xFFFFFFFF );
-                name->setText( system.name );
-                systemT->setZeichnungZ( 0, i + 1, name );
-                TextFeld *pfad = new TextFeld();
-                pfad->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                pfad->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                pfad->setText( "" );
-                if( systemInit->wertExistiert( system.name ) )
-                    pfad->setText( systemInit->zWert( (char *)system.name )->getText() );
-                pfad->setSchriftFarbe( 0xFFFFFFFF );
-                pfad->setSchriftSize( 12 );
-                pfad->setRahmenFarbe( 0xFFFFFFFF );
-                systemT->setZeichnungZ( 1, i + 1, pfad );
-                KontrollKnopf *auswahl = new KontrollKnopf();
-                auswahl->setStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen );
-                auswahl->loadData( "data/bilder/icons.ltdb" );
-                auswahl->setMausEreignisParameter( this );
-                auswahl->setMausEreignis( versionAuswahlKnopfMausEreignis );
-                auswahl->setRahmenFarbe( 0xFFFFFFFF );
-                systemT->setZeichnungZ( 2, i + 1, auswahl );
-            }
-        }
-        else if( dateiF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            if( !psc )
-            {
-                gruppeF->removeStyle( Fenster::Style::Sichtbar );
-                aktualisieren->removeStyle( Knopf::Style::Erlaubt );
-                fehlerText->setText( "Es wurde kein erreichbarer Patch Server gefunden." );
-                fehlerF->addStyle( Fenster::Style::Sichtbar );
-                zurück->addStyle( Knopf::Style::Erlaubt );
-                return 1;
-            }
-            for( int i = 1; i < dateiT->getZeilenAnzahl(); )
-                dateiT->removeZeile( i );
-            Array< FileInfo > list;
-            psc->getFileInfoList( system, gruppe, &list );
-            int anz = list.getEintragAnzahl();
-            for( int i = 0; i < anz; i++ )
-            {
-                FileInfo info = list.get( i );
-                Text *zeile = new Text( "" );
-                zeile->append( info.id );
-                dateiT->addZeile( i + 1, zeile );
-                TextFeld *pfad = new TextFeld();
-                pfad->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter );
-                pfad->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                pfad->setSchriftFarbe( 0xFFFFFFFF );
-                pfad->setSchriftSize( 12 );
-                pfad->setRahmenFarbe( 0xFFFFFFFF );
-                pfad->setText( info.path );
-                dateiT->setZeichnungZ( 0, i + 1, pfad );
-                TextFeld *version = new TextFeld();
-                version->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-                version->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                version->setSchriftFarbe( 0xFFFFFFFF );
-                version->setSchriftSize( 12 );
-                version->setRahmenFarbe( 0xFFFFFFFF );
-                version->setText( Text( info.version ) );
-                dateiT->setZeichnungZ( 1, i + 1, version );
-                TextFeld *status = new TextFeld();
-                status->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center );
-                status->setSchriftZ( schrift ? dynamic_cast<Schrift *>( schrift->getThis() ) : 0 );
-                status->setSchriftSize( 12 );
-                status->setRahmenFarbe( 0xFFFFFFFF );
-                status->setText( "Aktuell" );
-                status->setSchriftFarbe( 0xFF00FF00 );
-                Text *pf = new Text( systemInit->zWert( sName->getText() )->getText() );
-                if( pf->getText()[ pf->getLength() - 1 ] != '/' )
-                    pf->append( "/" );
-                pf->append( (char *)info.path );
-                if( !DateiExistiert( pf->getText() ) )
-                {
-                    status->setText( "Gelöscht" );
-                    status->setSchriftFarbe( 0xFFFF0000 );
-                }
-                else
-                {
-                    Datei *d = new Datei();
-                    d->setDatei( pf->getText() );
-                    if( !d->istOrdner() )
-                    {
-                        Zeit *lä = d->getLastChange();
-                        if( !lä->istGleich( "y-m-d h:i:s", info.time ) )
-                        {
-                            status->setText( "Veraltet" );
-                            status->setSchriftFarbe( 0xFFFFFF00 );
-                        }
-                        lä->release();
-                    }
-                    d->release();
-                }
-                pf->release();
-                dateiT->setZeichnungZ( 2, i + 1, status );
-            }
-            sucheDateien( systemInit->zWert( sName->getText() )->getText(), list );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (gruppeF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			if (!psc)
+			{
+				gruppeF->removeStyle(Fenster::Style::Sichtbar);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+				fehlerF->addStyle(Fenster::Style::Sichtbar);
+				zurück->addStyle(Knopf::Style::Erlaubt);
+				return 1;
+			}
+			for (int i = 1; i < gruppeT->getZeilenAnzahl(); )
+				gruppeT->removeZeile(i);
+			Array< FileGroupInfo* > list;
+			psc->getFileGroupInfoList(&list);
+			int anz = list.getEintragAnzahl();
+			for (int i = 0; i < anz; i++)
+			{
+				FileGroupInfo* fileGroup = list.get(i);
+				Text* zeile = new Text("");
+				zeile->append(fileGroup->id);
+				gruppeT->addZeile(i + 1, zeile);
+				TextFeld* name = new TextFeld();
+				name->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				name->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				name->setSchriftFarbe(0xFFFFFFFF);
+				name->setSchriftSize(12);
+				name->setRahmenFarbe(0xFFFFFFFF);
+				name->setText(fileGroup->name);
+				gruppeT->setZeichnungZ(0, i + 1, name);
+				TextFeld* pfad = new TextFeld();
+				pfad->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				pfad->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				pfad->setSchriftFarbe(0xFFFFFFFF);
+				pfad->setSchriftSize(12);
+				pfad->setRahmenFarbe(0xFFFFFFFF);
+				pfad->setText(fileGroup->path);
+				gruppeT->setZeichnungZ(1, i + 1, pfad);
+				TextFeld* version = new TextFeld();
+				version->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				version->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				version->setSchriftFarbe(0xFFFFFFFF);
+				version->setSchriftSize(12);
+				version->setRahmenFarbe(0xFFFFFFFF);
+				version->setText(Text(fileGroup->version));
+				gruppeT->setZeichnungZ(2, i + 1, version);
+				KontrollKnopf* auswahl = new KontrollKnopf();
+				auswahl->setStyle(KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen);
+				auswahl->loadData("data/bilder/icons.ltdb");
+				auswahl->setMausEreignisParameter(this);
+				auswahl->setMausEreignis(versionAuswahlKnopfMausEreignis);
+				auswahl->setRahmenFarbe(0xFFFFFFFF);
+				gruppeT->setZeichnungZ(3, i + 1, auswahl);
+				delete fileGroup;
+			}
+		}
+		else if (systemF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			if (!psc)
+			{
+				gruppeF->removeStyle(Fenster::Style::Sichtbar);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+				fehlerF->addStyle(Fenster::Style::Sichtbar);
+				zurück->addStyle(Knopf::Style::Erlaubt);
+				return 1;
+			}
+			for (int i = 1; i < systemT->getZeilenAnzahl(); )
+				systemT->removeZeile(i);
+			Array< SystemInfo > list;
+			psc->getSystemInfoList(&list);
+			int anz = list.getEintragAnzahl();
+			for (int i = 0; i < anz; i++)
+			{
+				SystemInfo system = list.get(i);
+				Text* zeile = new Text("");
+				zeile->append(system.id);
+				systemT->addZeile(i + 1, zeile);
+				TextFeld* name = new TextFeld();
+				name->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				name->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				name->setSchriftFarbe(0xFFFFFFFF);
+				name->setSchriftSize(12);
+				name->setRahmenFarbe(0xFFFFFFFF);
+				name->setText(system.name);
+				systemT->setZeichnungZ(0, i + 1, name);
+				TextFeld* pfad = new TextFeld();
+				pfad->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				pfad->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				pfad->setText("");
+				if (systemInit->wertExistiert(system.name))
+					pfad->setText(systemInit->zWert(system.name)->getText());
+				pfad->setSchriftFarbe(0xFFFFFFFF);
+				pfad->setSchriftSize(12);
+				pfad->setRahmenFarbe(0xFFFFFFFF);
+				systemT->setZeichnungZ(1, i + 1, pfad);
+				KontrollKnopf* auswahl = new KontrollKnopf();
+				auswahl->setStyle(KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Rahmen);
+				auswahl->loadData("data/bilder/icons.ltdb");
+				auswahl->setMausEreignisParameter(this);
+				auswahl->setMausEreignis(versionAuswahlKnopfMausEreignis);
+				auswahl->setRahmenFarbe(0xFFFFFFFF);
+				systemT->setZeichnungZ(2, i + 1, auswahl);
+			}
+		}
+		else if (dateiF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			if (!psc)
+			{
+				gruppeF->removeStyle(Fenster::Style::Sichtbar);
+				aktualisieren->removeStyle(Knopf::Style::Erlaubt);
+				fehlerText->setText("Es wurde kein erreichbarer Patch Server gefunden.");
+				fehlerF->addStyle(Fenster::Style::Sichtbar);
+				zurück->addStyle(Knopf::Style::Erlaubt);
+				return 1;
+			}
+			for (int i = 1; i < dateiT->getZeilenAnzahl(); )
+				dateiT->removeZeile(i);
+			Array< FileInfo > list;
+			psc->getFileInfoList(system, gruppe, &list);
+			int anz = list.getEintragAnzahl();
+			for (int i = 0; i < anz; i++)
+			{
+				FileInfo info = list.get(i);
+				Text* zeile = new Text("");
+				zeile->append(info.id);
+				dateiT->addZeile(i + 1, zeile);
+				TextFeld* pfad = new TextFeld();
+				pfad->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::VCenter);
+				pfad->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				pfad->setSchriftFarbe(0xFFFFFFFF);
+				pfad->setSchriftSize(12);
+				pfad->setRahmenFarbe(0xFFFFFFFF);
+				pfad->setText(info.path);
+				dateiT->setZeichnungZ(0, i + 1, pfad);
+				TextFeld* version = new TextFeld();
+				version->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+				version->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				version->setSchriftFarbe(0xFFFFFFFF);
+				version->setSchriftSize(12);
+				version->setRahmenFarbe(0xFFFFFFFF);
+				version->setText(Text(info.version));
+				dateiT->setZeichnungZ(1, i + 1, version);
+				TextFeld* status = new TextFeld();
+				status->setStyle(TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Center);
+				status->setSchriftZ(schrift ? dynamic_cast<Schrift*>(schrift->getThis()) : 0);
+				status->setSchriftSize(12);
+				status->setRahmenFarbe(0xFFFFFFFF);
+				status->setText("Aktuell");
+				status->setSchriftFarbe(0xFF00FF00);
+				Text* pf = new Text(systemInit->zWert(sName->getText())->getText());
+				if (pf->getText()[pf->getLength() - 1] != '/')
+					pf->append("/");
+				pf->append(info.path);
+				if (!DateiExistiert(pf->getText()))
+				{
+					status->setText("Gelöscht");
+					status->setSchriftFarbe(0xFFFF0000);
+				}
+				else
+				{
+					Datei* d = new Datei();
+					d->setDatei(pf->getText());
+					if (!d->istOrdner())
+					{
+						Zeit* lä = d->getLastChange();
+						if (!lä->istGleich("y-m-d h:i:s", info.time))
+						{
+							status->setText("Veraltet");
+							status->setSchriftFarbe(0xFFFFFF00);
+						}
+						lä->release();
+					}
+					d->release();
+				}
+				pf->release();
+				dateiT->setZeichnungZ(2, i + 1, status);
+			}
+			sucheDateien(systemInit->zWert(sName->getText())->getText(), list);
+		}
+	}
+	return 1;
 }
 
-bool Version::zurückMausEreignis( void *o, MausEreignis me )
+bool Version::zurückMausEreignis(void* o, MausEreignis me)
 {
-    if( me.id == ME_RLinks )
-    {
-        if( fehlerF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            fehlerF->removeStyle( Fenster::Style::Sichtbar );
-            dateiF->removeStyle( Fenster::Style::Sichtbar );
-            systemF->removeStyle( Fenster::Style::Sichtbar );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            speichern->removeStyle( Knopf::Style::Erlaubt );
-            weiter->removeStyle( Knopf::Style::Erlaubt );
-            aktualisieren->addStyle( Knopf::Style::Erlaubt );
-            gruppeF->addStyle( Fenster::Style::Sichtbar );
-            aktualisierenMausEreignis( 0, me );
-        }
-        else if( dateiF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            fehlerF->removeStyle( Fenster::Style::Sichtbar );
-            dateiF->removeStyle( Fenster::Style::Sichtbar );
-            gruppeF->removeStyle( Fenster::Style::Sichtbar );
-            weiter->removeStyle( Knopf::Style::Erlaubt );
-            zurück->addStyle( Knopf::Style::Erlaubt );
-            speichern->addStyle( Knopf::Style::Erlaubt );
-            aktualisieren->addStyle( Knopf::Style::Erlaubt );
-            systemF->addStyle( Fenster::Style::Sichtbar );
-            aktualisierenMausEreignis( 0, me );
-        }
-        else if( systemF->hatStyle( Fenster::Style::Sichtbar ) )
-        {
-            fehlerF->removeStyle( Fenster::Style::Sichtbar );
-            dateiF->removeStyle( Fenster::Style::Sichtbar );
-            systemF->removeStyle( Fenster::Style::Sichtbar );
-            zurück->removeStyle( Knopf::Style::Erlaubt );
-            speichern->removeStyle( Knopf::Style::Erlaubt );
-            weiter->removeStyle( Knopf::Style::Erlaubt );
-            aktualisieren->addStyle( Knopf::Style::Erlaubt );
-            gruppeF->addStyle( Fenster::Style::Sichtbar );
-            aktualisierenMausEreignis( 0, me );
-        }
-    }
-    return 1;
+	if (me.id == ME_RLinks)
+	{
+		if (fehlerF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			fehlerF->removeStyle(Fenster::Style::Sichtbar);
+			dateiF->removeStyle(Fenster::Style::Sichtbar);
+			systemF->removeStyle(Fenster::Style::Sichtbar);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			speichern->removeStyle(Knopf::Style::Erlaubt);
+			weiter->removeStyle(Knopf::Style::Erlaubt);
+			aktualisieren->addStyle(Knopf::Style::Erlaubt);
+			gruppeF->addStyle(Fenster::Style::Sichtbar);
+			aktualisierenMausEreignis(0, me);
+		}
+		else if (dateiF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			fehlerF->removeStyle(Fenster::Style::Sichtbar);
+			dateiF->removeStyle(Fenster::Style::Sichtbar);
+			gruppeF->removeStyle(Fenster::Style::Sichtbar);
+			weiter->removeStyle(Knopf::Style::Erlaubt);
+			zurück->addStyle(Knopf::Style::Erlaubt);
+			speichern->addStyle(Knopf::Style::Erlaubt);
+			aktualisieren->addStyle(Knopf::Style::Erlaubt);
+			systemF->addStyle(Fenster::Style::Sichtbar);
+			aktualisierenMausEreignis(0, me);
+		}
+		else if (systemF->hatStyle(Fenster::Style::Sichtbar))
+		{
+			fehlerF->removeStyle(Fenster::Style::Sichtbar);
+			dateiF->removeStyle(Fenster::Style::Sichtbar);
+			systemF->removeStyle(Fenster::Style::Sichtbar);
+			zurück->removeStyle(Knopf::Style::Erlaubt);
+			speichern->removeStyle(Knopf::Style::Erlaubt);
+			weiter->removeStyle(Knopf::Style::Erlaubt);
+			aktualisieren->addStyle(Knopf::Style::Erlaubt);
+			gruppeF->addStyle(Fenster::Style::Sichtbar);
+			aktualisierenMausEreignis(0, me);
+		}
+	}
+	return 1;
 }
 
 void Version::commitAll()
 {
-    MausEreignis me;
-    me.id = ME_RLinks;
-    me.verarbeitet = 0;
-    aktualisierenMausEreignis( aktualisieren, me );
-    for( int i = 1; i < gruppeT->getZeilenAnzahl(); i++ )
-    {
-        std::cout << "Gruppe: " << ( (TextFeld *)gruppeT->zZeichnung( 0, i ) )->zText()->getText() << ": \n";
-        Zeichnung *z = gruppeT->zZeichnung( 3, i ); // auswahl knopf
-        me.mx = z->getX();
-        me.my = z->getY();
-        me.verarbeitet = 0;
-        z->doPublicMausEreignis( me );
-        me.verarbeitet = 0;
-        weiterMausEreignis( weiter, me );
-        aktualisierenMausEreignis( aktualisieren, me );
-        for( int j = 1; j < systemT->getZeilenAnzahl(); j++ )
-        {
-            std::cout << ( (TextFeld *)systemT->zZeichnung( 0, j ) )->zText()->getText() << ": ";
-            Zeichnung *z = systemT->zZeichnung( 2, j ); // auswahl knopf
-            me.mx = z->getX();
-            me.my = z->getY();
-            me.verarbeitet = 0;
-            z->doPublicMausEreignis( me );
-            me.verarbeitet = 0;
-            weiterMausEreignis( weiter, me );
-            aktualisierenMausEreignis( aktualisieren, me );
-            bool needCommit = 0;
-            for( int k = 1; k < dateiT->getZeilenAnzahl(); k++ )
-                needCommit |= !( (TextFeld *)dateiT->zZeichnung( 2, k ) )->zText()->istGleich( "Aktuell" );
-            if( needCommit )
-            {
-                commitMausEreignis( commit, me );
-                std::cout << "Commit successfull\n";
-            }
-            else
-                std::cout << "Unchanged\n";
-            zurückMausEreignis( zurück, me );
-        }
-        zurückMausEreignis( zurück, me );
-    }
+	MausEreignis me;
+	me.id = ME_RLinks;
+	me.verarbeitet = 0;
+	aktualisierenMausEreignis(aktualisieren, me);
+	for (int i = 1; i < gruppeT->getZeilenAnzahl(); i++)
+	{
+		std::cout << "Gruppe: " << ((TextFeld*)gruppeT->zZeichnung(0, i))->zText()->getText() << ": \n";
+		Zeichnung* z = gruppeT->zZeichnung(3, i); // auswahl knopf
+		me.mx = z->getX();
+		me.my = z->getY();
+		me.verarbeitet = 0;
+		z->doPublicMausEreignis(me);
+		me.verarbeitet = 0;
+		weiterMausEreignis(weiter, me);
+		aktualisierenMausEreignis(aktualisieren, me);
+		for (int j = 1; j < systemT->getZeilenAnzahl(); j++)
+		{
+			std::cout << ((TextFeld*)systemT->zZeichnung(0, j))->zText()->getText() << ": ";
+			Zeichnung* z = systemT->zZeichnung(2, j); // auswahl knopf
+			me.mx = z->getX();
+			me.my = z->getY();
+			me.verarbeitet = 0;
+			z->doPublicMausEreignis(me);
+			me.verarbeitet = 0;
+			weiterMausEreignis(weiter, me);
+			aktualisierenMausEreignis(aktualisieren, me);
+			bool needCommit = 0;
+			for (int k = 1; k < dateiT->getZeilenAnzahl(); k++)
+				needCommit |= !((TextFeld*)dateiT->zZeichnung(2, k))->zText()->istGleich("Aktuell");
+			if (needCommit)
+			{
+				commitMausEreignis(commit, me);
+				std::cout << "Commit successfull\n";
+			}
+			else
+				std::cout << "Unchanged\n";
+			zurückMausEreignis(zurück, me);
+		}
+		zurückMausEreignis(zurück, me);
+	}
 }
 
 // constant
-InitDatei *Version::getSystemInit() const
+InitDatei* Version::getSystemInit() const
 {
-    return dynamic_cast<InitDatei *>( systemInit->getThis() );
+	return dynamic_cast<InitDatei*>(systemInit->getThis());
 }
 
 
 // Ereignisse
-bool versionNeuGruppeKMausEreignis( void *p, void *o, MausEreignis me )
+bool versionNeuGruppeKMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->neuGruppeKMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->neuGruppeKMausEreignis(o, me);
 }
 
-bool versionAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me )
+bool versionAuswahlKnopfMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->auswahlKnopfMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->auswahlKnopfMausEreignis(o, me);
 }
 
-bool versionNeuSystemKMausEreignis( void *p, void *o, MausEreignis me )
+bool versionNeuSystemKMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->neuSystemKMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->neuSystemKMausEreignis(o, me);
 }
 
-bool versionSpeichernMausEreignis( void *p, void *o, MausEreignis me )
+bool versionSpeichernMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->speichernMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->speichernMausEreignis(o, me);
 }
 
-bool versionWeiterMausEreignis( void *p, void *o, MausEreignis me )
+bool versionWeiterMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->weiterMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->weiterMausEreignis(o, me);
 }
 
-bool versionCommitMausEreignis( void *p, void *o, MausEreignis me )
+bool versionCommitMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->commitMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->commitMausEreignis(o, me);
 }
 
-bool versionAktualisierenMausEreignis( void *p, void *o, MausEreignis me )
+bool versionAktualisierenMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->aktualisierenMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->aktualisierenMausEreignis(o, me);
 }
 
-bool versionZurückMausEreignis( void *p, void *o, MausEreignis me )
+bool versionZurückMausEreignis(void* p, void* o, MausEreignis me)
 {
-    if( !p )
-        return 0;
-    return ( (Version *)p )->zurückMausEreignis( o, me );
+	if (!p)
+		return 0;
+	return ((Version*)p)->zurückMausEreignis(o, me);
 }

+ 5 - 5
SMP/SMP.vcxproj

@@ -23,32 +23,32 @@
     <Keyword>Win32Proj</Keyword>
     <RootNamespace>SMP</RootNamespace>
     <ProjectName>SMP</ProjectName>
-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
+    <PlatformToolset>v143</PlatformToolset>
     <WholeProgramOptimization>true</WholeProgramOptimization>
     <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>

+ 1 - 1
SMP/data/start/optionen.ini

@@ -5,5 +5,5 @@ LadenHintergrundDatei=data/bilder/startbg.ltdb
 LadenHintergrundBild=bg.png
 LadeBilder=data/start/ladebilder.ini
 LadeSchriften=data/start/ladeschriften.ini
-MainServerIP=94.130.27.12
+MainServerIP=78.47.96.161
 MainServerPort=5252