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;
            }
        }
Beispiel #2
0
        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
        }