[Wsplgen-commits] r150 - in trunk: . bin/windows src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Nov 12 22:44:54 CET 2009


Author: mrchip
Date: 2009-11-12 22:44:47 +0100 (Thu, 12 Nov 2009)
New Revision: 150

Modified:
   trunk/NEWS
   trunk/bin/windows/wsplgen.exe
   trunk/src/file.cpp
   trunk/src/parameter.cpp
   trunk/src/qhull.cpp
   trunk/src/quadtree.cpp
   trunk/src/shape.cpp
   trunk/src/test.cpp
   trunk/src/tools.cpp
   trunk/src/tools.h
   trunk/src/tri.cpp
   trunk/src/wsplgen.cpp
   trunk/src/wsplgen.h
   trunk/src/xy.cpp
Log:
Die Ausgabe erfolgt jetzt zeitgesteuert

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/NEWS	2009-11-12 21:44:47 UTC (rev 150)
@@ -10,6 +10,10 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
+Version 1.3.3
+
+       - Die Ausgabe von länger dauernden Vorgängen erfolgt nun im Sekundenabstand
+       
 Version 1.3.2
 
        - Die Dämme und Gräben werden nun wieder mit der richtigen (geringen Breite dargestellt)

Modified: trunk/bin/windows/wsplgen.exe
===================================================================
(Binary files differ)

Modified: trunk/src/file.cpp
===================================================================
--- trunk/src/file.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/file.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -29,7 +29,7 @@
 //---------------------------------------------------------------------
 bool LoadPar(std::string FileName, std::vector<std::string> *ParList)
 {
-	write_fortschritt("->Laden der Parameterdatei '%s' gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden der Parameterdatei '%s' gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -53,7 +53,7 @@
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden der Parameterdatei '%s' beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden der Parameterdatei '%s' beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -61,7 +61,7 @@
 //---------------------------------------------------------------------
 bool LoadPRJ(std::string FileName, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden der Projektionsdatei gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden der Projektionsdatei gestartet\n", FileName.c_str());
 
 	std::string PRJFileName = ExchangeFileExt(FileName, ".prj");
 	FILE *ph = fopen(PRJFileName.c_str(), "r");
@@ -81,15 +81,12 @@
 		if (0 == fgets(PrjIn, sizeof(PrjIn), ph))
 		{
 			PrjIn[0] = '\0';
-			write_fortschritt("Projektionsdatei '%s' konnte nicht gelesen werden\n", PRJFileName.c_str());
+			write_fortschritt (9, "Projektionsdatei '%s' konnte nicht gelesen werden\n", PRJFileName.c_str());
 		}
 		else
 		{
-			write_fortschritt("Projektionsdatei '%s' gelesen\n", PRJFileName.c_str());
-			if (DebugLevel >= 6)
-			{
-				write_fortschritt("Projektion: '%s'\n", PrjIn);
-			}
+			write_fortschritt (9, "Projektionsdatei '%s' gelesen\n", PRJFileName.c_str());
+			if (DebugLevel >= 6)	write_fortschritt (9, "Projektion: '%s'\n", PrjIn);
 
 			if (PrjOut[0] == '\0')
 			{
@@ -108,9 +105,9 @@
 	}
 	else
 	{
-		write_fortschritt("Projektionsdatei '%s' konnte nicht geöffnet werden\n", PRJFileName.c_str());
+		write_fortschritt (9, "Projektionsdatei '%s' konnte nicht geöffnet werden\n", PRJFileName.c_str());
 	}
-	write_fortschritt("<-Laden der Projektionsdatei beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden der Projektionsdatei beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -118,7 +115,7 @@
 //---------------------------------------------------------------------
 bool LoadDGM(std::string FileName, TNodeList *NodeList, TElementList *ElementList, TXYZList *BegrenzungsPolygon, bool IsSetNoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' gestartet\n", FileName.c_str());
 
 	if (NodeList == 0)		dump_error(__FILE__, __LINE__, "Die Knotenliste ist nicht definiert\n");
 	if (ElementList == 0)	dump_error(__FILE__, __LINE__, "Die Elementliste ist nicht definiert\n");
@@ -169,7 +166,7 @@
 		write_error(1222, "Ungültige Dateinamenserweiterung '%s' beim Dateinamen '%s' für den Parameter -DGM\nErlaubt sind nur ADF, GRD, ASC, 2DM, XYZ, TXT oder SHP\n", ToUpperCase(Ext).c_str(), FileName.c_str());
 	}
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -211,7 +208,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMTIN(std::string FileName, TNodeList *NodeList, TElementList *ElementList, TXYZList *Begrenzung, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als TIN gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als TIN gestartet\n", FileName.c_str());
 
 	std::string ThulFileName = GetFilePath(FileName) + "thul.adf";
 	std::string TnxyFileName = GetFilePath(FileName) + "tnxy.adf";
@@ -242,7 +239,7 @@
 
 	if (!IsSetBegrenzung)
 	{
-		write_fortschritt("->Laden der Umhüllung gestartet\n");
+		write_fortschritt (9, "->Laden der Umhüllung gestartet\n");
 
 		fhthul = fopen(ThulFileName.c_str(), "rb");
 		if (fhthul == 0)	write_error(2201, "Konnte '%s' nicht zum Lesen öffnen\n", ThulFileName.c_str());
@@ -285,15 +282,12 @@
 
 			Huelle.Add(XL, YL);
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzHul % 100 == 0) || (AnzHul > 0 && AnzHul % 1000 == 0))
-			{
-				write_fortschritt("%d Stützstellen gelesen\n", AnzHul);
-			}
+			write_fortschritt(DebugLevel, "%d Stützstellen gelesen\n", AnzHul);
 		}
 
 		fclose(fhthul);
 
-		write_fortschritt("%d Stützstellen gelesen\n", AnzHul);
+		write_fortschritt (9, "%d Stützstellen gelesen\n", AnzHul);
 
 		if (DebugLevel >= 9)
 		{
@@ -301,11 +295,11 @@
 			SavePolygon(HuelleFileName, &Huelle, DebugLevel);
 		}
 
-		write_fortschritt("<-Laden der Umhüllung beendet\n");
+		write_fortschritt (9, "<-Laden der Umhüllung beendet\n");
 	}
 
 
-	write_fortschritt("->Laden der Elemente gestartet\n");
+	write_fortschritt (9, "->Laden der Elemente gestartet\n");
 
 	// Nur so funktioniert später AddWithQuadTree
 
@@ -352,10 +346,7 @@
 
 		AnzElements++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzElements % 5000 == 0) || (AnzElements > 0 && AnzElements % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Elementen im Speicher\n", ElementList->size(), AnzElements);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen im Speicher\n", ElementList->size(), AnzElements);
 
 /*
 		TTinTyp TinTyp = TTREGULAR;
@@ -445,11 +436,11 @@
 	fclose(fhtnz);
 	fclose(fhtnod);
 
-	write_fortschritt("%d von %d Elementen im Speicher\n", ElementList->size(), AnzElements);
+	write_fortschritt (9, "%d von %d Elementen im Speicher\n", ElementList->size(), AnzElements);
 
-	write_fortschritt("<-Laden der Elemente beendet\n");
+	write_fortschritt (9, "<-Laden der Elemente beendet\n");
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als TIN beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als TIN beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -457,7 +448,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMGRD(std::string FileName, TNodeList *NodeList, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als GRD gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als GRD gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -642,10 +633,7 @@
 
 		AnzWerte++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzWerte % 10000 == 0) || (AnzWerte > 0 && AnzWerte % 100000 == 0))
-		{
-			write_fortschritt("%d von %d Werten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, MaxWerte, NodeList->size(), AnzKnoten);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Werten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, MaxWerte, NodeList->size(), AnzKnoten);
 
 		long XL = (long)(X * 100 + 0.5);
 		long YL = (long)(Y * 100 + 0.5);
@@ -661,11 +649,11 @@
 			NodeList->Add(Node);
 		}
 	}
-	write_fortschritt("%d von %d Werten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, MaxWerte, NodeList->size(), AnzKnoten);
+	write_fortschritt (9, "%d von %d Werten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, MaxWerte, NodeList->size(), AnzKnoten);
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als GRD beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als GRD beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -673,7 +661,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMXYZ(std::string FileName, TNodeList *NodeList, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als XYZ gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als XYZ gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -716,10 +704,7 @@
 
 		AnzWerte++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzWerte % 10000 == 0) || (AnzWerte > 0 && AnzWerte % 100000 == 0))
-		{
-			write_fortschritt("%d Werte gelesen, %d von %d Knoten im Speicher\n", AnzWerte, NodeList->size(), AnzKnoten);
-		}
+		write_fortschritt(DebugLevel, "%d Werte gelesen, %d von %d Knoten im Speicher\n", AnzWerte, NodeList->size(), AnzKnoten);
 
 		long XL = (long)(X * 100 + 0.5);
 		long YL = (long)(Y * 100 + 0.5);
@@ -735,11 +720,11 @@
 			NodeList->Add(Node);
 		}
 	}
-	write_fortschritt("%d Werte gelesen, %d von %d Knoten im Speicher\n", AnzWerte, NodeList->size(), AnzKnoten);
+	write_fortschritt (9, "%d Werte gelesen, %d von %d Knoten im Speicher\n", AnzWerte, NodeList->size(), AnzKnoten);
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als XYZ beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als XYZ beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -833,7 +818,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMXML(std::string FileName, TNodeList *NodeList, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als XML gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als XML gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -896,10 +881,7 @@
 
 		AnzWerte++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzWerte % 10000 == 0) || (AnzWerte > 0 && AnzWerte % 100000 == 0))
-		{
-			write_fortschritt("%d Werte gelesen, %d Knoten im Speicher\n", AnzWerte, NodeList->size());
-		}
+		write_fortschritt(DebugLevel, "%d Werte gelesen, %d Knoten im Speicher\n", AnzWerte, NodeList->size());
 
 		long XL = (long)(X * 100 + 0.5);
 		long YL = (long)(Y * 100 + 0.5);
@@ -919,11 +901,11 @@
 		Zeilen = Zeilen + AnzZeilen;
 	}
 
-	write_fortschritt("%d Werte gelesen, %d Knoten im Speicher\n", AnzWerte, NodeList->size());
+	write_fortschritt (9, "%d Werte gelesen, %d Knoten im Speicher\n", AnzWerte, NodeList->size());
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als XML beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als XML beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -931,7 +913,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMSHP(std::string FileName, TNodeList *NodeList, TXYZList *XyList, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als SHP gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als SHP gestartet\n", FileName.c_str());
 
 	LoadPRJ(FileName, NoProjWarn, DebugLevel);
 
@@ -1093,10 +1075,7 @@
 
 			AnzWerte++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzWerte % 10000 == 0) || (AnzWerte > 0 && AnzWerte % 100000 == 0))
-			{
-				write_fortschritt("%d von %d Objekten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, RecordCount, NodeList->size(), AnzKnoten);
-			}
+			write_fortschritt(DebugLevel, "%d von %d Objekten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, RecordCount, NodeList->size(), AnzKnoten);
 
 			TInsideTyp InsideTyp = INSIDE;
 			if (XyList && XyList->size() > 2) InsideTyp = XyList->IsInsideXYList(XL, YL);
@@ -1111,12 +1090,12 @@
 		SHPDestroyObject(psCShape);
 	}
 
-	write_fortschritt("%d von %d Objekten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, RecordCount, NodeList->size(), AnzKnoten);
+	write_fortschritt (9, "%d von %d Objekten gelesen, %d von %d Knoten im Speicher\n", AnzWerte, RecordCount, NodeList->size(), AnzKnoten);
 
 	DBFClose(hDBF);
 	SHPClose(hSHP);
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als SHP beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als SHP beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -1124,7 +1103,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGM2DM(std::string FileName, TNodeList *NodeList, TElementList *ElementList, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als 2DM gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als 2DM gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -1153,10 +1132,7 @@
 	{
 		AnzZeilen++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzZeilen % 10000 == 0) || (AnzZeilen > 0 && AnzZeilen % 100000 == 0))
-		{
-			write_fortschritt("%d Zeilen, %d Knoten geladen, %d Elemente gezählt\n", AnzZeilen, NodeList->size(), AnzElemente);
-		}
+		write_fortschritt(DebugLevel, "%d Zeilen, %d Knoten geladen, %d Elemente gezählt\n", AnzZeilen, NodeList->size(), AnzElemente);
 
 		if (strncmp (line, "E4Q", 3) == 0 || strncmp (line, "E3T", 3) == 0)
 		{
@@ -1202,10 +1178,7 @@
 		{
 			AnzZeilen++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzZeilen % 10000 == 0) || (AnzZeilen > 0 && AnzZeilen % 100000 == 0))
-			{
-				write_fortschritt("%d Zeilen, %d Knoten geladen, %d Elemente geladen\n", AnzZeilen, NodeList->size(), ElementList->size());
-			}
+			write_fortschritt(DebugLevel, "%d Zeilen, %d Knoten geladen, %d Elemente geladen\n", AnzZeilen, NodeList->size(), ElementList->size());
 
 			int Nr;
 			int Node1Nr;
@@ -1257,12 +1230,12 @@
 
 	fclose(fh);
 
-	write_fortschritt("%d Elemente und %d Knoten geladen\n", ElementList->size(), NodeList->size());
-	write_fortschritt("%d Knoten insgesamt\n", AnzKnoten);
+	write_fortschritt (9, "%d Elemente und %d Knoten geladen\n", ElementList->size(), NodeList->size());
+	write_fortschritt (9, "%d Knoten insgesamt\n", AnzKnoten);
 
 	if (XyList && XyList->size() > 2)
 	{
-		write_fortschritt("->Löschen aussenliegender Kanten gestartet\n");
+		write_fortschritt (9, "->Löschen aussenliegender Kanten gestartet\n");
 
 		int Count = 0;
 		for (TElementList::iterator i=ElementList->begin(); i != ElementList->end(); i++)
@@ -1302,16 +1275,13 @@
 
 			Count++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count % 50000 == 0))
-			{
-				write_fortschritt("%d von %d Elementen überprüft\n", Count, ElementList->size());
-			}
+			write_fortschritt(DebugLevel ,"%d von %d Elementen überprüft\n", Count, ElementList->size());
 		}
 
-		write_fortschritt("<-Löschen aussenliegender Kanten beendet\n");
+		write_fortschritt (9, "<-Löschen aussenliegender Kanten beendet\n");
 	}
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als 2DM beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als 2DM beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -1319,7 +1289,7 @@
 //---------------------------------------------------------------------------
 bool LoadDGMASCIITIN(std::string FileName, TNodeList *NodeList, TElementList *ElementList, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Laden des DGM in Datei '%s' als ASCII-TIN gestartet\n", FileName.c_str());
+	write_fortschritt (9, "->Laden des DGM in Datei '%s' als ASCII-TIN gestartet\n", FileName.c_str());
 
 	FILE *fh = fopen(FileName.c_str(), "r");
 	if (fh == 0)
@@ -1386,10 +1356,7 @@
 			write_error(2297, "Konnte keine 3 Werte in der Datei '%s' in der Zeile %d lesen\n", FileName.c_str(), AnzZeilen);
 		}
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzZeilen % 10000 == 0) || (AnzZeilen > 0 && AnzZeilen % 100000 == 0))
-		{
-			write_fortschritt("%d Zeilen, %d Knoten geladen\n", AnzZeilen, NodeList->size());
-		}
+		write_fortschritt(DebugLevel, "%d Zeilen, %d Knoten geladen\n", AnzZeilen, NodeList->size());
 
 		long XL = (long)(X * 100 + 0.5);
 		long YL = (long)(Y * 100 + 0.5);
@@ -1433,10 +1400,7 @@
 		{
 			AnzZeilen++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzZeilen % 10000 == 0) || (AnzZeilen > 0 && AnzZeilen % 100000 == 0))
-			{
-				write_fortschritt("%d Zeilen, %d Elemente geladen\n", AnzZeilen, ElementList->size());
-			}
+			write_fortschritt(DebugLevel, "%d Zeilen, %d Elemente geladen\n", AnzZeilen, ElementList->size());
 
 			int Node1Nr;
 			int Node2Nr;
@@ -1462,12 +1426,12 @@
 
 	fclose(fh);
 
-	write_fortschritt("%d Elemente und %d Knoten geladen\n", ElementList->size(), NodeList->size());
-	write_fortschritt("%d Knoten insgesamt\n", AnzKnoten);
+	write_fortschritt (9, "%d Elemente und %d Knoten geladen\n", ElementList->size(), NodeList->size());
+	write_fortschritt (9, "%d Knoten insgesamt\n", AnzKnoten);
 
 	if (XyList && XyList->size() > 2)
 	{
-		write_fortschritt("->Löschen aussenliegender Kanten gestartet\n");
+		write_fortschritt (9, "->Löschen aussenliegender Kanten gestartet\n");
 
 		int Count = 0;
 		for (TElementList::iterator i=ElementList->begin(); i != ElementList->end(); i++)
@@ -1507,16 +1471,13 @@
 
 			Count++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count % 50000 == 0))
-			{
-				write_fortschritt("%d von %d Elementen überprüft\n", Count, ElementList->size());
-			}
+			write_fortschritt(DebugLevel, "%d von %d Elementen überprüft\n", Count, ElementList->size());
 		}
 
-		write_fortschritt("<-Löschen aussenliegender Kanten beendet\n");
+		write_fortschritt (9, "<-Löschen aussenliegender Kanten beendet\n");
 	}
 
-	write_fortschritt("<-Laden des DGM in Datei '%s' als ASCII-TIN beendet\n", FileName.c_str());
+	write_fortschritt (9, "<-Laden des DGM in Datei '%s' als ASCII-TIN beendet\n", FileName.c_str());
 
 	return (true);
 }
@@ -1524,13 +1485,13 @@
 //---------------------------------------------------------------------
 bool LoadProfile(std::string FileName, TProfilList* ProfilList, TGewaesserAchseList* GewaesserAchseList, double VonKmD, double BisKmD, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden der Profilspuren gestartet\n");
+	write_fortschritt (9, "->Laden der Profilspuren gestartet\n");
 
 	LoadPRJ(FileName, NoProjWarn, DebugLevel);
 
-	if (VonKmD > -9999 && BisKmD > -9999)	write_fortschritt("Nur Profile von Station %.4f bis %.4f werden geladen\n", VonKmD, BisKmD);
-	else if (VonKmD > -9999)	write_fortschritt("Nur Profile mit einer Station größer als %.4f werden geladen\n", VonKmD);
-	else if (BisKmD > -9999)	write_fortschritt("Nur Profile mit einer Station kleiner als %.4f werden geladen\n", BisKmD);
+	if (VonKmD > -9999 && BisKmD > -9999)	write_fortschritt (9, "Nur Profile von Station %.4f bis %.4f werden geladen\n", VonKmD, BisKmD);
+	else if (VonKmD > -9999)	write_fortschritt (9, "Nur Profile mit einer Station größer als %.4f werden geladen\n", VonKmD);
+	else if (BisKmD > -9999)	write_fortschritt (9, "Nur Profile mit einer Station kleiner als %.4f werden geladen\n", BisKmD);
 
 	if (ProfilList == 0)
 	{
@@ -1709,29 +1670,26 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-		{
-			write_fortschritt("%d von %d Objekten geladen, %d Profilspuren im Speicher\n", Count, RecordCount, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Objekten geladen, %d Profilspuren im Speicher\n", Count, RecordCount, ProfilList->size());
 	}
 
-	write_fortschritt("%d von %d Objekten geladen, %d Profilspuren im Speicher\n", Count, RecordCount, ProfilList->size());
+	write_fortschritt (9, "%d von %d Objekten geladen, %d Profilspuren im Speicher\n", Count, RecordCount, ProfilList->size());
 
 	DBFClose(hDBF);
 	SHPClose(hSHP);
 
-	write_fortschritt("<-Laden der Profilspuren beendet\n");
+	write_fortschritt (9, "<-Laden der Profilspuren beendet\n");
 
 	if (DebugLevel >= 9)
 	{
 		for (TProfilList::iterator i = ProfilList->begin(); i != ProfilList->end(); i++)
 		{
 			TProfil* Profil = *i;
-			write_fortschritt("%d\n", Profil->Station);
+			write_fortschritt (9, "%d\n", Profil->Station);
 		}
 	}
 
-	write_fortschritt("->Ausrichten der Profilspuren gestartet\n");
+	write_fortschritt (9, "->Ausrichten der Profilspuren gestartet\n");
 
 	if (0 == GewaesserAchseList)
 	{
@@ -1744,10 +1702,7 @@
 		{
 			Count++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-			{
-				write_fortschritt("%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
-			}
+			write_fortschritt(DebugLevel, "%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
 
 			VorProfil = NachProfil;
 			NachProfil = *i;
@@ -1813,7 +1768,7 @@
 			}
 			i++;
 		}
-		write_fortschritt("%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
+		write_fortschritt (9, "%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
 	}
 	else
 	{
@@ -1824,10 +1779,7 @@
 		{
 			Count++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-			{
-				write_fortschritt("%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
-			}
+			write_fortschritt(DebugLevel, "%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
 
 			TProfil* Profil = *i;
 
@@ -1900,10 +1852,7 @@
 
 							 if (CrossProduct(X, Y, P1x, P1y, S1x, S1y) < 0.0)
 							 {
-								if (DebugLevel >= 9)
-								{
-									write_fortschritt("Profil '%.4f' wurde umgedreht\n", Profil->Station / 10000.0);
-								}
+								write_fortschritt(DebugLevel ,"Profil '%.4f' wurde umgedreht\n", Profil->Station / 10000.0);
 
 								SwitchCount++;
 
@@ -1931,13 +1880,13 @@
 			} // Ende der Iteration über die Achsen
 			i++;
 		}
-		write_fortschritt("%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
+		write_fortschritt (9, "%d von %d Profilspuren ausgerichtet, %d gedreht\n", Count, ProfilList->size(), SwitchCount);
 	}
 
-	write_fortschritt("<-Ausrichten der Profilspuren beendet\n");
+	write_fortschritt (9, "<-Ausrichten der Profilspuren beendet\n");
 
 
-	write_fortschritt("->Überprüfung der Profilspuren gestartet\n");
+	write_fortschritt (9, "->Überprüfung der Profilspuren gestartet\n");
 
 	TProfil* VorProfil = 0;
 	TProfil* NachProfil = 0;
@@ -1947,10 +1896,7 @@
 	{
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-		{
-			write_fortschritt("%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel ,"%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
 
 		VorProfil = NachProfil;
 		NachProfil = *i;
@@ -1993,18 +1939,18 @@
 				double X = 0.0;
 				double Y = 0.0;
 				if (Calc2Schnitt(VP1->X, VP1->Y, VP2->X, VP2->Y, NP1->X, NP1->Y, NP2->X, NP2->Y, &X, &Y))
-                {
-                	write_warning(3117, "Die Profile %d und %d schneiden sich bei (%.2f, %.2f)\n", VorProfil->Station / 1000, NachProfil->Station / 1000, X / 100.0, Y / 100.0);
-                }
-                k++;
+				{
+					write_warning(3117, "Die Profile %d und %d schneiden sich bei (%.2f, %.2f)\n", VorProfil->Station / 1000, NachProfil->Station / 1000, X / 100.0, Y / 100.0);
+				}
+				k++;
 			}
-            j++;
-        }
+			j++;
+		}
 		i++;
 	}
-	write_fortschritt("%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
+	write_fortschritt (9, "%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
 
-	write_fortschritt("<-Überprüfung der Profilspuren beendet\n");
+	write_fortschritt (9, "<-Überprüfung der Profilspuren beendet\n");
 
 	return (true);
 }
@@ -2012,7 +1958,7 @@
 //---------------------------------------------------------------------
 bool LoadLinien(std::string FileName, TProfilList* SperrenList, TProfilList* GrabenList, TProfilList* Rohre1List, TProfilList* Rohre2List, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden der Linien Strukturen (Sperren, Gräben und Rohre) gestartet\n");
+	write_fortschritt (9, "->Laden der Linien Strukturen (Sperren, Gräben und Rohre) gestartet\n");
 
 	LoadPRJ(FileName, NoProjWarn, DebugLevel);
 
@@ -2259,19 +2205,14 @@
 			Linie->InterpolateZ();
 		}
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-		{
-			write_fortschritt("%d von %d Liniensstrukturen geladen.\n", Count, RecordCount);
-			write_fortschritt("(%d Sperren, %d Gräben, %d Rohre Typ 1, %d Rohre Typ 2)\n", SperrenList->size(), GrabenList->size(), Rohre1List->size(), Rohre2List->size());
-		}
+		write_fortschritt(DebugLevel, "%d Sperren, %d Gräben, %d Rohre Typ 1, %d Rohre Typ 2 geladen.\n", SperrenList->size(), GrabenList->size(), Rohre1List->size(), Rohre2List->size());
 	}
-	write_fortschritt("%d von %d Liniensstrukturen geladen.\n", Count, RecordCount);
-	write_fortschritt("%d Dämme, %d Gräben, %d Rohre Typ 1, %d Rohre Typ 2\n", SperrenList->size(), GrabenList->size(), Rohre1List->size(), Rohre2List->size());
+	write_fortschritt (9, "%d Gesamt (%d Dämme, %d Gräben, %d Rohre Typ 1, %d Rohre Typ 2)\n", RecordCount, SperrenList->size(), GrabenList->size(), Rohre1List->size(), Rohre2List->size());
 
 	DBFClose(hDBF);
 	SHPClose(hSHP);
 
-	write_fortschritt("<-Laden der Linien Strukturen (Sperren, Gräben und Rohre) beendet\n");
+	write_fortschritt (9, "<-Laden der Linien Strukturen (Sperren, Gräben und Rohre) beendet\n");
 
 	return (true);
 }
@@ -2279,7 +2220,7 @@
 //---------------------------------------------------------------------
 bool LoadWsp(std::string FileName, TProfilList* ProfilList, std::string Tag, int DebugLevel)
 {
-	write_fortschritt("->Laden der Wasserstände gestartet\n");
+	write_fortschritt (9, "->Laden der Wasserstände gestartet\n");
 
 	std::string Ext = GetFileExt(FileName);
 
@@ -2302,7 +2243,7 @@
 		write_error(1227, "Ungültige Dateinamenserweiterung '%s' beim Dateinamen '%s' für den Parameter -WSP\nErlaubt sind nur WSP, DBF, TXT, DAT oder ASC\n", ToUpperCase(Ext).c_str(), FileName.c_str());
 	}
 
-	write_fortschritt("<-Laden der Wasserstände beendet\n");
+	write_fortschritt (9, "<-Laden der Wasserstände beendet\n");
 
 	return (Status);
 }
@@ -2310,7 +2251,7 @@
 //---------------------------------------------------------------------
 bool LoadWspTxt(std::string FileName, TProfilList* ProfilList, int DebugLevel)
 {
-	write_fortschritt("->Laden der Wasserstände im ASCII-Format gestartet\n");
+	write_fortschritt (9, "->Laden der Wasserstände im ASCII-Format gestartet\n");
 
 	if (ProfilList == 0)
 	{
@@ -2413,16 +2354,13 @@
 			delete Profil;
 		}
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AktZeile % 100 == 0) || (AktZeile > 0 && AktZeile % 1000 == 0))
-		{
-			write_fortschritt("%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel, "%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
 	}
-	write_fortschritt("%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
+	write_fortschritt (9, "%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden der Wasserstände im ASCII-Format beendet\n");
+	write_fortschritt (9, "<-Laden der Wasserstände im ASCII-Format beendet\n");
 
 	return (true);
 }
@@ -2430,7 +2368,7 @@
 //---------------------------------------------------------------------
 bool LoadWspWst(std::string FileName, TProfilList* ProfilList, std::string Tag, int DebugLevel)
 {
-	write_fortschritt("->Laden der Wasserstände im WST-Format gestartet\n");
+	write_fortschritt (9, "->Laden der Wasserstände im WST-Format gestartet\n");
 
 	if (ProfilList == 0)
 	{
@@ -2619,16 +2557,13 @@
 			delete Profil;
 		}
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AktZeile % 100 == 0) || (AktZeile > 0 && AktZeile % 1000 == 0))
-		{
-			write_fortschritt("%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel, "%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
 	}
-	write_fortschritt("%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
+	write_fortschritt (9, "%d Zeilen geladen, %d Wasserstände im Speicher\n", AktZeile, ProfilList->size());
 
 	fclose(fh);
 
-	write_fortschritt("<-Laden der Wasserstände im WST-Format beendet\n");
+	write_fortschritt (9, "<-Laden der Wasserstände im WST-Format beendet\n");
 
 	return (true);
 }
@@ -2636,7 +2571,7 @@
 //---------------------------------------------------------------------
 bool LoadWspDBF(std::string FileName, TProfilList* ProfilList, int DebugLevel)
 {
-	write_fortschritt("->Laden der Wasserstände im DBF-Format gestartet\n");
+	write_fortschritt (9, "->Laden der Wasserstände im DBF-Format gestartet\n");
 
 	if (ProfilList == 0)
 	{
@@ -2803,17 +2738,14 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 100 == 0) || (Count > 0 && Count % 1000 == 0))
-		{
-			write_fortschritt("%d von %d Objekten gelesen, %d Wasserstände im Speicher\n", Count, RecordCount, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Objekten gelesen, %d Wasserstände im Speicher\n", Count, RecordCount, ProfilList->size());
 	}
 
-	write_fortschritt("%d von %d Objekten gelesen, %d Wasserstände im Speicher\n", Count, RecordCount, ProfilList->size());
+	write_fortschritt (9, "%d von %d Objekten gelesen, %d Wasserstände im Speicher\n", Count, RecordCount, ProfilList->size());
 
 	DBFClose(hDBF);
 
-	write_fortschritt("<-Laden der Wasserstände im DBF-Format beendet\n");
+	write_fortschritt (9, "<-Laden der Wasserstände im DBF-Format beendet\n");
 
 	return (true);
 }
@@ -2821,7 +2753,7 @@
 //---------------------------------------------------------------------
 bool LoadAchse(std::string FileName, TGewaesserAchseList* GewaesserAchseList, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden der Gewässerachsen gestartet\n");
+	write_fortschritt (9, "->Laden der Gewässerachsen gestartet\n");
 
 	LoadPRJ(FileName, NoProjWarn, DebugLevel);
 
@@ -2918,20 +2850,17 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-		{
-			write_fortschritt("%d von %d Objekten gelesen, %d Gewässerachsen im Speicher\n", Count, RecordCount, GewaesserAchseList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Objekten gelesen, %d Gewässerachsen im Speicher\n", Count, RecordCount, GewaesserAchseList->size());
 	}
 
-	write_fortschritt("%d von %d Objekten gelesen, %d Gewässerachsen im Speicher\n", Count, RecordCount, GewaesserAchseList->size());
+	write_fortschritt (9, "%d von %d Objekten gelesen, %d Gewässerachsen im Speicher\n", Count, RecordCount, GewaesserAchseList->size());
 
 	DBFClose(hDBF);
 	SHPClose(hSHP);
 
-	write_fortschritt("<-Laden der Gewässerachsen beendet\n");
+	write_fortschritt (9, "<-Laden der Gewässerachsen beendet\n");
 
-	write_fortschritt("->Zusammenführen von Achsensegmenten gestart\n");
+	write_fortschritt (9, "->Zusammenführen von Achsensegmenten gestart\n");
 
 	TGewaesserAchseList::iterator FirstAchseIter = GewaesserAchseList->begin();
 	int FirstCount = 0;
@@ -2957,10 +2886,7 @@
 		TGewaesserAchse* FirstAchse = *FirstAchseIter;
 		TGewaesserAchse* TestAchse = *TestAchseIter;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 8 && Count % 10 == 0) || Count % 100 == 0)
-		{
-			write_fortschritt("Teste Segment %d (%d) von %d Segmenten mit %d (%d)\n", FirstCount, FirstAchse->PointList->size(), GewaesserAchseList->size(), TestCount, TestAchse->PointList->size());
-		}
+		write_fortschritt(DebugLevel, "Teste Segment %d (%d) von %d Segmenten mit %d (%d)\n", FirstCount, FirstAchse->PointList->size(), GewaesserAchseList->size(), TestCount, TestAchse->PointList->size());
 
 		// Point First von FirstAchse (PfFirst) und Point Last von Firstachse(PlFirst)
 		TPoint* PfFirst = *(FirstAchse->PointList->begin());
@@ -3043,7 +2969,7 @@
 
 		if (NewXyList)
 		{
-			if (DebugLevel >= 9)	write_fortschritt("Segment %d und %d werden verbunden\n", FirstCount, TestCount);
+			if (DebugLevel >= 9)	write_fortschritt (9, "Segment %d und %d werden verbunden\n", FirstCount, TestCount);
 
 			// Alte Punkte löschen
 			for (TPointList::iterator i=FirstAchse->PointList->begin();	i != FirstAchse->PointList->end(); i++)
@@ -3056,7 +2982,7 @@
 			delete FirstAchse->PointList;
 			FirstAchse->PointList = 0;
 
-			if (DebugLevel >= 9) write_fortschritt("Neue XYList (%d)\n", NewXyList->size());
+			if (DebugLevel >= 9) write_fortschritt (9, "Neue XYList (%d)\n", NewXyList->size());
 
 			// Neue Punkte hinzufügen
 			for (TXYZList::iterator i = NewXyList->begin(); i != NewXyList->end(); i++)
@@ -3065,7 +2991,7 @@
 				FirstAchse->AddPoint(Xy->X, Xy->Y);
 			}
 
-			if (DebugLevel >= 9) write_fortschritt("Neue Anzahl (%d)\n", FirstAchse->PointList->size());
+			if (DebugLevel >= 9) write_fortschritt (9, "Neue Anzahl (%d)\n", FirstAchse->PointList->size());
 
 			GewaesserAchseList->erase(TestAchseIter);
 			delete TestAchse;
@@ -3079,7 +3005,7 @@
 		}
 	}
 
-	write_fortschritt("<-Zusammenführen von Achsensegmenten beendet\n");
+	write_fortschritt (9, "<-Zusammenführen von Achsensegmenten beendet\n");
 
 	return (true);
 }
@@ -3087,7 +3013,7 @@
 //---------------------------------------------------------------------
 bool LoadGebiet(std::string FileName, TXYZList *XyList, bool NoProjWarn, int DebugLevel)
 {
-	write_fortschritt("->Laden der hydraulischen Grenze gestartet\n");
+	write_fortschritt (9, "->Laden der hydraulischen Grenze gestartet\n");
 
 	LoadPRJ(FileName, NoProjWarn, DebugLevel);
 
@@ -3167,7 +3093,7 @@
 
 	SHPClose(hSHP);
 
-	write_fortschritt("<-Laden der hydraulischen Grenze beendet\n");
+	write_fortschritt (9, "<-Laden der hydraulischen Grenze beendet\n");
 
 	return (true);
 }
@@ -3177,7 +3103,7 @@
 {
 	if (PrjOut[0] != '\0')
 	{
-		write_fortschritt("->Speichern einer Projektionsdatei gestartet\n");
+		write_fortschritt (9, "->Speichern einer Projektionsdatei gestartet\n");
 
 		std::string PRJFileName = ExchangeFileExt(FileName, ".prj");
 		FILE *ph = fopen(PRJFileName.c_str(), "w");
@@ -3185,22 +3111,22 @@
 		{
 			if (EOF == fputs(PrjOut, ph))
 			{
-				write_fortschritt("Projektionsdatei '%s' konnte nicht geschrieben werden\n", PRJFileName.c_str());
+				write_fortschritt (9, "Projektionsdatei '%s' konnte nicht geschrieben werden\n", PRJFileName.c_str());
 			}
 			else if (EOF == fclose(ph))
 			{
-				write_fortschritt("Projektionsdatei '%s' konnte nicht geschrieben werden\n", PRJFileName.c_str());
+				write_fortschritt (9, "Projektionsdatei '%s' konnte nicht geschrieben werden\n", PRJFileName.c_str());
 			}
 		}
 		else
 		{
-			write_fortschritt("Projektionsdatei '%s' konnte nicht zum Schreiben geöffnet werden\n", PRJFileName.c_str());
+			write_fortschritt (9, "Projektionsdatei '%s' konnte nicht zum Schreiben geöffnet werden\n", PRJFileName.c_str());
 		}
-		write_fortschritt("<-Speichern einer Projektionsdatei beendet\n");
+		write_fortschritt (9, "<-Speichern einer Projektionsdatei beendet\n");
 	}
 	else
 	{
-		if (DebugLevel >= 3) write_fortschritt("Keine Projektionsinformationen vorhanden\n");
+		if (DebugLevel >= 3) write_fortschritt (9, "Keine Projektionsinformationen vorhanden\n");
 	}
 
 	return (true);
@@ -3209,27 +3135,24 @@
 //---------------------------------------------------------------------------
 bool SaveNet(std::string FileName, TNodeList *NodeList, TElementList *ElementList, int DebugLevel)
 {
-	write_fortschritt("->Speichern des 2DM-Netzes gestartet\n");
+	write_fortschritt (9, "->Speichern des 2DM-Netzes gestartet\n");
 
 	if (NodeList == 0)		dump_error(__FILE__, __LINE__, "Die Knotenliste ist nicht definiert\n");
 
-	write_fortschritt("->Umnumerierung der Knoten gestartet\n");
+	write_fortschritt (9, "->Umnumerierung der Knoten gestartet\n");
 
 	for (unsigned int i=0; i<NodeList->size(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && i % 5000 == 0) || (i > 0 && i % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Knoten umnumeriert\n", i, NodeList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Knoten umnumeriert\n", i, NodeList->size());
 
 		TNode *Node = (*NodeList)[i];
 
 		Node->Nr = i + 1;
 	}
 
-	write_fortschritt("%d von %d Knoten umnumeriert\n", NodeList->size(), NodeList->size());
+	write_fortschritt (9, "%d von %d Knoten umnumeriert\n", NodeList->size(), NodeList->size());
 
-	write_fortschritt("<-Umnumerierung der Knoten beendet\n");
+	write_fortschritt (9, "<-Umnumerierung der Knoten beendet\n");
 
 	FILE *fh = fopen (FileName.c_str(), "w");
 	if (fh == NULL)
@@ -3241,14 +3164,11 @@
 
 	if (ElementList && ElementList->size() > 0)
 	{
-		write_fortschritt("->Speichern der Elemente gestartet\n");
+		write_fortschritt (9, "->Speichern der Elemente gestartet\n");
 
 		for (unsigned int i=0; i<ElementList->size(); i++)
 		{
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && i % 5000 == 0) || (i > 0 && i % 50000 == 0))
-			{
-				write_fortschritt("%d von %d Elementen gespeichert\n", i, ElementList->size());
-			}
+			write_fortschritt(DebugLevel, "%d von %d Elementen gespeichert\n", i, ElementList->size());
 
 			TElement *Element = (*ElementList)[i];
 
@@ -3269,19 +3189,16 @@
 			fprintf(fh, "E3T %6d %6d %6d %6d %6d\n", i+1, N1->Nr, N2->Nr, N3->Nr, 1);
 		}
 
-		write_fortschritt("%d von %d Elementen gespeichert\n", ElementList->size(), ElementList->size());
+		write_fortschritt (9, "%d von %d Elementen gespeichert\n", ElementList->size(), ElementList->size());
 
-		write_fortschritt("<-Speichern der Elemente beendet\n");
+		write_fortschritt (9, "<-Speichern der Elemente beendet\n");
 	}
 
-	write_fortschritt("->Speichern der Knoten gestartet\n");
+	write_fortschritt (9, "->Speichern der Knoten gestartet\n");
 
 	for (unsigned int i=0; i<NodeList->size(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && i % 5000 == 0) || (i > 0 && i % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Knoten gespeichert\n", i, NodeList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Knoten gespeichert\n", i, NodeList->size());
 
 		TNode *Node = (*NodeList)[i];
 
@@ -3290,11 +3207,11 @@
 		fprintf(fh, "ND %6d %15.9e %15.9e %15.9e\n", Node->Nr, Node->X / 100.0, Node->Y / 100.0, Node->Z / 100.0);
 	}
 
-	write_fortschritt("%d von %d Knoten gespeichert\n", NodeList->size(), NodeList->size());
+	write_fortschritt (9, "%d von %d Knoten gespeichert\n", NodeList->size(), NodeList->size());
 
-	write_fortschritt("<-Speichern der Knoten beendet\n");
+	write_fortschritt (9, "<-Speichern der Knoten beendet\n");
 
-	write_fortschritt("->Speichern der Modell-Parameter gestartet\n");
+	write_fortschritt (9, "->Speichern der Modell-Parameter gestartet\n");
 
 	fprintf(fh, "BEGPARAMDEF\n");
 	fprintf(fh, "GM  HYDRO_AS-2D\n");
@@ -3333,11 +3250,11 @@
 
 	fprintf(fh, "END2DMBC\n");
 
-	write_fortschritt("<-Speichern der Modell-Parameter beendet\n");
+	write_fortschritt (9, "<-Speichern der Modell-Parameter beendet\n");
 
 	fclose (fh);
 
-	write_fortschritt("<-Speichern des 2DM-Netzes beendet\n");
+	write_fortschritt (9, "<-Speichern des 2DM-Netzes beendet\n");
 
 	return (true);
 }
@@ -3345,7 +3262,7 @@
 //---------------------------------------------------------------------------
 bool SaveSol(std::string FileName, TNodeList *NodeList, int DebugLevel)
 {
-	write_fortschritt("->Speichern der SOL-Wasserstände gestartet\n");
+	write_fortschritt (9, "->Speichern der SOL-Wasserstände gestartet\n");
 
 	if (NodeList == 0)		dump_error(__FILE__, __LINE__, "Die Knotenliste ist nicht definiert\n");
 
@@ -3362,21 +3279,18 @@
 
 	for (unsigned int i=0; i<NodeList->size(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && i % 5000 == 0) || (i > 0 && i % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Wasserstände gespeichert\n", i, NodeList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Wasserstände gespeichert\n", i, NodeList->size());
 
 		TNode *Node = (*NodeList)[i];
 
 		fprintf(fh, "%15.9f\n", Node->Wsp / 100.0);
 	}
 
-	write_fortschritt("%d von %d Wasserstände gespeichert\n", NodeList->size(), NodeList->size());
+	write_fortschritt (9, "%d von %d Wasserstände gespeichert\n", NodeList->size(), NodeList->size());
 
 	fclose (fh);
 
-	write_fortschritt("<-Speichern der SOL-Wasserstände beendet\n");
+	write_fortschritt (9, "<-Speichern der SOL-Wasserstände beendet\n");
 
 	return (true);
 }
@@ -3384,7 +3298,7 @@
 //---------------------------------------------------------------------------
 bool SaveProfile(std::string FileName, TProfilList *ProfilList, int DebugLevel)
 {
-	write_fortschritt("->Speichern der Profile gestartet\n");
+	write_fortschritt (9, "->Speichern der Profile gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -3449,17 +3363,14 @@
 
 		AnzProfil++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzProfil % 100 == 0) || (AnzProfil > 0 && AnzProfil % 1000 == 0))
-		{
-			write_fortschritt("%d von %d Profile gespeichert\n", AnzProfil, ProfilList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Profile gespeichert\n", AnzProfil, ProfilList->size());
 	}
-	write_fortschritt("%d von %d Profile gespeichert\n", AnzProfil, ProfilList->size());
+	write_fortschritt (9, "%d von %d Profile gespeichert\n", AnzProfil, ProfilList->size());
 
 	DBFClose(DBFHandle);
 	SHPClose(SHPHandle);
 
-	write_fortschritt("<-Speichern der Profile beendet\n");
+	write_fortschritt (9, "<-Speichern der Profile beendet\n");
 
 	return (true);
 }
@@ -3467,7 +3378,7 @@
 //---------------------------------------------------------------------------
 bool SavePolygon(std::string FileName, TXYZList *XyList, int DebugLevel)
 {
-	write_fortschritt("->Speichern des Begrenzungspolygons gestartet\n");
+	write_fortschritt (9, "->Speichern des Begrenzungspolygons gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -3498,10 +3409,7 @@
 
 		AnzPoint++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzPoint % 1000 == 0) || (AnzPoint > 0 && AnzPoint % 10000 == 0))
-		{
-			write_fortschritt("%d von %d Stützstellen gespeichert\n", AnzPoint, XyList->size()+1);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Stützstellen gespeichert\n", AnzPoint, XyList->size()+1);
 	}
 
 	TXYZList::iterator i = XyList->begin();
@@ -3524,9 +3432,9 @@
 	DBFClose(DBFHandle);
 	SHPClose(SHPHandle);
 
-	write_fortschritt("%d von %d Stützstellen gespeichert\n", AnzPoint, XyList->size()+1);
+	write_fortschritt (9, "%d von %d Stützstellen gespeichert\n", AnzPoint, XyList->size()+1);
 
-	write_fortschritt("<-Speichern des Begrenzungspolygons beendet\n");
+	write_fortschritt (9, "<-Speichern des Begrenzungspolygons beendet\n");
 
 	return (true);
 }
@@ -3574,7 +3482,7 @@
 //---------------------------------------------------------------------------
 bool SavePolygone(std::string FileName, TErgebnisPolygonList *PolygonList, int DebugLevel)
 {
-	write_fortschritt("->Speichern der Ergebnispolygone gestartet\n");
+	write_fortschritt (9, "->Speichern der Ergebnispolygone gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -3590,7 +3498,7 @@
 		write_error(4204, "Kann bei Datei '%s' das Attribut 'DIFF' nicht erzeugen\n", FileName.c_str());
 	}
 
-	write_fortschritt("->Löschen der zu kleinen Ringe gestartet\n");
+	write_fortschritt (9, "->Löschen der zu kleinen Ringe gestartet\n");
 
 	int	Count = 0;
 	int DelCount = 0;
@@ -3600,10 +3508,7 @@
 	{
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-		{
-			write_fortschritt("%d von %d Polygonen, %d Polygone gelöscht\n", Count, PolygonList->size(), DelCount);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Polygonen, %d Polygone gelöscht\n", Count, PolygonList->size(), DelCount);
 
 		TErgebnisPolygon* EP1 = *j;
 
@@ -3618,10 +3523,10 @@
 			EP1->Diff = NotValid;
 		}
 	}
-	write_fortschritt("%d Ringe gelöscht\n", DelCount);
-	write_fortschritt("kleinste Ringfläche: %.3f\n", (double)MinArea / 10000.0);
+	write_fortschritt (9, "%d Ringe gelöscht\n", DelCount);
+	write_fortschritt (9, "kleinste Ringfläche: %.3f\n", (double)MinArea / 10000.0);
 
-	write_fortschritt("<-Löschen der zu kleinen Ringe beendet\n");
+	write_fortschritt (9, "<-Löschen der zu kleinen Ringe beendet\n");
 
 	SHPHandle SHPHandle = SHPCreate(FileName.c_str(), SHPT_POLYGON);
 
@@ -3734,10 +3639,7 @@
                 x[AnzPolyPoints] = (*m)->X / 100.0;
 				y[AnzPolyPoints] = (*m)->Y / 100.0;
 
-				if (DebugLevel == 9)
-				{
-					write_fortschritt("%.2f %.2f\n", x[AnzPolyPoints], y[AnzPolyPoints]);
-				}
+				if (DebugLevel >= 9) write_fortschritt (9, "%.2f %.2f\n", x[AnzPolyPoints], y[AnzPolyPoints]);
 
 				AnzPolyPoints++;
 			}
@@ -3746,15 +3648,12 @@
 			x[AnzPolyPoints] = (*m)->X / 100.0;
 			y[AnzPolyPoints] = (*m)->Y / 100.0;
 
-			if (DebugLevel == 9)
-			{
-				write_fortschritt("%.2f %.2f\n", x[AnzPolyPoints], y[AnzPolyPoints]);
-			}
+			if (DebugLevel >= 9) write_fortschritt (9, "%.2f %.2f\n", x[AnzPolyPoints], y[AnzPolyPoints]);
 
 			AnzPolyPoints++;
 		}
 
-		write_fortschritt("%d. Ergebnispolygon (Wassertiefe %.2f, %d Ringe, %d Stützstellen)\n", Count+1, AktDiff / 100.0, AnzPolyParts, AnzPolyPoints);
+		write_fortschritt (9, "%d. Ergebnispolygon (Wassertiefe %.2f, %d Ringe, %d Stützstellen)\n", Count+1, AktDiff / 100.0, AnzPolyParts, AnzPolyPoints);
 
 		if (AnzPolyParts > 0 && AnzPolyPoints > 0)
 		{
@@ -3794,7 +3693,7 @@
 	DBFClose(DBFHandle);
 	SHPClose(SHPHandle);
 
-	write_fortschritt("<-Speichern der Ergebnispolygone beendet\n");
+	write_fortschritt (9, "<-Speichern der Ergebnispolygone beendet\n");
 
 	return (true);
 }
@@ -3864,7 +3763,7 @@
 //---------------------------------------------------------------------------
 bool SaveElements(std::string FileName, TElementList *ElementList, int TopoDiff, int DebugLevel)
 {
-	write_fortschritt("->Speichern der Elemente gestartet\n");
+	write_fortschritt (9, "->Speichern der Elemente gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -3898,10 +3797,7 @@
 	int AnzPolygone = 0;
 	for (TElementList::iterator i=ElementList->begin(); i != ElementList->end(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && AnzPolygone % 5000 == 0) || (AnzPolygone > 0 && AnzPolygone % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Elementen gespeichert\n", AnzPolygone, ElementList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen gespeichert\n", AnzPolygone, ElementList->size());
 
 		TElement *Element = *i;
 
@@ -3928,9 +3824,9 @@
 	SHPClose(SHPHandle);
 	DBFClose(DBFHandle);
 
-	write_fortschritt("%d von %d Elementen gespeichert\n", AnzPolygone, ElementList->size());
+	write_fortschritt (9, "%d von %d Elementen gespeichert\n", AnzPolygone, ElementList->size());
 
-	write_fortschritt("<-Speichern der Elemente beendet\n");
+	write_fortschritt (9, "<-Speichern der Elemente beendet\n");
 
 	return (true);
 }
@@ -3938,7 +3834,7 @@
 //---------------------------------------------------------------------------
 bool SaveNodes(std::string FileName, TNodeList *NodeList, int DebugLevel)
 {
-	write_fortschritt("->Speichern der Knoten gestartet\n");
+	write_fortschritt (9, "->Speichern der Knoten gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -3973,10 +3869,7 @@
 	int Count = 0;
 	for (TNodeList::iterator i=NodeList->begin(); i != NodeList->end(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count > 0 && Count % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Knoten gespeichert\n", Count, AnzNodes);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Knoten gespeichert\n", Count, AnzNodes);
 
 		TNode *Node = *i;
 
@@ -4015,9 +3908,9 @@
 	SHPClose(SHPHandle);
 	DBFClose(DBFHandle);
 
-	write_fortschritt("%d von %d Knoten gespeichert\n", Count, AnzNodes);
+	write_fortschritt (9, "%d von %d Knoten gespeichert\n", Count, AnzNodes);
 
-	write_fortschritt("<-Speichern der Knoten beendet\n");
+	write_fortschritt (9, "<-Speichern der Knoten beendet\n");
 
 	return (true);
 }
@@ -4025,7 +3918,7 @@
 //---------------------------------------------------------------------------
 bool SaveEdges(std::string FileName, TEdgeList *EdgeList, int DebugLevel)
 {
-	write_fortschritt("->Speichern der Kanten gestartet\n");
+	write_fortschritt (9, "->Speichern der Kanten gestartet\n");
 
 	SavePRJ(FileName, DebugLevel);
 
@@ -4058,10 +3951,7 @@
 	int Count = 0;
 	for (TEdgeVector::iterator i = EdgeList->EdgeVector.begin(); i != EdgeList->EdgeVector.end(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count > 0 && Count % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Kanten gespeichert\n", Count, EdgeList->EdgeVector.size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Kanten gespeichert\n", Count, EdgeList->EdgeVector.size());
 
 		TEdge* Edge = *i;
 
@@ -4097,9 +3987,9 @@
 	DBFClose(DBFHandle);
 	SHPClose(SHPHandle);
 
-	write_fortschritt("%d von %d Kanten gespeichert\n", Count, EdgeList->EdgeVector.size());
+	write_fortschritt (9, "%d von %d Kanten gespeichert\n", Count, EdgeList->EdgeVector.size());
 
-	write_fortschritt("<-Speichern der Kanten beendet\n");
+	write_fortschritt (9, "<-Speichern der Kanten beendet\n");
 
 	return (true);
 }
@@ -4107,7 +3997,7 @@
 //---------------------------------------------------------------------------
 bool SaveXml(std::string FileName, TParameter *Parameter)
 {
-	write_fortschritt("->Speichern der Meta-Daten gestartet\n");
+	write_fortschritt (9, "->Speichern der Meta-Daten gestartet\n");
 
 	FileName = FileName + ".xml";
 
@@ -4240,7 +4130,7 @@
 
 	fclose (fh);
 
-	write_fortschritt("<-Speichern der Meta-Daten beendet\n");
+	write_fortschritt (9, "<-Speichern der Meta-Daten beendet\n");
 
 	return (true);
 }

Modified: trunk/src/parameter.cpp
===================================================================
--- trunk/src/parameter.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/parameter.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -19,7 +19,7 @@
 //---------------------------------------------------------------------------
 TParameter::TParameter(int argc, char **argv)
 {
-	write_fortschritt("->Auswertung der Kommandozeilen-Parameter gestartet\n");
+	write_fortschritt (9, "->Auswertung der Kommandozeilen-Parameter gestartet\n");
 
 	IsSetDebug = false;
 	DebugLevel = 0;
@@ -107,7 +107,7 @@
 		}
 		else if (Parameter.substr(0, 1) == "'")
 		{
-			write_fortschritt("%s\n", Parameter.c_str()+1);
+			write_fortschritt (9, "%s\n", Parameter.c_str()+1);
 		}
 		else if (Parameter.substr(0, 1) == "#" || Parameter.substr(0, 1) == "/" || Parameter.substr(0, 1) == ";")
 		{
@@ -118,7 +118,7 @@
 			///////////////////////////////////////////////
 			// DEBUG
 			///////////////////////////////////////////////
-			write_fortschritt("Parameter -OUTPUT erkannt.\n");
+			write_fortschritt (9, "Parameter -OUTPUT erkannt.\n");
 
 			if (IsSetDebug)
 			{
@@ -140,25 +140,25 @@
 				if (NewDebugLevel > DebugLevel) DebugLevel = NewDebugLevel;
 			}
 
-			write_fortschritt("OutputLevel: '%d'\n", DebugLevel);
+			write_fortschritt (9, "OutputLevel: '%d'\n", DebugLevel);
 
-			if (DebugLevel == 0) write_fortschritt("Es werden keine zusätzlichen Informationen ausgegeben\n");
-			if (DebugLevel >= 1) write_fortschritt("Es werden kurze Zwischeninformationen und mehr Fortschrittanzeigen ausgegeben\n");
-			if (DebugLevel >= 2) write_fortschritt("Es werden zusätzlich mehr Zwischeninformationen ausgegeben\n");
-			if (DebugLevel >= 3) write_fortschritt("Es werden zusätzlich deutlich mehr Zwischeninformationen ausgegeben\n");
-			if (DebugLevel >= 4) write_fortschritt("Es werden zusätzlich mehr Fortschrittanzeigen und die wichtigsten Testausgabedateien ausgegeben\n");
-			if (DebugLevel >= 5) write_fortschritt("Es werden zusätzlich alle wichtigen Testausgabedateien ausgegeben\n");
-			if (DebugLevel >= 6) write_fortschritt("Es werden zusätzlich wichtigen Testausgabedateien ausgegeben\n");
-			if (DebugLevel >= 7) write_fortschritt("Es werden zusätzlich alle Informationen ausgegeben\n");
-			if (DebugLevel >= 8) write_fortschritt("Es werden zusätzlich alle Tests durchgeführt\n");
-			if (DebugLevel == 9) write_fortschritt("Es werden alle Informationen und Testausgabedateien erzeugt\n");
+			if (DebugLevel == 0) write_fortschritt (9, "Es werden keine zusätzlichen Informationen ausgegeben\n");
+			if (DebugLevel >= 1) write_fortschritt (9, "Es werden kurze Zwischeninformationen und mehr Fortschrittanzeigen ausgegeben\n");
+			if (DebugLevel >= 2) write_fortschritt (9, "Es werden zusätzlich mehr Zwischeninformationen ausgegeben\n");
+			if (DebugLevel >= 3) write_fortschritt (9, "Es werden zusätzlich deutlich mehr Zwischeninformationen ausgegeben\n");
+			if (DebugLevel >= 4) write_fortschritt (9, "Es werden zusätzlich mehr Fortschrittanzeigen und die wichtigsten Testausgabedateien ausgegeben\n");
+			if (DebugLevel >= 5) write_fortschritt (9, "Es werden zusätzlich alle wichtigen Testausgabedateien ausgegeben\n");
+			if (DebugLevel >= 6) write_fortschritt (9, "Es werden zusätzlich wichtigen Testausgabedateien ausgegeben\n");
+			if (DebugLevel >= 7) write_fortschritt (9, "Es werden zusätzlich alle Informationen ausgegeben\n");
+			if (DebugLevel >= 8) write_fortschritt (9, "Es werden zusätzlich alle Tests durchgeführt\n");
+			if (DebugLevel == 9) write_fortschritt (9, "Es werden alle Informationen und Testausgabedateien erzeugt\n");
 		}
 		else if (Parameter.substr(0, 4) == "-PAR" || Parameter.substr(0, 4) == "-par")
 		{
 			///////////////////////////////////////////////
 			// PAR
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -PAR erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -PAR erkannt.\n");
 
 			if (IsSetPar)
 			{
@@ -178,7 +178,7 @@
 
 			IsSetPar = true;
 
-			write_fortschritt("Parameterdatei: '%s'\n", FileNamePar.c_str());
+			write_fortschritt (9, "Parameterdatei: '%s'\n", FileNamePar.c_str());
 
 			LoadPar(FileNamePar, &ParList);
 			AnzPar = ParList.size();
@@ -188,7 +188,7 @@
 			///////////////////////////////////////////////
 			// STRECKE
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -STRECKE erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -STRECKE erkannt.\n");
 
 			if (IsSetStrecke)
 			{
@@ -221,17 +221,17 @@
 
 			IsSetStrecke = true;
 
-			if (IsSetVonKm && IsSetBisKm)	write_fortschritt("Strecke: Von = %.3f km, Bis = %.3f km\n", VonKm, BisKm);
-			else if (IsSetVonKm)			write_fortschritt("Strecke: Von = %.3f km, Bis = <default>\n", VonKm);
-			else if (IsSetBisKm)			write_fortschritt("Strecke: Von = <default>, Bis = %.3f km\n", BisKm);
-			else							write_fortschritt("Strecke: Von = <default>, Bis = <default>\n");
+			if (IsSetVonKm && IsSetBisKm)	write_fortschritt (9, "Strecke: Von = %.3f km, Bis = %.3f km\n", VonKm, BisKm);
+			else if (IsSetVonKm)			write_fortschritt (9, "Strecke: Von = %.3f km, Bis = <default>\n", VonKm);
+			else if (IsSetBisKm)			write_fortschritt (9, "Strecke: Von = <default>, Bis = %.3f km\n", BisKm);
+			else							write_fortschritt (9, "Strecke: Von = <default>, Bis = <default>\n");
 		}
 		else if (Parameter.substr(0, 5) == "-DIST" || Parameter.substr(0, 5) == "-dist")
 		{
 			///////////////////////////////////////////////
 			// DIST
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -DIST erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -DIST erkannt.\n");
 
 			if (IsSetDist)
 			{
@@ -253,14 +253,14 @@
 			IsSetDist = true;
 			ProfilDistance = D * 1000 * 100; // Umrechnung von km in Meter und weiter in cm
 
-			write_fortschritt("Gewünschter Abstand der Profile: %.3f km\n", D);
+			write_fortschritt (9, "Gewünschter Abstand der Profile: %.3f km\n", D);
 		}
 		else if (Parameter.substr(0, 8) == "-SAVETRI" || Parameter.substr(0, 8) == "-savetri")
 		{
 			///////////////////////////////////////////////
 			// SAVETRI
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -SAVETRI erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -SAVETRI erkannt.\n");
 
 			if (IsSetSaveTri)
 			{
@@ -270,14 +270,14 @@
 
 			IsSetSaveTri = true;
 
-			write_fortschritt("Triangulation wird gespeichert\n");
+			write_fortschritt (9, "Triangulation wird gespeichert\n");
 		}
 		else if (Parameter.substr(0, 8) == "-SAVE2DM" || Parameter.substr(0, 8) == "-save2dm")
 		{
 			///////////////////////////////////////////////
 			// SAVE2DM
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -SAVE2DM erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -SAVE2DM erkannt.\n");
 
 			if (IsSetSave2DM)
 			{
@@ -287,14 +287,14 @@
 
 			IsSetSave2DM = true;
 
-			write_fortschritt("2DM-Netz wird gespeichert\n");
+			write_fortschritt (9, "2DM-Netz wird gespeichert\n");
 		}
 		else if (Parameter.substr(0, 8) == "-SAVESOL" || Parameter.substr(0, 8) == "-savesol")
 		{
 			///////////////////////////////////////////////
 			// SAVESOL
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -SAVESOL erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -SAVESOL erkannt.\n");
 
 			if (IsSetSaveSol)
 			{
@@ -304,14 +304,14 @@
 
 			IsSetSaveSol = true;
 
-			write_fortschritt("Wasserstände werden als SOL-Datei gespeichert\n");
+			write_fortschritt (9, "Wasserstände werden als SOL-Datei gespeichert\n");
 		}
 		else if (Parameter.substr(0, 6) == "-DELTA" || Parameter.substr(0, 6) == "-delta")
 		{
 			///////////////////////////////////////////////
 			// DELTA
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -DELTA erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -DELTA erkannt.\n");
 
 			if (IsSetDelta)
 			{
@@ -363,21 +363,21 @@
 
 			IsSetDelta = true;
 
-			if (IsSetVon && IsSetBis && IsSetDiff)	write_fortschritt("Delta: Von = %.2f Bis = %.2f Diff = %.2f\n", Von / 100.0, Bis / 100.0, Diff / 100.0);
-			else if (IsSetVon && IsSetBis)			write_fortschritt("Delta: Von = %.2f Bis = %.2f Diff = <default>\n", Von / 100.0, Bis / 100.0);
-			else if (IsSetVon && IsSetDiff)			write_fortschritt("Delta: Von = %.2f Bis = <default> Diff = %.2f\n", Von / 100.0, Diff / 100.0);
-			else if (IsSetBis && IsSetBis)			write_fortschritt("Delta: Von = <default> Bis = %.2f Diff = %.2f\n", Bis / 100.0, Diff / 100.0);
-			else if (IsSetVon)						write_fortschritt("Delta: Von = %.2f Bis = <default> Diff = <default>\n", Von / 100.0);
-			else if (IsSetBis)						write_fortschritt("Delta: Von = <default> Bis = %.2f Diff = <default>\n", Bis / 100.0);
-			else if (IsSetDiff)						write_fortschritt("Delta: Von = <default> Bis = <default> Diff = %.2f\n", Diff / 100.0);
-			else									write_fortschritt("Delta: Von = <default> Bis = <default> Diff = <default>\n");
+			if (IsSetVon && IsSetBis && IsSetDiff)	write_fortschritt (9, "Delta: Von = %.2f Bis = %.2f Diff = %.2f\n", Von / 100.0, Bis / 100.0, Diff / 100.0);
+			else if (IsSetVon && IsSetBis)			write_fortschritt (9, "Delta: Von = %.2f Bis = %.2f Diff = <default>\n", Von / 100.0, Bis / 100.0);
+			else if (IsSetVon && IsSetDiff)			write_fortschritt (9, "Delta: Von = %.2f Bis = <default> Diff = %.2f\n", Von / 100.0, Diff / 100.0);
+			else if (IsSetBis && IsSetBis)			write_fortschritt (9, "Delta: Von = <default> Bis = %.2f Diff = %.2f\n", Bis / 100.0, Diff / 100.0);
+			else if (IsSetVon)						write_fortschritt (9, "Delta: Von = %.2f Bis = <default> Diff = <default>\n", Von / 100.0);
+			else if (IsSetBis)						write_fortschritt (9, "Delta: Von = <default> Bis = %.2f Diff = <default>\n", Bis / 100.0);
+			else if (IsSetDiff)						write_fortschritt (9, "Delta: Von = <default> Bis = <default> Diff = %.2f\n", Diff / 100.0);
+			else									write_fortschritt (9, "Delta: Von = <default> Bis = <default> Diff = <default>\n");
 		}
 		else if (Parameter.substr(0, 4) == "-GEL" || Parameter.substr(0, 4) == "-gel")
 		{
 			///////////////////////////////////////////////
 			// GEL
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -GEL erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -GEL erkannt.\n");
 
 			if (IsSetGel)
 			{
@@ -391,7 +391,7 @@
 			{
 				write_warning(1105, "Es wurden keine Argumente für -GEL übergeben.\nDas Format lautet korrekt -GEL=<SPERRE|NOSPERRE>.\nGelände wirkt als Sperre.\n");
 				Sperre = true;
-                continue;
+				continue;
 			}
 
 			if (Parameter.substr(5, 6) == "SPERRE" || Parameter.substr(5, 6) == "sperre")
@@ -407,12 +407,12 @@
 				write_error(1214, "Es wurden weder SPERRE noch NOSPERRE mit -GEL verwendet.\nDas Format lautet korrekt -GEL=<SPERRE|NOSPERRE>.\n");
 			}
 
-			if (Sperre)	write_fortschritt("Gelände wirkt als Sperre\n");
-			else		write_fortschritt("Gelände wirkt nicht als Sperre\n");
+			if (Sperre)	write_fortschritt (9, "Gelände wirkt als Sperre\n");
+			else		write_fortschritt (9, "Gelände wirkt nicht als Sperre\n");
 		}
 		else if (Parameter.substr(0, 4) == "-DGM" || Parameter.substr(0, 4) == "-dgm")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -DGM erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -DGM erkannt.\n");
 
 			if (IsSetDgm)
 			{
@@ -432,11 +432,11 @@
 
 			IsSetDgm = true;
 
-			write_fortschritt("DGM-Datei: '%s'\n", FileNameDgm.c_str());
+			write_fortschritt (9, "DGM-Datei: '%s'\n", FileNameDgm.c_str());
 		}
 		else if (Parameter.substr(0, 4) == "-PRO" || Parameter.substr(0, 4) == "-pro")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -PRO erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -PRO erkannt.\n");
 
 			if (IsSetPro)
 			{
@@ -456,11 +456,11 @@
 
 			IsSetPro = true;
 
-			write_fortschritt("Profillagen-Datei: '%s'\n", FileNamePro.c_str());
+			write_fortschritt (9, "Profillagen-Datei: '%s'\n", FileNamePro.c_str());
 		}
 		else if (Parameter.substr(0, 7) == "-WSPTAG" || Parameter.substr(0, 7) == "-wsptag")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -WSPTAG erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -WSPTAG erkannt.\n");
 
 			if (IsSetWspTag)
 			{
@@ -480,13 +480,13 @@
 
 			IsSetWspTag = true;
 
-			write_fortschritt("WSP-Bezeichner: '%s'\n", WspTag.c_str());
+			write_fortschritt (9, "WSP-Bezeichner: '%s'\n", WspTag.c_str());
 
 			continue;
 		}
 		else if (Parameter.substr(0, 4) == "-WSP" || Parameter.substr(0, 4) == "-wsp")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -WSP erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -WSP erkannt.\n");
 
 			if (IsSetWsp)
 			{
@@ -506,13 +506,13 @@
 
 			IsSetWsp = true;
 
-			write_fortschritt("WSP-Datei: '%s'\n", FileNameWsp.c_str());
+			write_fortschritt (9, "WSP-Datei: '%s'\n", FileNameWsp.c_str());
 
 			continue;
 		}
 		else if (Parameter.substr(0, 4) == "-LIN" || Parameter.substr(0, 4) == "-LIN")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -LIN erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -LIN erkannt.\n");
 
 			if (Parameter.substr(4, 1) != "=")
 			{
@@ -528,11 +528,11 @@
 
 			IsSetLin = true;
 
-			write_fortschritt("Bruch- und Sperr-Datei: '%s'\n", FileNameLin.c_str());
+			write_fortschritt (9, "Bruch- und Sperr-Datei: '%s'\n", FileNameLin.c_str());
 		}
 		else if (Parameter.substr(0, 6) == "-ACHSE" || Parameter.substr(0, 6) == "-achse")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -ACHSE erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -ACHSE erkannt.\n");
 
 			if (IsSetAchse)
 			{
@@ -552,13 +552,13 @@
 
 			IsSetAchse = true;
 
-			write_fortschritt("Gewässerachse: '%s'\n", FileNameAchse.c_str());
+			write_fortschritt (9, "Gewässerachse: '%s'\n", FileNameAchse.c_str());
 
 			continue;
 		}
 		else if (Parameter.substr(0, 7) == "-GEBIET" || Parameter.substr(0, 7) == "-gebiet")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -GEBIET erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -GEBIET erkannt.\n");
 
 			if (IsSetGebiet)
 			{
@@ -578,13 +578,13 @@
 
 			IsSetGebiet = true;
 
-			write_fortschritt("Hydraulische Grenze: '%s'\n", FileNameGebiet.c_str());
+			write_fortschritt (9, "Hydraulische Grenze: '%s'\n", FileNameGebiet.c_str());
 
 			continue;
 		}
 		else if (Parameter.substr(0, 8) == "-AUSGABE" || Parameter.substr(0, 8) == "-ausgabe")
 		{
-			if (IsSetDebug) write_fortschritt("Parameter -AUSGABE erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -AUSGABE erkannt.\n");
 
 			if (IsSetAusgabe)
 			{
@@ -604,14 +604,14 @@
 
 			IsSetAusgabe = true;
 
-			write_fortschritt("Ausgabe-Datei: '%s'\n", FileNameAusgabe.c_str());
+			write_fortschritt (9, "Ausgabe-Datei: '%s'\n", FileNameAusgabe.c_str());
 		}
 		else if (Parameter.substr(0, 11) == "-NOPROJWARN" || Parameter.substr(0, 11) == "-noprojwarn")
 		{
 			///////////////////////////////////////////////
 			// NOPROJWARN
 			///////////////////////////////////////////////
-			if (IsSetDebug) write_fortschritt("Parameter -NOPROJWARN erkannt.\n");
+			if (IsSetDebug) write_fortschritt (9, "Parameter -NOPROJWARN erkannt.\n");
 
 			if (IsSetNoProjWarn)
 			{
@@ -621,7 +621,7 @@
 
 			IsSetNoProjWarn = true;
 
-			write_fortschritt("Es werden keine Warnungen zu verschiedenen Projektionen ausgegeben\n");
+			write_fortschritt (9, "Es werden keine Warnungen zu verschiedenen Projektionen ausgegeben\n");
 		}
 		else if (Parameter.substr(0, 1) == "$")
 		{
@@ -705,7 +705,7 @@
 		write_warning(1121, "Der Parameter -DELTA oder sein Argument <Diff> wurden nicht angegeben.\nEs wird <Diff> als (<Bis> minus <Von>) geteilt durch 10 angenommen.\n");
 	}
 
-	write_fortschritt("<-Auswertung der Kommandozeilen-Parameter beendet\n");
+	write_fortschritt (9, "<-Auswertung der Kommandozeilen-Parameter beendet\n");
 }
 
 

Modified: trunk/src/qhull.cpp
===================================================================
--- trunk/src/qhull.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/qhull.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -117,7 +117,7 @@
 //---------------------------------------------------------------------
 void QHull(TXYZList *XYList, TXYZList* QHull, int DebugLevel)
 {
-	write_fortschritt("->Erzeugen des Begrenzungspolygons gestartet\n");
+	write_fortschritt (9, "->Erzeugen des Begrenzungspolygons gestartet\n");
 
 	if (XYList->size() < 3)
 	{
@@ -138,11 +138,11 @@
 	}
 
 	QHull->Add(LXy);
-    if (DebugLevel > 0)	write_fortschritt("Oberen Teil der Umhüllung bilden.\n");
+	if (DebugLevel > 0)	write_fortschritt (9, "Oberen Teil der Umhüllung bilden.\n");
 	ExpandQHull(XYList, QHull, LXy, RXy);
 	QHull->Add(RXy);
-    if (DebugLevel > 0)	write_fortschritt("Unteren Teil der Umhüllung bilden.\n");
+	if (DebugLevel > 0)	write_fortschritt (9, "Unteren Teil der Umhüllung bilden.\n");
 	ExpandQHull(XYList, QHull, RXy, LXy);
 
-	write_fortschritt("<-Erzeugen des Begrenzungspolygons beendet\n");
+	write_fortschritt (9, "<-Erzeugen des Begrenzungspolygons beendet\n");
 }

Modified: trunk/src/quadtree.cpp
===================================================================
--- trunk/src/quadtree.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/quadtree.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -61,7 +61,7 @@
 
 	if (Xy)
 	{
-		write_fortschritt("%.2f,%.2f\n", Xy->X / 100.0, Xy->Y / 100.0);
+		write_fortschritt (9, "%.2f,%.2f\n", Xy->X / 100.0, Xy->Y / 100.0);
 		Summe = Summe + 1;
 	}
 

Modified: trunk/src/shape.cpp
===================================================================
--- trunk/src/shape.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/shape.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -1,3 +1,4 @@
+//
 // $Id$
 //
 // Copyright (C) 2005 STADT-LAND-FLUSS INGENIEURDIENSTE GmbH

Modified: trunk/src/test.cpp
===================================================================
--- trunk/src/test.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/test.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -43,27 +43,27 @@
 	}
 	catch (const std::runtime_error& e)
 	{
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (const std::length_error& e)
 	{
-		write_fortschritt ("Es steht leider nicht genug Speicher zur Verfügung\n", e.what());
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Es steht leider nicht genug Speicher zur Verfügung\n", e.what());
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (const std::exception& e)
 	{
-		write_fortschritt ("%s\n", e.what());
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Bitte informieren sie den Programmierer\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "%s\n", e.what());
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Bitte informieren sie den Programmierer\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (...)
 	{
-		write_fortschritt ("Unbekannter Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Bitte informieren sie den Programmierer\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Unbekannter Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Bitte informieren sie den Programmierer\n");
+		write_fortschritt (9, "Programmabbruch\n");
 
 		ReturnCode = 2;
 	}

Modified: trunk/src/tools.cpp
===================================================================
--- trunk/src/tools.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/tools.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -135,12 +135,19 @@
 }
 
 //---------------------------------------------------------------------------
-void	write_fortschritt(char *format, ...)
+void	write_fortschritt(int DebugLevel, char *format, ...)
 {
-	if (strncmp(format, "<-", 2) == 0 && strlen(Indent) >= 2) Indent[strlen(Indent)-2] = '\0';
-
+	static long LastTime = 0;
 	struct timeb Now;
-	ftime (&Now);
+	ftime(&Now);
+
+	if (DebugLevel < 9)
+	{
+		if (Now.time <= LastTime + 1)	return;
+	}
+
+	if (strncmp(format, "<-", 2) == 0 && strlen(Indent) >= 2)	Indent[strlen(Indent)-2] = '\0';
+
 	long Secs;
 	long Mins;
 	long Hours;
@@ -155,6 +162,8 @@
 	va_end(argptr);
 	fflush(fhlog);
 
+	LastTime = Now.time;
+
 	if (strncmp(format, "->", 2) == 0)	strcat(Indent, "  ");
 }
 
@@ -309,7 +318,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke wurden angefordert\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke wurden angefordert\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -348,7 +357,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke wurden angefordert\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke wurden angefordert\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -387,7 +396,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke wurden angefordert\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke wurden angefordert\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -426,7 +435,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke wurden angefordert\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke wurden angefordert\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -465,7 +474,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke wurden angefordert\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke wurden angefordert\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -504,7 +513,7 @@
 
 		if (MemMap.size() % 10 == 0)
 		{
-			write_fortschritt("%d Speicherblöcke werden verwaltet\n", MemMap.size());
+			write_fortschritt (9, "%d Speicherblöcke werden verwaltet\n", MemMap.size());
 		}
 	}
 	catch(...)
@@ -817,19 +826,19 @@
 
 		if (CR1 - CR2 < -0.2 || CR1 - CR2 > 0.2)
 		{
-			write_fortschritt("CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
+			write_fortschritt (9, "CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
 			dump_error(__FILE__, __LINE__, "Die Genauigkeit der Radien ist nicht gegeben.\n");
 		}
 
 		if (CR1 - CR3 < -0.2 || CR1 - CR3 > 0.2)
 		{
-			write_fortschritt("CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
+			write_fortschritt (9, "CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
 			dump_error(__FILE__, __LINE__, "Die Genauigkeit der Radien ist nicht gegeben.\n");
 		}
 
 		if (CR2 - CR3 < -0.2 || CR2 - CR3 > 0.2)
 		{
-			write_fortschritt("CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
+			write_fortschritt (9, "CR1 = %lf CR2 = %lf CR3=%lf\n", CR1, CR2, CR3);
 			dump_error(__FILE__, __LINE__, "Die Genauigkeit der Radien ist nicht gegeben.\n");
 		}
 
@@ -981,7 +990,7 @@
 //---------------------------------------------------------------------------
 void InterpolateWsp(TProfilList *ProfilList, TProfilList *WspProfilList, int DebugLevel)
 {
-	write_fortschritt ("->Interpolieren der Wasserstände gestartet\n");
+	write_fortschritt (9, "->Interpolieren der Wasserstände gestartet\n");
 
 	int Count = 0;
 	for (TProfilList::iterator i=ProfilList->begin(); i != ProfilList->end(); i++)
@@ -1016,17 +1025,17 @@
 		else if (UnderProfil->Station == Profil->Station)
 		{
 			Profil->Wsp = UnderProfil->Wsp;
-			if (DebugLevel >= 2) write_fortschritt("Bei Profil %.4f konnte der Wasserstand %.2f übernommen werden\n", Profil->Station / 10000.0, Profil->Wsp / 100.0);
+			write_fortschritt(DebugLevel, "Bei Profil %.4f konnte der Wasserstand %.2f übernommen werden\n", Profil->Station / 10000.0, Profil->Wsp / 100.0);
 		}
 		else if (OverProfil->Station == Profil->Station)
 		{
 			Profil->Wsp = OverProfil->Wsp;
-			if (DebugLevel >= 2) write_fortschritt("Bei Profil %.4f konnte der Wasserstand %.2f übernommen werden ßn", Profil->Station / 10000.0, Profil->Wsp / 100.0);
+			write_fortschritt(DebugLevel, "Bei Profil %.4f konnte der Wasserstand %.2f übernommen werden ßn", Profil->Station / 10000.0, Profil->Wsp / 100.0);
 		}
 		else if (UnderProfil->Station <= Profil->Station && OverProfil->Station >= Profil->Station)
 		{
 			Profil->Wsp = UnderProfil->Wsp + (OverProfil->Wsp - UnderProfil->Wsp) * (Profil->Station - UnderProfil->Station) / (OverProfil->Station - UnderProfil->Station);
-			if (DebugLevel >= 2) write_fortschritt("Bei Profil %.4f konnte der Wasserstand %.2f interpoliert werden\n", Profil->Station / 10000.0, Profil->Wsp / 100.0);
+			write_fortschritt(DebugLevel, "Bei Profil %.4f konnte der Wasserstand %.2f interpoliert werden\n", Profil->Station / 10000.0, Profil->Wsp / 100.0);
 		}
 		else
 		{
@@ -1035,20 +1044,17 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
-		{
-			write_fortschritt ("%d Profile bearbeitet\n", Count);
-		}
+		write_fortschritt (DebugLevel, "%d Profile bearbeitet\n", Count);
 	}
-	write_fortschritt ("%d Profile bearbeitet\n", Count);
+	write_fortschritt (9, "%d Profile bearbeitet\n", Count);
 
-	write_fortschritt ("<-Interpolieren der Wasserstände beendet\n");
+	write_fortschritt (9, "<-Interpolieren der Wasserstände beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void BuildPolygon(TProfilList *ProfilList, TXYZList *Polygon, int DebugLevel)
 {
-	write_fortschritt ("->Erzeugung des Begrenzungspolygons gestartet\n");
+	write_fortschritt (9, "->Erzeugung des Begrenzungspolygons gestartet\n");
 
 	if (ProfilList->size() < 2)
 	{
@@ -1097,10 +1103,7 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 100 == 0) || (Count > 0 && Count % 1000 == 0))
-		{
-			write_fortschritt("%d Begrenzungspunkte erzeugt\n", XyList->size());
-		}
+		write_fortschritt(DebugLevel, "%d Begrenzungspunkte erzeugt\n", XyList->size());
 	}
 
 	TProfilList::reverse_iterator RProfilIter = ProfilList->rbegin();
@@ -1132,26 +1135,26 @@
 	}
 */
 
-	write_fortschritt("%d Begrenzungspunkte erzeugt\n", Polygon->size());
+	write_fortschritt (9, "%d Begrenzungspunkte erzeugt\n", Polygon->size());
 
 
 	if (DebugLevel >= 9)
 	{
-		write_fortschritt("Polygon:\n");
+		write_fortschritt(DebugLevel, "Polygon:\n");
 		for (TXYZList::iterator j = Polygon->begin(); j != Polygon->end(); j++)
 		{
 			TXYZ* Xy = *j;
-			write_fortschritt("%.3f %.3f\n", Xy->X, Xy->Y);
+			write_fortschritt(DebugLevel, "%.3f %.3f\n", Xy->X, Xy->Y);
 		}
 	}
 
-	write_fortschritt ("<-Erzeugung des Begrenzungspolygons beendet\n");
+	write_fortschritt (9, "<-Erzeugung des Begrenzungspolygons beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void CheckForDuplicates(TNodeList *NodeList, TElementList *ElementList, int DebugLevel)
 {
-	write_fortschritt ("->Suche nach doppelten Knoten gestartet\n");
+	write_fortschritt (9, "->Suche nach doppelten Knoten gestartet\n");
 
 	int KnotenGeloescht = 0;
 	int ElementeGeloescht = 0;
@@ -1159,7 +1162,7 @@
 
 	if (ElementList && ElementList->size() > 0)
 	{
-		write_fortschritt ("%d Knoten und %d Elemente vorhanden\n", NodeList->size(), ElementList->size());
+		write_fortschritt (9, "%d Knoten und %d Elemente vorhanden\n", NodeList->size(), ElementList->size());
 
 		bool NetChanged = false;
 		do
@@ -1182,10 +1185,7 @@
 
 					if (Node2->Nr != 0 && Node1->Nr != Node2->Nr)
 					{
-						if (DebugLevel >= 9)
-						{
-							write_fortschritt("Lösche Knoten %d (%.3f, %.3f) ident mit Knoten %d (%.3f, %.3f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
-						}
+						write_fortschritt(DebugLevel, "Lösche Knoten %d (%.3f, %.3f) ident mit Knoten %d (%.3f, %.3f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
 
 						for (TElementList::iterator k = ElementList->begin(); k != ElementList->end(); k++)
 						{
@@ -1207,10 +1207,8 @@
 
 					if (Node2->Nr != 0 && Node1->Nr != Node2->Nr)
 					{
-						if (DebugLevel >= 9)
-						{
-							write_fortschritt("Lösche Knoten %d (%.2f, %.2f) ident mit Knoten %d (%.2f, %.2f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
-						}
+						write_fortschritt(DebugLevel, "Lösche Knoten %d (%.2f, %.2f) ident mit Knoten %d (%.2f, %.2f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
+
 						for (TElementList::iterator k = ElementList->begin(); k != ElementList->end(); k++)
 						{
 							TElement *Element2 = *k;
@@ -1231,10 +1229,8 @@
 
 					if (Node2->Nr != 0 && Node1->Nr != Node2->Nr)
 					{
-						if (DebugLevel >= 9)
-						{
-							write_fortschritt("Lösche Knoten %d (%.2f, %.2f) ident mit Knoten %d (%.2f, %.2f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
-						}
+						write_fortschritt(DebugLevel ,"Lösche Knoten %d (%.2f, %.2f) ident mit Knoten %d (%.2f, %.2f)\n", Node1->Nr, Node1->X, Node1->Y, Node2->Nr, Node2->X, Node2->Y);
+
 						for (TElementList::iterator k = ElementList->begin(); k != ElementList->end(); k++)
 						{
 							TElement *Element2 = *k;
@@ -1249,10 +1245,7 @@
 				}
 				Count++;
 
-				if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-				{
-					write_fortschritt("%d von %d Elementen, %d doppelte Knoten gefunden\n", Count, ElementList->size(), SollKnotenGeloescht);
-				}
+				write_fortschritt(DebugLevel, "%d von %d Elementen, %d doppelte Knoten gefunden\n", Count, ElementList->size(), SollKnotenGeloescht);
 			}
 
 			if (SollKnotenGeloescht > 0)
@@ -1264,10 +1257,7 @@
 				while (i != NodeList->end())
 				{
 					Count++;
-					if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-					{
-						write_fortschritt("%d von %d Knoten, %d von %d Knoten gelöscht\n", Count, AnzNodes, KnotenGeloescht, SollKnotenGeloescht);
-					}
+					write_fortschritt(DebugLevel, "%d von %d Knoten, %d von %d Knoten gelöscht\n", Count, AnzNodes, KnotenGeloescht, SollKnotenGeloescht);
 
 					TNode *Node = *i;
 
@@ -1295,10 +1285,7 @@
 		for (TElementList::iterator i = ElementList->begin(); i != ElementList->end(); i++)
 		{
 			Count++;
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-			{
-				write_fortschritt("%d von %d Elementen, %d Elemente gelöscht\n", Count, ElementList->size(), ElementeGeloescht);
-			}
+			write_fortschritt(DebugLevel, "%d von %d Elementen, %d Elemente gelöscht\n", Count, ElementList->size(), ElementeGeloescht);
 
 			TElement *Element = *i;
 
@@ -1315,7 +1302,7 @@
 	}
 	else
 	{
-		write_fortschritt ("%d Knoten und keine Elemente vorhanden\n", NodeList->size());
+		write_fortschritt (9, "%d Knoten und keine Elemente vorhanden\n", NodeList->size());
 
 		NodeList->SortByXY();
 
@@ -1342,22 +1329,19 @@
 
 			Count++;
 
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-			{
-				write_fortschritt("%d von %d Knoten, %d Knoten gelöscht\n", Count, NodeList->size(), KnotenGeloescht);
-			}
+			write_fortschritt(DebugLevel, "%d von %d Knoten, %d Knoten gelöscht\n", Count, NodeList->size(), KnotenGeloescht);
 		}
 	}
 
-	write_fortschritt ("%d Knoten gelöscht, %d Elemente gelöscht\n", KnotenGeloescht, ElementeGeloescht);
+	write_fortschritt (9, "%d Knoten gelöscht, %d Elemente gelöscht\n", KnotenGeloescht, ElementeGeloescht);
 
-	write_fortschritt ("<-Suche nach doppelten Knoten beendet\n");
+	write_fortschritt (9, "<-Suche nach doppelten Knoten beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void BuildEdgeList(TNodeList* NodeList, TElementList* ElementList, TEdgeList* EdgeList, int DebugLevel)
 {
-	write_fortschritt ("->Erzeugung der Kanten gestartet\n");
+	write_fortschritt (9, "->Erzeugung der Kanten gestartet\n");
 
 	NodeList->ClearEdgeIndex();
 
@@ -1365,7 +1349,7 @@
 
 	// Erst mal genug Speicher besorgen
 	EdgeList->EdgeVector.reserve((size_t)(ElementList->size() * 2.0 + 1.0));
-	write_fortschritt("Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeList->EdgeVector.capacity());
+	write_fortschritt (9, "Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeList->EdgeVector.capacity());
 	TEdge* NewEdge = 0;
 	TEdge* Edge = 0;
 
@@ -1536,12 +1520,9 @@
 		}
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count > 0 && Count % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Elementen, %d Kanten erzeugt\n", Count, ElementList->size(), EdgeList->Anz);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen, %d Kanten erzeugt\n", Count, ElementList->size(), EdgeList->Anz);
 	}
-	write_fortschritt("%d von %d Elementen, %d Kanten erzeugt\n", Count, ElementList->size(), EdgeList->Anz);
+	write_fortschritt (9, "%d von %d Elementen, %d Kanten erzeugt\n", Count, ElementList->size(), EdgeList->Anz);
 
 	if (DebugLevel >= 9)
 	{
@@ -1549,10 +1530,7 @@
 		TEdgeVector::iterator i = EdgeList->EdgeVector.begin();
 		while (i != EdgeList->EdgeVector.end())
 		{
-			if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10000 == 0) || (Count > 0 && Count % 100000 == 0))
-			{
-				write_fortschritt("%d von %d Kanten getestet\n", Count, EdgeList->EdgeVector.size());
-			}
+			write_fortschritt(DebugLevel, "%d von %d Kanten getestet\n", Count, EdgeList->EdgeVector.size());
 
 			TEdge *Edge = *i++;
 
@@ -1568,16 +1546,16 @@
 
 			Count++;
 		}
-		write_fortschritt("%d von %d Kanten getestet\n", Count, EdgeList->EdgeVector.size());
+		write_fortschritt (9, "%d von %d Kanten getestet\n", Count, EdgeList->EdgeVector.size());
 	}
 
-	write_fortschritt ("<-Erzeugung der Kanten beendet\n");
+	write_fortschritt (9, "<-Erzeugung der Kanten beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void TransferWsp(TProfilList *ProfilList, TNodeList *NodeList, TGewaesserAchseList *GewaesserAchseList, TProfilList* SperrenList, TNodeList *NassNodeList, bool Sperre, int DebugLevel)
 {
-	write_fortschritt ("->Übertragen der Wasserstände gestartet\n");
+	write_fortschritt (9, "->Übertragen der Wasserstände gestartet\n");
 
 	NodeList->ClearWsp();
 
@@ -1588,10 +1566,7 @@
 	int Count = 0;
 	for (TProfilList::iterator i = ProfilList->begin(); i != ProfilList->end(); i++)
 	{
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 100 == 0) || (Count > 0 && Count % 1000 == 0))
-		{
-			write_fortschritt("%d von %d Profilen übertragen, %d Wasserstände übertragen\n", Count, ProfilList->size(), WspCount);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Profilen übertragen, %d Wasserstände übertragen\n", Count, ProfilList->size(), WspCount);
 
 		TProfil* Profil = *i;
 
@@ -1620,7 +1595,7 @@
 		{
 			StartNodeList = NodeList->FindAllByXY(X, Y, Radius);
 			Radius = Radius * 2.0;
-			if (DebugLevel >= 9)	write_fortschritt("Suchradius ist %.0f\n", Radius);
+			write_fortschritt(DebugLevel, "Suchradius ist %.0f\n", Radius);
 		} while (StartNodeList->size() == 0);
 
 		///////////////////////////////////////////////////////////
@@ -1642,10 +1617,7 @@
        	    }
         }
 
-		if (DebugLevel >= 8)
-        {
-        	write_fortschritt("dichtester Knoten zu Profil %.4f: (%ld,%ld)\n", Station / 10000.0, NearestNode->X, NearestNode->Y);
-        }
+		write_fortschritt(DebugLevel, "dichtester Knoten zu Profil %.4f: (%ld,%ld)\n", Station / 10000.0, NearestNode->X, NearestNode->Y);
 
 		if (NearestNode->Z < Wsp)
         {
@@ -1655,17 +1627,14 @@
 
         Temp1NodeList->Add(NearestNode);
 
-        while (Temp1NodeList->size() > 0)
+		while (Temp1NodeList->size() > 0)
         {
 			if (DebugLevel >= 9)
 			{
 				SaveNodes("temp1.shp", Temp1NodeList, 8);
 			}
 
-			if (DebugLevel >= 8)
-			{
-				write_fortschritt("%d Knoten in Temp1 bei Profil %.4f\n", Temp1NodeList->size(), Station / 10000.0);
-			}
+			write_fortschritt(DebugLevel ,"%d Knoten in Temp1 bei Profil %.4f\n", Temp1NodeList->size(), Station / 10000.0);
 
 			// In Temp1 sind nun alle Nassen Knoten
             // In Temp2 kommen alle potentiellen nassen Knoten
@@ -1698,18 +1667,12 @@
 						if (Edge->Node1 == Node && Edge->Node2->Wsp == NoWsp && (false == Sperre || Edge->Node2->Z < Wsp))
 						{
 							Temp2NodeList->AddUnique(Edge->Node2);
-							if (DebugLevel >= 9)
-							{
-								write_fortschritt("möglicher nasser Knoten bei Profil %.4f: (%ld,%ld,%.3f)\n", Station / 10000.0, Edge->Node2->X, Edge->Node2->Y, Wsp / 100.0);
-							}
+							write_fortschritt(DebugLevel, "möglicher nasser Knoten bei Profil %.4f: (%ld,%ld,%.3f)\n", Station / 10000.0, Edge->Node2->X, Edge->Node2->Y, Wsp / 100.0);
 						}
 						if (Edge->Node2 == Node && Edge->Node1->Wsp == NoWsp && (false == Sperre || Edge->Node1->Z < Wsp))
 						{
 							Temp2NodeList->AddUnique(Edge->Node1);
-							if (DebugLevel >= 9)
-							{
-								write_fortschritt("möglicher nasser Knoten bei Profil %.4f: (%ld,%ld,%.3f)\n", Station / 10000.0, Edge->Node1->X, Edge->Node1->Y, Wsp / 100.0);
-							}
+							write_fortschritt(DebugLevel, "möglicher nasser Knoten bei Profil %.4f: (%ld,%ld,%.3f)\n", Station / 10000.0, Edge->Node1->X, Edge->Node1->Y, Wsp / 100.0);
 						}
 					}
     	    		AktEdgeIndex = NextEdgeIndex;
@@ -1718,7 +1681,7 @@
 
 			if (DebugLevel >= 9)
 			{
-				write_fortschritt("%d Knoten in Temp2 bei Profil %.4f\n", Temp2NodeList->size(), Station / 10000.0);
+				write_fortschritt (9, "%d Knoten in Temp2 bei Profil %.4f\n", Temp2NodeList->size(), Station / 10000.0);
 			}
 
             // In Temp2 sind nun alle potentiellen nassen Knoten
@@ -1751,11 +1714,8 @@
 							
 							NassNodeList->Add(Node);
 
-							if (DebugLevel >= 9)
-							{
-								write_fortschritt("nasser Knoten bei Profil %.4f: (%ld,%ld,%.2f)\n", Station / 10000.0, Node->X, Node->Y, Wsp / 100.0);
-							}
-                        }
+							write_fortschritt(DebugLevel, "nasser Knoten bei Profil %.4f: (%ld,%ld,%.2f)\n", Station / 10000.0, Node->X, Node->Y, Wsp / 100.0);
+						}
 
                     	Temp1NodeList->Add(Node);
                         break;
@@ -1763,41 +1723,38 @@
     	    		AktEdgeIndex = NextEdgeIndex;
 				}
 
-	        	if (DebugLevel >= 9)
-                {
-	                write_fortschritt("nasser Knoten bei Profil %.4f: (%ld,%ld)\n", Station / 10000.0, Node->X, Node->Y);
-                }
-        	}
+				write_fortschritt(DebugLevel, "nasser Knoten bei Profil %.4f: (%ld,%ld)\n", Station / 10000.0, Node->X, Node->Y);
+			}
 
 			Temp2NodeList->clear();
         }
 
         Count++;
 	}
-	write_fortschritt("%d von %d Knoten getestet, %d Wasserstände übertragen\n", Count, NodeList->size(), WspCount);
+	write_fortschritt (9, "%d von %d Knoten getestet, %d Wasserstände übertragen\n", Count, NodeList->size(), WspCount);
 
 	delete Temp1NodeList;
 	delete Temp2NodeList;
 
 	if (Sperre)
 	{
-		write_fortschritt ("->Zurücksetzen der Wasserstände gestartet\n");
+		write_fortschritt (9, "->Zurücksetzen der Wasserstände gestartet\n");
 		for (TNodeList::iterator i = NodeList->begin(); i != NodeList->end(); i++)
 		{
 			TNode* Node = *i;
 
 			if (Node->Z > Node->Wsp)	Node->Wsp = NoWsp;
 		}
-		write_fortschritt ("<-Zurücksetzen der Wasserstände beendet\n");
+		write_fortschritt (9, "<-Zurücksetzen der Wasserstände beendet\n");
 	}
 
-	write_fortschritt ("<-Übertragen der Wasserstände beendet\n");
+	write_fortschritt (9, "<-Übertragen der Wasserstände beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void TransferWspFromGradient(TProfilList *GradientenList, TNodeList *NodeList, TEdgeList *Temp2EdgeList, double AvgDistance, int DebugLevel)
 {
-	if (DebugLevel >= 1)	write_fortschritt ("->Übertragen der Wasserstände durch Gradienten gestartet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "->Übertragen der Wasserstände durch Gradienten gestartet\n");
 
 	int WspCount = 0;
 	int Count = 0;
@@ -1805,10 +1762,7 @@
 	{
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0))
-		{
-			write_fortschritt("%d von %d Gradienten getestet, %d Wasserstände übertragen\n", Count, GradientenList->size(), WspCount);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Gradienten getestet, %d Wasserstände übertragen\n", Count, GradientenList->size(), WspCount);
 
 		TProfil* Gradient = *i;
 
@@ -1871,15 +1825,15 @@
 		}
 	}
 
-	if (DebugLevel >= 1)	write_fortschritt("%d von %d Gradienten getestet, %d Wasserstände übertragen\n", Count, GradientenList->size(), WspCount);
+	if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "%d von %d Gradienten getestet, %d Wasserstände übertragen\n", Count, GradientenList->size(), WspCount);
 
-	if (DebugLevel >= 1)	write_fortschritt ("<-Übertragen der Wasserstände durch Gradienten beendet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "<-Übertragen der Wasserstände durch Gradienten beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void TransferWspFromRohr(TProfilList *RohreList, TNodeList *NodeList, TEdgeList *Temp2EdgeList, double AvgDistance, int DebugLevel)
 {
-	if (DebugLevel >= 1)	write_fortschritt ("->Übertragen der Wasserstände durch Rohre gestartet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "->Übertragen der Wasserstände durch Rohre gestartet\n");
 
 	int WspCount = 0;
 	int Count = 0;
@@ -1887,10 +1841,7 @@
 	{
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0))
-		{
-			write_fortschritt("%d von %d Rohren getestet, %d Wasserstände übertragen\n", Count, RohreList->size(), WspCount);
-		}
+		if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "%d von %d Rohren getestet, %d Wasserstände übertragen\n", Count, RohreList->size(), WspCount);
 
 		TProfil* Rohr = *i;
 
@@ -2005,15 +1956,15 @@
 		}
 
 	}
-	if (DebugLevel >= 1)	write_fortschritt("%d von %d Rohren getestet, %d Wasserstände übertragen\n", Count, RohreList->size(), WspCount);
+	if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "%d von %d Rohren getestet, %d Wasserstände übertragen\n", Count, RohreList->size(), WspCount);
 
-	if (DebugLevel >= 1)	write_fortschritt ("<-Übertragen der Wasserstände durch Rohre beendet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "<-Übertragen der Wasserstände durch Rohre beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void GetWspFromNodeListToGradient(TNodeList* NodeList, TProfilList* GradientenList, double AvgDistance, int DebugLevel)
 {
-	if (DebugLevel >= 1)	write_fortschritt ("->Ermittlung der Wasserstände für Gradienten gestartet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "->Ermittlung der Wasserstände für Gradienten gestartet\n");
 
 	int Count = 0;
 	for (TProfilList::iterator i = GradientenList->begin(); i != GradientenList->end(); i++)
@@ -2022,10 +1973,7 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0))
-		{
-			write_fortschritt("Gradient %d von %d\n", Count, GradientenList->size());
-		}
+		if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "Gradient %d von %d\n", Count, GradientenList->size());
 
 		if (Gradient->Wsp != NoWsp)	continue;
 
@@ -2042,18 +1990,18 @@
 		if (Found)
 		{
 			Gradient->Wsp = Wsp;
-			if (DebugLevel >= 6)	write_fortschritt("Gradient %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
+			if (DebugLevel >= 6)	write_fortschritt(DebugLevel, "Gradient %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
 		}
 	}
-	if (DebugLevel >= 1)	write_fortschritt("Gradient %d von %d\n", Count, GradientenList->size());
+	if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "Gradient %d von %d\n", Count, GradientenList->size());
 
-	if (DebugLevel >= 1)	write_fortschritt ("<-Ermittlung der Wasserstände für Gradienten beendet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "<-Ermittlung der Wasserstände für Gradienten beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void GetWspFromNodeListToRohr(TNodeList* NodeList, TProfilList* RohreList, double AvgDistance, int DebugLevel)
 {
-	if (DebugLevel >= 1)	write_fortschritt ("->Ermittlung der Wasserstände für Rohre gestartet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "->Ermittlung der Wasserstände für Rohre gestartet\n");
 
 	int Count = 0;
 	for (TProfilList::iterator i = RohreList->begin(); i != RohreList->end(); i++)
@@ -2062,10 +2010,7 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0))
-		{
-			write_fortschritt("Rohr %d von %d\n", Count, RohreList->size());
-		}
+		if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "Rohr %d von %d\n", Count, RohreList->size());
 
 		if (Rohr->Wsp != NoWsp)	continue;
 
@@ -2082,7 +2027,7 @@
 		if (Found1 && Wsp != NoWsp)
 		{
 			Rohr->Wsp = Wsp;
-			if (DebugLevel >= 6)	write_fortschritt("Rohr %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
+			if (DebugLevel >= 6)	write_fortschritt(DebugLevel, "Rohr %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
 			continue;
 		}
 
@@ -2096,13 +2041,13 @@
 		if (Found2 && Wsp != NoWsp)
 		{
 			Rohr->Wsp = Wsp;
-			if (DebugLevel >= 6)	write_fortschritt("Rohr %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
+			if (DebugLevel >= 6)	write_fortschritt(DebugLevel, "Rohr %d hat Wasserstand %.3f\n", Count, Wsp / 100.0);
 			continue;
 		}
 	}
-	if (DebugLevel >= 1)	write_fortschritt("Rohr %d von %d\n", Count, RohreList->size());
+	if (DebugLevel >= 1)	write_fortschritt(DebugLevel, "Rohr %d von %d\n", Count, RohreList->size());
 
-	if (DebugLevel >= 1)	write_fortschritt ("<-Ermittlung der Wasserstände für Rohre beendet\n");
+	if (DebugLevel >= 1)	write_fortschritt (9, "<-Ermittlung der Wasserstände für Rohre beendet\n");
 }
 
 //---------------------------------------------------------------------------
@@ -2277,33 +2222,33 @@
 
 	if (fabs(TPX - Px) > 0.1)
 	{
-		write_fortschritt("%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
-		write_fortschritt("%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
-		write_fortschritt("%.2f,%.2f\n", Px, Py);
+		write_fortschritt (9, "%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
+		write_fortschritt (9, "%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
+		write_fortschritt (9, "%.2f,%.2f\n", Px, Py);
 		dump_error(__FILE__, __LINE__, "TPX nicht korrekt");
 	}
 
 	if (fabs(TPY - Py) > 0.1)
 	{
-		write_fortschritt("%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
-		write_fortschritt("%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
-		write_fortschritt("%.2f,%.2f\n", Px, Py);
+		write_fortschritt (9, "%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
+		write_fortschritt (9, "%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
+		write_fortschritt (9, "%.2f,%.2f\n", Px, Py);
 		dump_error(__FILE__, __LINE__, "TPY nicht korrekt");
 	}
 
 	if (fabs(TSX - Px) > 0.1)
 	{
-		write_fortschritt("%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
-		write_fortschritt("%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
-		write_fortschritt("%.2f,%.2f\n", Px, Py);
+		write_fortschritt (9, "%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
+		write_fortschritt (9, "%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
+		write_fortschritt (9, "%.2f,%.2f\n", Px, Py);
 		dump_error(__FILE__, __LINE__, "TSX nicht korrekt");
 	}
 
 	if (fabs(TSY - Py) > 0.1)
 	{
-		write_fortschritt("%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
-		write_fortschritt("%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
-		write_fortschritt("%.2f,%.2f\n", Px, Py);
+		write_fortschritt (9, "%d,%d %d,%d\n", P0x, P0y, P1x, P1y);
+		write_fortschritt (9, "%d,%d %d,%d\n", S0x, S0y, S1x, S1y);
+		write_fortschritt (9, "%.2f,%.2f\n", Px, Py);
 		dump_error(__FILE__, __LINE__, "TSY nicht korrekt");
 	}
 
@@ -2554,7 +2499,7 @@
 //---------------------------------------------------------------------------
 void NassTrockenBerechnung(TNodeList *NodeList, TEdgeList *EdgeList, TErgebnisPolygonList* ErgebnisPolygone, TProfilList* RohreList, TProfilList* GradientenList, double AvgDistance, int Von, int Bis, int Diff, int DebugLevel)
 {
-	write_fortschritt("->Ermittlung der Überschwemmungsgrenzen gestartet\n");
+	write_fortschritt (9, "->Ermittlung der Überschwemmungsgrenzen gestartet\n");
 
 	NodeList->SortByXY();
 
@@ -2569,7 +2514,7 @@
 	{
 		AnzWetBoundaries = 0;
 
-		write_fortschritt("Wasserstand %.3f zwischen %.3f und %.3f wird bearbeitet\n", DeltaTopo / 100.0, Von / 100.0, Bis / 100.0);
+		write_fortschritt (9, "Wasserstand %.3f zwischen %.3f und %.3f wird bearbeitet\n", DeltaTopo / 100.0, Von / 100.0, Bis / 100.0);
 
 		// Zuerst alles wieder wie gehabt einstellen
 		// Bloss das die Topographie etwas angehoben wird
@@ -2586,7 +2531,7 @@
 			else                            Node->Wsp = SaveNode->Wsp;
 		}
 
-		if (DebugLevel >= 2)	write_fortschritt("Erste Kanten mit Nass/Trocken-Übergang ermitteln\n");
+		if (DebugLevel >= 2)	write_fortschritt (9, "Erste Kanten mit Nass/Trocken-Übergang ermitteln\n");
 
 		// Die Kanten bestimmen, die an einem Ende einen nassen und am anderen Ende einen trockenen Knoten haben
 		// Dies sind die Anfangskanten
@@ -2605,7 +2550,7 @@
 			}
 		}
 
-		if (DebugLevel >= 2)	write_fortschritt("Wasserstände ausbreiten\n");
+		if (DebugLevel >= 2)	write_fortschritt (9, "Wasserstände ausbreiten\n");
 
 		TEdgeList *TempEdgeList = new TEdgeList();
 		int Changed = 0;
@@ -2744,17 +2689,17 @@
 
 		// Hier nur die Verwaltungsinformationen, aber nicht die richtigen Kanten löschen
 		// Es waren nur geliehene Kanten
-		write_fortschritt("->Freigeben des Speichers der 1. temporären Kanten gestartet\n");
+		write_fortschritt (9, "->Freigeben des Speichers der 1. temporären Kanten gestartet\n");
 		TempEdgeList->Empty();
 		delete TempEdgeList;
-		write_fortschritt("<-Freigeben des Speichers der 1. temporären Kanten beendet\n");
+		write_fortschritt (9, "<-Freigeben des Speichers der 1. temporären Kanten beendet\n");
 
 		// Hier nur die Verwaltungsinformationen, aber nicht die richtigen Kanten löschen
 		// Es waren nur geliehene Kanten
-		write_fortschritt("->Freigeben des Speichers der 2. temporären Kanten gestartet\n");
+		write_fortschritt (9, "->Freigeben des Speichers der 2. temporären Kanten gestartet\n");
 		Temp2EdgeList->Empty();
 		delete Temp2EdgeList;
-		write_fortschritt("<-Freigeben des Speichers der 2. temporären Kanten beendet\n");
+		write_fortschritt (9, "<-Freigeben des Speichers der 2. temporären Kanten beendet\n");
 
 		// Jetzt sind alle Knoten nass, die Nass sein sollen
 
@@ -2768,7 +2713,7 @@
 			Edge->Ready = false;
 		}
 
-		if (DebugLevel >= 2)	write_fortschritt("Nass/Trocken-Übergänge auf den Kanten bestimmen\n");
+		if (DebugLevel >= 2)	write_fortschritt (9, "Nass/Trocken-Übergänge auf den Kanten bestimmen\n");
 
 		// Jetzt die Nass/Trocken Übergänge bestimmen
 		int FoundWetDry = 0;
@@ -2846,7 +2791,7 @@
 
 		// Jetzt sind alle Nass/Trockenübergänge bestimmt
 
-		if (DebugLevel >= 2)	write_fortschritt("Nass/Trocken-Übergänge verbinden\n");
+		if (DebugLevel >= 2)	write_fortschritt (9, "Nass/Trocken-Übergänge verbinden\n");
 
 		// Jetzt muss man sie nur noch verbinden
 
@@ -2924,12 +2869,12 @@
 		Node->Wsp = SaveNode->Wsp;
 	}
 
-	write_fortschritt("->Freigeben des Speichers der kopierten Knoten gestartet\n");
+	write_fortschritt (9, "->Freigeben des Speichers der kopierten Knoten gestartet\n");
 	delete SaveNodeList;
 	SaveNodeList = 0;
-	write_fortschritt("<-Freigeben des Speichers der kopierten Knoten beendet\n");
+	write_fortschritt (9, "<-Freigeben des Speichers der kopierten Knoten beendet\n");
 
-	write_fortschritt("<-Ermittlung der Überschwemmungsgrenzen beendet\n");
+	write_fortschritt (9, "<-Ermittlung der Überschwemmungsgrenzen beendet\n");
 }
 
 

Modified: trunk/src/tools.h
===================================================================
--- trunk/src/tools.h	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/tools.h	2009-11-12 21:44:47 UTC (rev 150)
@@ -40,7 +40,7 @@
 void		  			dump_error(char *file, int line, char *format, ...);
 void					write_error(int ErrorNr,char *format, ...);
 void					write_warning(int WarningNr, char *format, ...);
-void					write_fortschritt(char *format, ...);
+void					write_fortschritt(int DebugLevel, char *format, ...);
 void 					GetTimeAndDate(long* Secs, long* Mins, long* Hours, long* Days = 0, long* Months = 0, long* Years = 0);
 void    				Swap2Bytes(void *Bytes);
 void    				Swap4Bytes(void *Bytes);

Modified: trunk/src/tri.cpp
===================================================================
--- trunk/src/tri.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/tri.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -24,7 +24,7 @@
 //---------------------------------------------------------------------
 void FindLeftMostNeighbours(TNodeList* NodeList, TNode* *Node1, TNode* *Node2)
 {
-	write_fortschritt("->Suchen der Startkante gestartet\n");
+	write_fortschritt (9, "->Suchen der Startkante gestartet\n");
 
 	double Min1 = 0.0;
 	double Min2 = 0.0;
@@ -68,9 +68,9 @@
 			*Node2 = Node;
 		}
 	}
-	if (*Node1 && *Node2)	write_fortschritt("Kante: %d - %d als Startkante\n", (*Node1)->Nr, (*Node2)->Nr);
+	if (*Node1 && *Node2)	write_fortschritt (9, "Kante: %d - %d als Startkante\n", (*Node1)->Nr, (*Node2)->Nr);
 
-	write_fortschritt("<-Suchen der Startkante beendet\n");
+	write_fortschritt (9, "<-Suchen der Startkante beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -299,7 +299,7 @@
 //---------------------------------------------------------------------
 bool	Triangulate(TNodeList *NodeList, TElementList *ElementList, TXYZList* BegrenzungsPolygon, int DebugLevel)
 {
-	write_fortschritt("->Triangulierung der Knoten gestartet\n");
+	write_fortschritt (9, "->Triangulierung der Knoten gestartet\n");
 
 	if (NodeList->size() < 3)
 	{
@@ -342,13 +342,13 @@
 
 	// Erst mal genug Speicher besorgen
     ElementList->reserve((size_t)(NodeList->size() * 2.2));
-	write_fortschritt("Kapazität der Elementliste wurde auf %d erhöht\n", ElementList->capacity());
+	write_fortschritt (9, "Kapazität der Elementliste wurde auf %d erhöht\n", ElementList->capacity());
 
 	TEdgeList *EdgeList = new TEdgeList;
 
 	// Erst mal genug Speicher besorgen
-    EdgeList->EdgeVector.reserve((size_t)(NodeList->size() * 2.2 * 2.2));
-	write_fortschritt("Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeList->EdgeVector.capacity());
+	EdgeList->EdgeVector.reserve((size_t)(NodeList->size() * 2.2 * 2.2));
+	write_fortschritt (9, "Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeList->EdgeVector.capacity());
 
 	TEdge* NewEdge = new TEdge(NewNode1, NewNode2);
 	EdgeList->Add(NewEdge);
@@ -384,7 +384,7 @@
 
 			int DiffMSec = NowMSec - StartMSec;
 
-			write_fortschritt("%d von ca. %d Elementen erzeugt\n", ElementList->size(), NodeList->size() * 2);
+			write_fortschritt (9, "%d von ca. %d Elementen erzeugt\n", ElementList->size(), NodeList->size() * 2);
 
 			if (ElementList->size() > 0)
 			{
@@ -397,22 +397,22 @@
 				double TimePerElement = (MitTimeBisher *  EleBisher + MitTimeNoch * EleGesamt - MitTimeNoch * EleBisher) / EleGesamt;
 				double RestMSec = (EleGesamt - EleBisher) * TimePerElement;
 
-				write_fortschritt("Dauer bisher: %.0f sec -> Dauer noch ca. %.0f sec\n", DiffMSec / 1000.0, RestMSec / 1000.0);
+				write_fortschritt (9, "Dauer bisher: %.0f sec -> Dauer noch ca. %.0f sec\n", DiffMSec / 1000.0, RestMSec / 1000.0);
 			}
 		}
 	}
 
-	write_fortschritt("->Freigeben des Speichers der Kanten gestartet\n");
+	write_fortschritt (9, "->Freigeben des Speichers der Kanten gestartet\n");
 	delete EdgeList;
 	EdgeList = 0;
-	write_fortschritt("<-Freigeben des Speichers der Kanten beendet\n");
+	write_fortschritt (9, "<-Freigeben des Speichers der Kanten beendet\n");
 
 	NodeList->ReScale();
 
 // SaveNet("_tmp.2dm", NodeList, ElementList, DebugLevel);
 
 
-	write_fortschritt("->Löschen der überschüssigen Elemente gestartet\n");
+	write_fortschritt (9, "->Löschen der überschüssigen Elemente gestartet\n");
 
 	int Count = 0;
 	for (TElementList::iterator i=ElementList->begin(); i != ElementList->end(); i++)
@@ -461,15 +461,12 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 5000 == 0) || (Count % 50000 == 0))
-		{
-			write_fortschritt("%d von %d Elementen überprüft\n", Count, ElementList->size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen überprüft\n", Count, ElementList->size());
 	}
 
-	write_fortschritt("<-Löschen der überschüssigen Elemente beendet\n");
+	write_fortschritt (9, "<-Löschen der überschüssigen Elemente beendet\n");
 
-	write_fortschritt("<-Triangulierung der Knoten beendet\n");
+	write_fortschritt (9, "<-Triangulierung der Knoten beendet\n");
 
 	return (true);
 }

Modified: trunk/src/wsplgen.cpp
===================================================================
--- trunk/src/wsplgen.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/wsplgen.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -33,6 +33,7 @@
 #endif
 
 #include <stdexcept>
+#include <sys/timeb.h>
 
 #include "wsplgen.h"
 #include "parameter.h"
@@ -71,12 +72,12 @@
 	long Secs, Mins, Hours, Days, Months, Years;
 	GetTimeAndDate(&Secs, &Mins, &Hours, &Days, &Months, &Years);
 
-	write_fortschritt ("->WSPLGEN Version %s vom %s am %04d-%02d-%02d gestartet\n", Version, __DATE__, Years, Months, Days);
-	write_fortschritt ("programmiert durch:\n");
-	write_fortschritt ("STADT-LAND-FLUSS INGENIEURDIENSTE GmbH\n");
-	write_fortschritt ("Auf dem Hollen 12, 30165 Hannover\n");
-	write_fortschritt ("telefon: +49 (0) 511 353196-00\n");
-	write_fortschritt ("email: info at s-l-f.de\n");
+	write_fortschritt (9, "->WSPLGEN Version %s vom %s am %04d-%02d-%02d gestartet\n", Version, __DATE__, Years, Months, Days);
+	write_fortschritt (9, "programmiert durch:\n");
+	write_fortschritt (9, "STADT-LAND-FLUSS INGENIEURDIENSTE GmbH\n");
+	write_fortschritt (9, "Auf dem Hollen 12, 30165 Hannover\n");
+	write_fortschritt (9, "telefon: +49 (0) 511 353196-00\n");
+	write_fortschritt (9, "email: info at s-l-f.de\n");
 
 	// Hier werden alle Profile drin verwaltet
 	TProfilList *ProfilList = new TProfilList();
@@ -226,10 +227,10 @@
 			CheckForDuplicates(NodeList, ElementList, Parameter.DebugLevel);
 		}
 
-		write_fortschritt("->Freigeben des Speichers der Gräben gestartet\n");
+		write_fortschritt (9, "-> des Speichers der Gräben gestartet\n");
 		delete GrabenList;
 		GrabenList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Gräben beendet\n");
+		write_fortschritt (9, "<- des Speichers der Gräben beendet\n");
 
 		// Hier werden die Kanten drin verwaltet
 		// Die Kanten werden im Moment noch aus den Elementen generiert
@@ -249,7 +250,7 @@
 		// wird sie für die spätere Verwendung zwischengespeichert
 		double AvgDistance = EdgeList->AvgDistance;
 
-		write_fortschritt("Die mittlere Kantenlänge beträgt %.2f m\n", AvgDistance / 100.0);
+		write_fortschritt (9, "Die mittlere Kantenlänge beträgt %.2f m\n", AvgDistance / 100.0);
 
 		// Nachdem die durchschnittliche Kantenlänge bekannt ist,
 		// werden die Profile entsprechend fein interpoliert
@@ -275,20 +276,20 @@
 		delete NassNodeList;
 		NassNodeList = 0;
 
-		write_fortschritt("->Freigeben des Speichers der Gewaesserachse gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Gewaesserachse gestartet\n");
 		delete GewaesserAchseList;
 		GewaesserAchseList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Gewaesserachse beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Gewaesserachse beendet\n");
 
-		write_fortschritt("->Freigeben des Speichers der Dämme gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Dämme gestartet\n");
 		delete SperrenList;
 		SperrenList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Dämme beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Dämme beendet\n");
 
-		write_fortschritt("->Freigeben des Speichers der Profile gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Profile gestartet\n");
 		delete ProfilList;
 		ProfilList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Profile beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Profile beendet\n");
 
 		// Wurde der Wert für das Argument 'Bis' beim Parameter -DELTA nicht gesetzt
 		// so ist jetzt die Zeit das nachzuholen
@@ -329,24 +330,24 @@
 
 		NassTrockenBerechnung(NodeList, EdgeList, ErgebnisPolygone, Rohre1List, Rohre2List, AvgDistance, Parameter.Von, Parameter.Bis, Parameter.Diff, Parameter.DebugLevel);
 
-		write_fortschritt("->Freigeben des Speichers der Rohre vom Typ 1 gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Rohre vom Typ 1 gestartet\n");
 		delete Rohre1List;
 		Rohre1List = 0;
-		write_fortschritt("<-Freigeben des Speichers der Rohre vom Typ 1 beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Rohre vom Typ 1 beendet\n");
 
-		write_fortschritt("->Freigeben des Speichers der Rohre vom Typ 2 gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Rohre vom Typ 2 gestartet\n");
 		delete Rohre2List;
 		Rohre2List = 0;
-		write_fortschritt("<-Freigeben des Speichers der Rohre vom Typ 2 beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Rohre vom Typ 2 beendet\n");
 
 		NodeList->ClearEdgeIndex();
 
 		// Löscht nur die Verwaltung und nicht die Knoten der Kanten,
 		// die Knoten waren nur geliehen
-		write_fortschritt("->Freigeben des Speichers der Kanten gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Kanten gestartet\n");
 		delete EdgeList;
 		EdgeList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Kanten beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Kanten beendet\n");
 
 		std::string ElementeFileName = ExchangeFileExt(Parameter.FileNameAusgabe, "_elemente.shp");
 		if (Parameter.DebugLevel > 2)	SaveElements(ElementeFileName, ElementList, Parameter.Von, Parameter.DebugLevel);
@@ -360,10 +361,10 @@
 			SaveSol(SolFileName, NodeList, Parameter.DebugLevel);
 		}
 
-		write_fortschritt("->Freigeben des Speichers der Elemente gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Elemente gestartet\n");
 		delete ElementList;
 		ElementList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Elemente beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Elemente beendet\n");
 
 		NodeList->SortByNr();
 
@@ -376,46 +377,46 @@
 		// Speichern der Meta-Daten
 		SaveXml(Parameter.FileNameAusgabe, &Parameter);
 
-		write_fortschritt("->Freigeben des Speichers der ErgebnisPolygone gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der ErgebnisPolygone gestartet\n");
 		delete ErgebnisPolygone;
 		ErgebnisPolygone = 0;
-		write_fortschritt("<-Freigeben des Speichers der ErgebnisPolygone beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der ErgebnisPolygone beendet\n");
 
-		write_fortschritt("->Freigeben des Speichers der Knoten gestartet\n");
+		write_fortschritt (9, "-> Freigeben des Speichers der Knoten gestartet\n");
 		delete NodeList;
 		NodeList = 0;
-		write_fortschritt("<-Freigeben des Speichers der Knoten beendet\n");
+		write_fortschritt (9, "<- Freigeben des Speichers der Knoten beendet\n");
 	}
 	catch (const std::runtime_error& e)
 	{
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (const std::length_error& e)
 	{
-		write_fortschritt ("Es steht leider nicht genug Speicher zur Verfügung\n", e.what());
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Es steht leider nicht genug Speicher zur Verfügung\n", e.what());
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (const std::exception& e)
 	{
-		write_fortschritt ("%s\n", e.what());
-		write_fortschritt ("Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Bitte informieren sie den Programmierer\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "%s\n", e.what());
+		write_fortschritt (9, "Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Bitte informieren sie den Programmierer\n");
+		write_fortschritt (9, "Programmabbruch\n");
 	}
 	catch (...)
 	{
-		write_fortschritt ("Unbekannter Fehler wurde korrekt abgefangen\n");
-		write_fortschritt ("Bitte informieren sie den Programmierer\n");
-		write_fortschritt ("Programmabbruch\n");
+		write_fortschritt (9, "Unbekannter Fehler wurde korrekt abgefangen\n");
+		write_fortschritt (9, "Bitte informieren sie den Programmierer\n");
+		write_fortschritt (9, "Programmabbruch\n");
 
 		ReturnCode = 2;
 	}
 
 	GetTimeAndDate(&Secs, &Mins, &Hours, &Days, &Months, &Years);
 
-	write_fortschritt ("<-WSPLGEN Version %s vom %s am %04d-%02d-%02d beendet\n", Version, __DATE__, Years, Months, Days);
+	write_fortschritt (9, "<-WSPLGEN Version %s vom %s am %04d-%02d-%02d beendet\n", Version, __DATE__, Years, Months, Days);
 
 	if (argc > 1 && argv[1][0] == '$')
 	{

Modified: trunk/src/wsplgen.h
===================================================================
--- trunk/src/wsplgen.h	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/wsplgen.h	2009-11-12 21:44:47 UTC (rev 150)
@@ -10,7 +10,7 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
-const char Version[] = "1.3.2";
+const char Version[] = "1.3.3";
 
 // In der Datei wsplgen.h wird jetzt keine Historie mehr gespeichert.
 // Diese ist nun in der Datei NEWS zu finden

Modified: trunk/src/xy.cpp
===================================================================
--- trunk/src/xy.cpp	2009-11-09 15:37:21 UTC (rev 149)
+++ trunk/src/xy.cpp	2009-11-12 21:44:47 UTC (rev 150)
@@ -268,7 +268,7 @@
 //---------------------------------------------------------------------
 void TXYZList::SortByXY(void)
 {
-	write_fortschritt("->Sortieren der Punkte gestartet\n");
+	write_fortschritt (9, "->Sortieren der Punkte gestartet\n");
 
 	if (QuadTree)	delete QuadTree;
 	QuadTree = new TQuadTree<TXYZList, TXYZ>();
@@ -279,7 +279,7 @@
 		QuadTree->Insert(MinX, MaxX, MinY, MaxY, Xy);
 	}
 
-	write_fortschritt("<-Sortieren der Punkte beendet\n");
+	write_fortschritt (9, "<-Sortieren der Punkte beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -378,9 +378,9 @@
 //---------------------------------------------------------------------
 TXYZList* TXYZList::Cut(TProfilList* ProfilList, TProfil* CutProfil)
 {
-	write_fortschritt("->Beschneiden des Begrenzungspolygon gestartet\n");
+	write_fortschritt (9, "->Beschneiden des Begrenzungspolygon gestartet\n");
 
-	write_fortschritt("Beschneidung mit Profil %.4f\n", CutProfil->Station / 10000.0);
+	write_fortschritt (9, "Beschneidung mit Profil %.4f\n", CutProfil->Station / 10000.0);
 
 	// Zuerst (wenn notwendig )den ersten Punkt am Ende hinzufügen
 	TXYZ* XyFirst = *begin();
@@ -613,7 +613,7 @@
 			i++;
 		}
 
-		write_fortschritt("<-Beschneiden des Begrenzungspolygon beendet\n");
+		write_fortschritt (9, "<-Beschneiden des Begrenzungspolygon beendet\n");
 
 		return (SideZero);
 	}
@@ -732,7 +732,7 @@
 
 	delete CutXyList;
 
-	write_fortschritt("<-Beschneiden des Begrenzungspolygon beendet\n");
+	write_fortschritt (9, "<-Beschneiden des Begrenzungspolygon beendet\n");
 
 	if (IsInsideZeroCount > IsInsideOneCount)
 	{
@@ -773,10 +773,10 @@
 //---------------------------------------------------------------------
 void TNodeList::Clear(void)
 {
-	write_fortschritt("->Löschen des Suchbaumes der Knoten gestartet\n");
+	write_fortschritt (9, "->Löschen des Suchbaumes der Knoten gestartet\n");
 	if (QuadTree)	delete QuadTree;
 	QuadTree = 0;
-	write_fortschritt("<-Löschen des Suchbaumes der Knoten beendet\n");
+	write_fortschritt (9, "<-Löschen des Suchbaumes der Knoten beendet\n");
 
 	if (SearchNodeList)
 	{
@@ -785,6 +785,7 @@
 		SearchNodeList = 0;
 	}
 
+	write_fortschritt (9, "->Knoten löschen gestartet\n");
 	if (size() > 0)
 	{
 		int Count = 0;
@@ -796,10 +797,11 @@
 
 			Count++;
 
-			if (Count % 100000 == 0)	write_fortschritt("%d von %d Objekte freigegeben\n", Count, size());
+			if (Count % 100000 == 0)	write_fortschritt (9, "%d von %d Knoten gelöscht\n", Count, size());
 		}
-		write_fortschritt("%d Objekte freigegeben\n", Count);
+		write_fortschritt (9, "%d Knoten gelöscht\n", Count);
 	}
+	write_fortschritt (9, "<-Knoten löschen beendet\n");
 
 	clear();
 
@@ -854,7 +856,7 @@
 	if (capacity() < size()	+ 1)
 	{
 		reserve((size_t)(capacity() * 1.1 + 100000));
-		write_fortschritt("Kapazität der Knotenliste wurde auf %d erhöht\n", capacity());
+		write_fortschritt (9, "Kapazität der Knotenliste wurde auf %d erhöht\n", capacity());
 	}
 
 	push_back(Node);
@@ -930,12 +932,12 @@
 //---------------------------------------------------------------------
 void TNodeList::SortByXY(void)
 {
-	write_fortschritt("->Sortieren der Knoten gestartet\n");
+	write_fortschritt (9, "->Sortieren der Knoten gestartet\n");
 
-	write_fortschritt("->Löschen und Neuaufbauen des Suchbaumes der Knoten gestartet\n");
+	write_fortschritt (9, "->Löschen und Neuaufbauen des Suchbaumes der Knoten gestartet\n");
 	if (QuadTree)	delete QuadTree;
 	QuadTree = new TQuadTree<TNodeList, TNode>();
-	write_fortschritt("<-Löschen und Neuaufbauen des Suchbaumes der Knoten beendet\n");
+	write_fortschritt (9, "<-Löschen und Neuaufbauen des Suchbaumes der Knoten beendet\n");
 
 	for (iterator i	= begin(); i !=	end(); i++)
 	{
@@ -944,17 +946,17 @@
 		QuadTree->Insert(MinX, MaxX, MinY, MaxY, Node);
 	}
 
-	write_fortschritt("<-Sortieren der Knoten beendet\n");
+	write_fortschritt (9, "<-Sortieren der Knoten beendet\n");
 }
 
 //---------------------------------------------------------------------
 void TNodeList::SortByNr(void)
 {
-	write_fortschritt("->Sortieren der Knoten gestartet\n");
+	write_fortschritt (9, "->Sortieren der Knoten gestartet\n");
 
 	std::sort(this->begin(), this->end(), TNodeSortByNr());
 
-	write_fortschritt("<-Sortieren der Knoten beendet\n");
+	write_fortschritt (9, "<-Sortieren der Knoten beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -1279,7 +1281,7 @@
 {
 	if (size() > 0)
 	{
-		write_fortschritt("->Löschen des Knoten/Kanten-Index gestartet\n");
+		write_fortschritt (9, "->Löschen des Knoten/Kanten-Index gestartet\n");
 
 		int Count = 0;
 		for (iterator i	= begin(); i !=	end(); i++)
@@ -1289,17 +1291,18 @@
 
 			Count++;
 
-			if (Count % 100000 == 0)	write_fortschritt("%d von %d Objekte freigegeben\n", Count, size());
+			if (Count % 100000 == 0)	write_fortschritt (9, "%d von %d Objekte freigegeben\n", Count, size());
 		}
+		write_fortschritt (9, "%d Objekte freigegeben\n", Count);
 
-		write_fortschritt("<-Löschen des Knoten/Kanten-Index beendet\n");
+		write_fortschritt (9, "<-Löschen des Knoten/Kanten-Index beendet\n");
 	}
 }
 
 //---------------------------------------------------------------------
 int TNodeList::GetMaxDepth(int DebugLevel)
 {
-	write_fortschritt("->Ermittlung der maximalen Wassertiefe gestartet\n");
+	write_fortschritt (9, "->Ermittlung der maximalen Wassertiefe gestartet\n");
 
 	int MaxDepth = 0;
 	int Count = 0;
@@ -1317,16 +1320,13 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1	&& Count % 10000 == 0) || (Count > 0 &&	Count %	100000 == 0))
-		{
-			write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
-		}
+		write_fortschritt(DebugLevel, "Knoten %d von %d untersucht.\n", Count, size());
 	}
-	write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
+	write_fortschritt (9, "Knoten %d von %d untersucht.\n", Count, size());
 
-	write_fortschritt("Maximale Wassertiefe: %.3f.\n", MaxDepth / 100.0);
+	write_fortschritt (9, "Maximale Wassertiefe: %.3f.\n", MaxDepth / 100.0);
 
-	write_fortschritt("<-Ermittlung der maximalen Wassertiefe beendet\n");
+	write_fortschritt (9, "<-Ermittlung der maximalen Wassertiefe beendet\n");
 
 	return (MaxDepth);
 }
@@ -1334,7 +1334,7 @@
 //---------------------------------------------------------------------
 int TNodeList::GetMaxWsp(int DebugLevel)
 {
-	write_fortschritt("->Ermittlung	des maximalen Wasserstandes gestartet\n");
+	write_fortschritt (9, "->Ermittlung	des maximalen Wasserstandes gestartet\n");
 
 	int MaxWsp = 0;
 	int Count = 0;
@@ -1355,16 +1355,13 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1	&& Count % 10000 == 0) || (Count > 0 &&	Count %	100000 == 0))
-		{
-			write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
-		}
+		write_fortschritt(DebugLevel, "Knoten %d von %d untersucht.\n", Count, size());
 	}
-	write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
+	write_fortschritt (9, "Knoten %d von %d untersucht.\n", Count, size());
 
-	write_fortschritt("Maximaler Wasserstand: %.3f.\n", MaxWsp / 100.0);
+	write_fortschritt (9, "Maximaler Wasserstand: %.3f.\n", MaxWsp / 100.0);
 
-	write_fortschritt("<-Ermittlung	des maximalen Wasserstandes beendet\n");
+	write_fortschritt (9, "<-Ermittlung	des maximalen Wasserstandes beendet\n");
 
 	return (MaxWsp);
 }
@@ -1372,7 +1369,7 @@
 //---------------------------------------------------------------------
 int TNodeList::GetMaxZ(int DebugLevel)
 {
-	write_fortschritt("->Ermittlung	der maximale Geländehöhe gestartet\n");
+	write_fortschritt (9, "->Ermittlung	der maximale Geländehöhe gestartet\n");
 
 	int MaxZ = 0;
 	int Count = 0;
@@ -1386,16 +1383,13 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1	&& Count % 10000 == 0) || (Count > 0 &&	Count %	100000 == 0))
-		{
-			write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
-		}
+		write_fortschritt(DebugLevel, "Knoten %d von %d untersucht.\n", Count, size());
 	}
-	write_fortschritt("Knoten %d von %d untersucht.\n", Count, size());
+	write_fortschritt (9, "Knoten %d von %d untersucht.\n", Count, size());
 
-	write_fortschritt("Maximale Geländehöhe: %.3f.\n", MaxZ	/ 100.0);
+	write_fortschritt (9, "Maximale Geländehöhe: %.3f.\n", MaxZ	/ 100.0);
 
-	write_fortschritt("<-Ermittlung	der maximale Geländehöhe beendet\n");
+	write_fortschritt (9, "<-Ermittlung	der maximale Geländehöhe beendet\n");
 
 	return (MaxZ);
 }
@@ -1403,7 +1397,7 @@
 //---------------------------------------------------------------------
 void TNodeList::Scale(void)
 {
-	write_fortschritt("->Verschiebung des Koordinatensystems gestartet\n");
+	write_fortschritt (9, "->Verschiebung des Koordinatensystems gestartet\n");
 
 	DiffX =	MinX;
 	DiffY =	MinY;
@@ -1421,13 +1415,13 @@
 		Node->Y	= Node->Y - DiffY;
 	}
 
-	write_fortschritt("<-Verschiebung des Koordinatensystems beendet\n");
+	write_fortschritt (9, "<-Verschiebung des Koordinatensystems beendet\n");
 }
 
 //---------------------------------------------------------------------
 void TNodeList::ReScale(void)
 {
-	write_fortschritt("->Zurückverschiebung des Koordinatensystems gestartet\n");
+	write_fortschritt (9, "->Zurückverschiebung des Koordinatensystems gestartet\n");
 
 	for (iterator i	= begin(); i !=	end(); i++)
 	{
@@ -1445,13 +1439,13 @@
 	DiffX =	0;
 	DiffY =	0;
 
-	write_fortschritt("<-Zurückverschiebung des Koordinatensystems beendet\n");
+	write_fortschritt (9, "<-Zurückverschiebung des Koordinatensystems beendet\n");
 }
 
 //---------------------------------------------------------------------
 void TNodeList::ClearWsp(void)
 {
-	write_fortschritt("->Vorbereiten der Wasserstände gestartet\n");
+	write_fortschritt (9, "->Vorbereiten der Wasserstände gestartet\n");
 
 	for (iterator i	= begin(); i !=	end(); i++)
 	{
@@ -1460,7 +1454,7 @@
 		Node->Wsp = NoWsp;
 	}
 
-	write_fortschritt("<-Vorbereiten der Wasserstände beendet\n");
+	write_fortschritt (9, "<-Vorbereiten der Wasserstände beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -1476,6 +1470,7 @@
 //---------------------------------------------------------------------
 void TElementList::Clear(void)
 {
+	write_fortschritt (9, "->Elementliste löschen gestartet\n");
 	if (size() > 0)
 	{
 		int Count = 0;
@@ -1487,11 +1482,12 @@
 
 			Count++;
 
-			if (Count % 100000 == 0)	write_fortschritt("%d von %d Objekte freigegeben\n", Count, size());
+			if (Count % 100000 == 0)	write_fortschritt (9, "%d von %d Elemente gelöscht\n", Count, size());
 		}
-		write_fortschritt("%d Objekte freigegeben\n", Count);
+		write_fortschritt (9, "%d Elemente gelöscht\n", Count);
 	}
 	clear();
+	write_fortschritt (9, "<-Elementliste löschen beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -1500,7 +1496,7 @@
 	if (capacity() < size()	+ 1)
 	{
 		reserve((size_t)(capacity() * 1.1 + 200000));
-		write_fortschritt("Kapazität der Elementliste wurde auf %d erhöht\n", capacity());
+		write_fortschritt (9, "Kapazität der Elementliste wurde auf %d erhöht\n", capacity());
 	}
 
 	push_back(Element);
@@ -1519,10 +1515,7 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1	&& Count % 5000	== 0) || (Count	% 50000	== 0))
-		{
-			write_fortschritt("%d von %d Elementen, %d Elemente angepasst\n", Count, size(), ChangeCount);
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen, %d Elemente angepasst\n", Count, size(), ChangeCount);
 
 		// Hier	werden die zum Löschen markierten Elemente ignoriert.
 		if (Element->Typ == NO_ELEMENT)	continue;
@@ -1735,7 +1728,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1754,7 +1747,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1773,7 +1766,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1792,7 +1785,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1807,7 +1800,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1822,7 +1815,7 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
@@ -1837,13 +1830,13 @@
 			NewElement->Typ	= NEWTRI;
 			push_back(NewElement);
 
-			if (DebugLevel >= 9) write_fortschritt("Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
+			if (DebugLevel >= 9) write_fortschritt (9, "Element	%d : %d	- %d - %d wird geändert\n", Count, Node1->Nr, Node2->Nr, Node3->Nr);
 
 			Element->Typ = NO_ELEMENT;
 			ChangeCount++;
 		}
 	}
-	write_fortschritt("%d von %d Elemente, %d Elemente angepasst\n", Count,	size(),	ChangeCount);
+	write_fortschritt (9, "%d von %d Elemente, %d Elemente angepasst\n", Count,	size(),	ChangeCount);
 
 	return (ChangeCount);
 }
@@ -1851,7 +1844,7 @@
 //---------------------------------------------------------------------------
 void TElementList::CleanChangedElements(int DebugLevel)
 {
-	write_fortschritt("->Suche nach entarteten Elementen gestartet\n");
+	write_fortschritt (9, "->Suche nach entarteten Elementen gestartet\n");
 
 	int Count = 0;
 	for (unsigned int i = 0; i < size(); i++)
@@ -1860,10 +1853,7 @@
 
 		Count++;
 
-		if (DebugLevel >= 9 || (DebugLevel >= 1	&& Count % 5000	== 0) || (Count	% 50000	== 0))
-		{
-			write_fortschritt("%d von %d Elementen überprüft\n", Count, size());
-		}
+		write_fortschritt(DebugLevel, "%d von %d Elementen überprüft\n", Count, size());
 
 		// Hier	werden die zum Löschen markierten Elemente ignoriert.
 		if (Element->Typ == NO_ELEMENT)	continue;
@@ -1902,35 +1892,35 @@
 		}
 
 	}
-	write_fortschritt("%d von %d Elementen überprüft\n", Count, size());
+	write_fortschritt (9, "%d von %d Elementen überprüft\n", Count, size());
 
-	write_fortschritt("<-Suche nach entarteten Elementen beendet\n");
+	write_fortschritt (9, "<-Suche nach entarteten Elementen beendet\n");
 }
 
 //---------------------------------------------------------------------------
 void TElementList::ChangeElements(TNodeList *NodeList, TProfilList *SperrenList, TProfilList *GrabenList, int DebugLevel)
 {
-	write_fortschritt("->Anpassung der Elemente an Dämme und Gräben gestartet\n");
+	write_fortschritt (9, "->Anpassung der Elemente an Dämme und Gräben gestartet\n");
 
 	NodeList->SortByXY();
 
 	if (GrabenList && GrabenList->size() > 0)
 	{
-		write_fortschritt("->Anpassung der Elemente an Gräben gestartet\n");
+		write_fortschritt (9, "->Anpassung der Elemente an Gräben gestartet\n");
 		HelpChangeElements(NodeList, GrabenList, DebugLevel);
-		write_fortschritt("<-Anpassung der Elemente an Gräben beendet\n");
+		write_fortschritt (9, "<-Anpassung der Elemente an Gräben beendet\n");
 	}
 
 	if (SperrenList	&& SperrenList->size() > 0)
 	{
-		write_fortschritt("->Anpassung der Elemente an Dämme gestartet\n");
+		write_fortschritt (9, "->Anpassung der Elemente an Dämme gestartet\n");
 		HelpChangeElements(NodeList, SperrenList, DebugLevel);
-		write_fortschritt("<-Anpassung der Elemente an Dämme beendet\n");
+		write_fortschritt (9, "<-Anpassung der Elemente an Dämme beendet\n");
 	}
 
 	CleanChangedElements(DebugLevel);
 
-	write_fortschritt("<-Anpassung der Elemente an Dämme und Gräben beendet\n");
+	write_fortschritt (9, "<-Anpassung der Elemente an Dämme und Gräben beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -2164,6 +2154,7 @@
 //---------------------------------------------------------------------
 void TEdgeList::Clear(void)
 {
+	write_fortschritt (9, "->Kantenliste löschen gestartet\n");
 	if (EdgeVector.size() >	0)
 	{
 		int Count = 0;
@@ -2176,9 +2167,9 @@
 
 			Count++;
 
-			if (Count % 100000 == 0)	write_fortschritt("%d von %d Objekte freigegeben\n", Count, EdgeVector.size());
+			if (Count % 100000 == 0)	write_fortschritt (9, "%d von %d Kanten gelöscht\n", Count, EdgeVector.size());
 		}
-		write_fortschritt("%d Objekte freigegeben\n", Count);
+		write_fortschritt (9, "%d Kanten gelöscht\n", Count);
 	}
 
 	if (Anz	!= 0)
@@ -2189,6 +2180,8 @@
 	AvgDistance = 0;
 
 	EdgeVector.clear();
+
+	write_fortschritt (9, "<-Kantenliste löschen beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -2215,7 +2208,7 @@
 	if (EdgeVector.capacity() < EdgeVector.size() +	1)
 	{
 		EdgeVector.reserve((size_t)(EdgeVector.capacity() * 1.1	+ 200000));
-		write_fortschritt("Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeVector.capacity());
+		write_fortschritt (9, "Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeVector.capacity());
 	}
 
 	EdgeVector.push_back(edge);
@@ -2756,7 +2749,7 @@
 //---------------------------------------------------------------------------
 bool TProfil::InterpolateZ(void)
 {
-	write_fortschritt("->Interpolation der Höhen gestartet\n");
+	write_fortschritt (9, "->Interpolation der Höhen gestartet\n");
 
 	int VorZ = NoZ;
 	int VorM = 0;
@@ -2797,7 +2790,7 @@
 
 	if (VorZ == NoZ)
 	{
-		write_fortschritt("<-Interpolation der Höhen beendet\n");
+		write_fortschritt (9, "<-Interpolation der Höhen beendet\n");
 
 		// Es sind alle Z-Höhen NOZ
 		return (false);
@@ -2810,7 +2803,7 @@
 			TPoint* Point = *j;
 			Point->Z = VorZ;
 		}
-		write_fortschritt("<-Interpolation der Höhen beendet\n");
+		write_fortschritt (9, "<-Interpolation der Höhen beendet\n");
 
 		return (true);
 	}
@@ -2829,6 +2822,7 @@
 //---------------------------------------------------------------------
 void TProfilList::Clear(void)
 {
+	write_fortschritt (9, "->Profilliste löschen gestartet\n");
 	if (size() > 0)
 	{
 		int Count = 0;
@@ -2841,12 +2835,13 @@
 
 			Count++;
 
-			if (Count % 10000 == 0)	write_fortschritt("%d von %d Objekte freigegeben\n", Count, size());
+			if (Count % 10000 == 0)	write_fortschritt (9, "%d von %d Profilen gelöscht\n", Count, size());
 		}
-		write_fortschritt("%d Objekte freigegeben\n", Count);
+		write_fortschritt (9, "%d Profile gelöscht\n", Count);
 	}
 
 	clear();
+	write_fortschritt (9, "<-Profilliste löschen beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -2867,11 +2862,11 @@
 //---------------------------------------------------------------------
 void TProfilList::InterpoliereProfile(double SollAbstand)
 {
-	write_fortschritt("->Interpolation der Profile gestartet\n");
+	write_fortschritt (9, "->Interpolation der Profile gestartet\n");
 
 	SollAbstand = SollAbstand / 100.0;
 
-	write_fortschritt("Gewünschter Abstand der Profile: %.1f m\n", SollAbstand);
+	write_fortschritt (9, "Gewünschter Abstand der Profile: %.1f m\n", SollAbstand);
 
 	TProfil	*FirstProfil = 0;
 	TProfil	*NextProfil = 0;
@@ -2940,13 +2935,13 @@
 	delete NewProfilList;
 	NewProfilList =	0;
 
-	write_fortschritt("<-Interpolation der Profile beendet\n");
+	write_fortschritt (9, "<-Interpolation der Profile beendet\n");
 }
 
 //---------------------------------------------------------------------
 void TProfilList::FillProfile(double SollAbstand, int SollAnz, int DebugLevel)
 {
-	write_fortschritt("->Auffüllen der Profile mit Stützstellen gestartet\n");
+	write_fortschritt (9, "->Auffüllen der Profile mit Stützstellen gestartet\n");
 
 	int PointCount = 0;
 	int Count = 0;
@@ -2993,10 +2988,7 @@
 
 				PointCount++;
 
-				if (DebugLevel >= 9 || (DebugLevel >= 1	&& PointCount %	100 == 0) || (PointCount > 0 &&	PointCount % 1000 == 0))
-				{
-					write_fortschritt("Profil %d von %d aufgefüllt, %d Punkte hinzugefügt\n", Count, size(), PointCount);
-				}
+				write_fortschritt(DebugLevel, "Profil %d von %d aufgefüllt, %d Punkte hinzugefügt\n", Count, size(), PointCount);
 			}
 
 			if (Anz	>= 1)
@@ -3011,9 +3003,9 @@
 		Count++;
 	}
 
-	write_fortschritt("Profil %d von %d aufgefüllt\n", Count, size());
+	write_fortschritt (9, "Profil %d von %d aufgefüllt\n", Count, size());
 
-	write_fortschritt("<-Auffüllen der Profile mit Stützstellen beendet\n");
+	write_fortschritt (9, "<-Auffüllen der Profile mit Stützstellen beendet\n");
 }
 
 //---------------------------------------------------------------------



More information about the Wsplgen-commits mailing list