private void handleCursorAction(CVector2f position) { if (mCursorAction.add) { try { CMemoryTester.fitMemory(CTSPPointList.getInstance().length() + 1); } catch (CInsufficientMemoryException memoryException) { if (memoryException.getType() == CInsufficientMemoryException.E_EXCEPTION_TYPE.E_32_BIT_ERROR) { MessageBox.Show("Um ein Projekt mit einem Knoten mehr erzeugen zu können, benötigen Sie ca. " + memoryException.getMemoryNeeded() + " MByte. 32-Bit-Anwendungen können aber maximal " + memoryException.getMemoryAvailable() + " MByte verwalten. " + "Bitte verwenden sie die 64-Bit Version oder verwenden Sie ein geringe Anzahl an Punkten.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Auf ihrem System stehen noch " + memoryException.getMemoryAvailable() + " MByte zur Verfügung. Es werden aber ca. " + memoryException.getMemoryNeeded() + " MByte benötigt. " + "Wenn Sie ein Projekt mit einer höheren Anzahl von Punkten verwenden möchten stellen Sie Bitte mehr RAM zur Verfügung.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } CTSPPointList.getInstance().addPoint(new CTSPPoint(position.x, position.y)); } if (mCursorAction.del) { float precision = (float)((mBounds.right - mBounds.left) / 100); CTSPPoint Point = CTSPPointList.getInstance().getPointsbyCoordinates(position.x, position.y, precision); if (!(Point == null)) { CTSPPointList.getInstance().remove(Point); } } if (mCursorAction.change) { pointToMove.movePoint = false; } }
public static void generateTSP() { try { CProgressManager.setStepsConnections(mNumPoints); // erstmal alles altes löschen CTSPPointList.getInstance().removeAll(); CConnectionList.getInstance().removeAll(); GC.Collect(); CMemoryTester.fitMemory(mNumPoints); generatePoints(); CConnectionList.getInstance().generateFromPointList(CTSPLibFileParser.E_EDGE_WEIGHT_TYPE.E_EUC_2D); } catch (CInsufficientMemoryException memoryException) { if (memoryException.getType() == CInsufficientMemoryException.E_EXCEPTION_TYPE.E_32_BIT_ERROR) { MessageBox.Show("Um ein Projekt mit der angegeben größe erzeugen zu können, benötigen Sie ca. " + memoryException.getMemoryNeeded() + " MByte. 32-Bit-Anwendungen können aber maximal " + memoryException.getMemoryAvailable() + " MByte verwalten. " + "Bitte verwenden sie die 64-Bit Version oder wählen Sie ein geringe Anzahl an Punkten.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Auf ihrem System stehen noch " + memoryException.getMemoryAvailable() + " MByte zur Verfügung. Es werden aber ca. " + memoryException.getMemoryNeeded() + " MByte benötigt. " + "Wenn Sie dieses Projekt mit dieser Anzahl von Punkten erstellen möchten stellen Sie Bitte mehr RAM zur Verfügung.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception exception) { MessageBox.Show(exception.Message, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } CProgressManager.setFinished(); }
private void readFile() { StreamReader reader = new StreamReader(mFile); string actualLine = ""; bool bLineAlreadyRead = false; while (!(actualLine == "EOF")) { string readLine = actualLine; if (bLineAlreadyRead == false) { readLine = reader.ReadLine(); } // wenn wir das Ende der Datei erreicht habe if (readLine == null) { // brechen wir ab break; } bLineAlreadyRead = false; actualLine = readLine.Trim().Replace(" ", ""); string[] actualLineSplit = actualLine.Split(new Char[] { ':' }); switch (actualLineSplit[0]) { // Fileheader Einträge case "NAME": mFileHeader.name = actualLineSplit[1]; break; case "TYPE": HandleTspType(actualLineSplit[1]); break; case "COMMENT": mFileHeader.comment = actualLineSplit[1]; break; case "DIMENSION": mFileHeader.dimension = Int32.Parse(actualLineSplit[1]); CProgressManager.setStepsPointsAndConnections(mFileHeader.dimension); CMemoryTester.fitMemory(mFileHeader.dimension); break; case "EDGE_WEIGHT_TYPE": handleEdgeWeightType(actualLineSplit[1]); break; case "EDGE_WEIGHT_FORMAT": handleEdgeWeightFormat(actualLineSplit[1]); break; case "EDGE_DATA_FORMAT": handleEdgeDataFormat(actualLineSplit[1]); break; case "NODE_COORD_TYPE": handleNoordCoordType(actualLineSplit[1]); break; case "DISPLAY_DATA_TYPE": handleDisplayDataType(actualLineSplit[1]); break; // Dateneinträge case "NODE_COORD_SECTION": actualLine = handleNodeCoordSection(reader); bLineAlreadyRead = true; break; case "EDGE_WEIGHT_SECTION": actualLine = handleEdgeWeightSection(reader); bLineAlreadyRead = true; break; case "DISPLAY_DATA_SECTION": actualLine = handleDisplayDataSection(reader); bLineAlreadyRead = true; break; case "TOUR_SECTION": actualLine = handleTourSection(reader); bLineAlreadyRead = true; break; } // switch } // while }