/**
 * @(#) BasisIO.java 19.07.01
 *
 * jfem - a java finite element system
 *
 * Copyright (C) 1999-2001 HS-MD
 * jfem.support@jfem.de
 * www.jfem.de
 *
 * For License information see License.txt
 */

package org.app.basis;

import java.awt.Frame;
import java.text.NumberFormat;
import java.io.File; // ChageFileExt
import javax.swing.JOptionPane;
import org.app.basis.IntDbRec;
import org.app.basis.DbDbRec;
import javax.swing.filechooser.*;
import javax.swing.*; // Filechooser
import java.awt.event.MouseEvent;

/**
 * description:
 * Prototypen
 *
 * public int     getValError()
 *
 * public boolean DVal(String szText)
 * public boolean DVal(String szText, double Min, double Max)
 * public double  getDValResult()
 * public void    setDValError(double d)
 *
 * public boolean IVal(String szText)
 * public boolean IVal(String szText, int Min, int Max)
 * public int     getIValResult()
 * public void    setIValError(int i)
 *
 * public boolean LVal(String szText)
 * public boolean LValMinMax(String szText, long Min, long Max)
 * public long    getLValResult()
 * public void    setLValError(long i)
 *
 * public String DStr(double d, int nk)
 * public String DStr(double d, int nk1, int nk2)
 *
 * public String IStr2(int iZahl)
 * public String Ltr2(long lZahl)
 *
 * public String Komma2Point(String szZ)
 * public String Point2Komma(String szZ)
 *
 * public boolean CheckFileName(string szDateiname)
 * public String getFileName(string szDateiname)
 *
 * public void Message(String szTitel, String szText)
 * public boolean ReadYesNo(String szTitel, String szText)
 * public int ReadYesNoCancel(String szTitel, String szText)
 *
 * public void Message(Frame f, String szTitel, String szText)
 * public boolean ReadYesNo(Frame f, String szTitel, String szText)
 * public int ReadYesNoCancel(Frame f, String szTitel, String szText)
 *
 * public float ConvertInt2Float(int bits)
 *
 * String changeFileExt(String szDateiname, String szExt)
 * String getFileExt(String szDateiname)
 *
 * String OpenDialog
 *
 *
 * @version     1.0  19.07.01
 * @author      Thomas Schmidt, Michael Wilhelem
 * @see         #basis.InputBox Organisation:      FH MagdeburgDescription:   Ihre Beschreibung
 */

public class BasisIO {
    public final static int YES = 1;
    public final static int NO = 0;

    public final static int MAXI = 32767;
    public final static int MINI = -32767;
    public final static int MINL = -2147483648;
    public final static int MAXL = 2147483647;
    public final static float MAXF = 1.0e10f;
    public final static float MINF = -1.0e10f;
    public final static double MAXD = 1.0e39;
    public final static double MIND = -1.0e39;
    public final static int LARGEP = 65536;
    public final static int LARGEM = -65536;
    public static final int C_LEER = 1;
    public static final int C_KEINEZAHL = 2;
    public static final int C_MIN = 3;
    public static final int C_MAX = 4;
    public static final int C_YES = 1;
    public static final int C_NO = 2;
    public static final int C_CANCEL = 3;

    public static final int C_Integer = 1;
    public static final int C_Long = 2;
    public static final int C_Double = 3;
    public static final int C_Boolean = 4;
    public static final int C_String = 5;
    public static final int C_Memo = 6;
    public static final int C_List = 7;
    public static final int C_ListSmall = 8;
    public static final int C_Slider = 9;
    public static final int C_Table = 10;
    public static final int C_TableChange = 11;
    public static final int C_SingleAction = 101;
    private static int iValError = 0; // speichert den Konvertierungfehler
    private static long lValError = 0;
    private static double dDVal = 0;
    private static double dDValError = -9999999.9;
    private static boolean bDVal; // zeigt an, ob Konvertierung erfolgreich war
    private static int iIVal;
    private static int iIValError = -999999;
    private static boolean bIVal; // zeigt an, ob Konvertierung erfolgreich war
    private static long lLVal;
    private static long lLValError = -999999;
    private static boolean bLVal; // zeigt an, ob Konvertierung erfolgreich war

    public BasisIO() {
    }
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //   getValError       getValszError
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    // ausgabe des Fehlers

    /**
     * getValError
     * @return int iValError
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use
     * @see #getValszError
     * @see #DVal
     * @see #IVal
     * @see #getDValResult
     * Ausgabe der Fehlernummer beim Aufruf der Konvertierungsroutinen Example
     */
    public static int getValError() {
        return iValError;
    }

    /**
     * getValError
     * @return String szError
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use
     * @see #getValError
     * @see #getValDVal
     * @see #IVal
     * @see #getDValResult
     * Ausgabe des Fehlers als String Example
     */
    public static String getValszError() {
        String D;
        switch (iValError) {
            case C_KEINEZAHL:
                D = new String("falsche Eingabe");
                break;
            case C_LEER:
                D = new String("leere Zeichenkette");
                break;
            case C_MIN:
                D = new String("Zahl ist zu klein");
                break;
            case C_MAX:
                D = new String("Zahl ist zu groß");
                break;
            default:
                D = new String("unbekannter Fehler");
                break;
        }
        return D;
    }
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //   double  Val
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : getDValResult                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : gibt den Wert der Konvertierung aus               */

  /*                      wenn bDVal = true    Ausgabe dDVal               */

  /*                      wenn bDVal = false   Ausgabe sDValFehler         */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setDValFehler, getDValResult,  DVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : double Wert                                       */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  dVal und bDVal                                   */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Ausgabe des Ergebnisses                          */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * getDValResult
     * @return double dDval
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als double Wert Example
     * @see #getValError
     * @see #getValDVal
     * @see #IVal
     * @see #getValError
     */
    public static double getDValResult() {
        if (bDVal)
            return dDVal;
        else
            return dDValError;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : setDValFehler                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : setzt die globale Variable DValFehler             */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setDValFehler, getDValResult,  DVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN: DValFehler                                        */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  setzen der internen Variable                     */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * setDValFehler
     * @return none
     * @param double d
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als double Wert Example
     * @see #getValError
     * @see #getValDVal
     * @see #IVal
     * @see #getValError
     */
    public static void setDValError(double d) {
        dDValError = d;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : DVal                                              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert einen String in einen double wert     */

  /*                     gibt true falls erfolgreich                       */

  /*                     verwendet die internen Variablen                  */

  /*                         dDVal und bDVal                               */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setDValError, getDValResult,  DVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : Zeichnenkette                                     */

  /*                                                                       */

  /*  AUSGABEPARAMETER : true oder false                                   */

  /*                     falls Konvertierung erfolgreich true              */

  /*                     speicherung des Ergebnisses in dDVal              */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  dVal und bDVal                                   */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit eine Double Object             */

  /*                       verwendung der exception                       */

  /*                                                                       */

  /*                      2. Ansatz:                                       */

  /*                      Double.isNaN                                     */

  /*                        für kürzere Darstellungen                      */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * DVal
     * @return boolean StringIsDouble
     * @param String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als double Wert Example
     * @see #getDValError
     * @see #getDValResult
     */
    public static boolean DVal(String szText) {
        // erläuterung von dDVal = Double.valueOf(szText).doubleValue();

     /*
       Double D;
       D = new Double(0.0);   // Konstruktor braucht eine Zahl
       D = Double.valueOf(szText);
       dDVal = dDVal = D.doubleValue();
     */

        boolean result = true;
        bDVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                dDVal = Double.valueOf(szText).doubleValue();
                iValError = 0;
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bDVal = false;
                result = false;
            }
        }
        return result;
    } // DVal
    // neue DVal

    /**
     * DVal
     * @return boolean StringIsDouble
     * @param String szText, double Min, double Max
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als double Wert Example
     * @see #getDValError
     * @see #getDValResult
     */
    public static boolean DVal(String szText, double dMin, double dMax) {
        // erläuterung von dDVal = Double.valueOf(szText).doubleValue();

     /*
       Double D;
       D = new Double(0.0);   // Konstruktor braucht eine Zahl
       D = Double.valueOf(szText);
       dDVal = dDVal = D.doubleValue();
     */

        boolean result = true;
        bDVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                dDVal = Double.valueOf(szText).doubleValue();
                iValError = 0;
                if (dDVal < dMin) {
                    iValError = C_MIN;
                    result = false;
                }
                if (dDVal > dMax) {
                    iValError = C_MAX;
                    result = false;
                }
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bDVal = false;
                result = false;
            }
        }
        return result;
    } // DVal
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //   integer  Val
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : getIValResult                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : gibt den Wert der Konvertierung aus               */

  /*                      wenn bIVal = true    Ausgabe iIVal               */

  /*                      wenn bIVal = false   Ausgabe iIValError          */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setIValError, getIValResult,  IVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : int Wert                                          */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  iVal und bIVal                                   */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Ausgabe des Ergebnisses                          */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * getIValResult
     * @return int iIVal
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use gibt den Wert der Konvertierung aus, oder den Fehlerwert Example
     * @see #getIValError
     * @see #setIValError
     */
    public static int getIValResult() {
        if (bIVal)
            return iIVal;
        else
            return iIValError;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : setIValError                                      */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : setzt die globale Variable IValError              */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setIValError,  getIValResult,  IVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN: IValError                                         */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  setzen der internen Variable                     */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * setIValError
     * @return none
     * @param int i
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use setzt den internen Errorwert Example
     * @see #getIValError
     * @see #getIValResult
     */
    public static void setIValError(int i) {
        iIValError = i;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : IVal                                              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert einen String in einen int wert        */

  /*                     gibt true falls erfolgreich                       */

  /*                     verwendet die internen Variablen                  */

  /*                         iIVal und bIVal                               */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setIValError, getIValResult,  IVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : Zeichnenkette                                     */

  /*                                                                       */

  /*  AUSGABEPARAMETER : true oder false                                   */

  /*                     falls Konvertierung erfolgreich true              */

  /*                     speicherung des Ergebnisses in iIVal              */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  iVal und bIVal                                   */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit einem Integer Object           */

  /*                       verwendung der exception                        */

  /*                                                                       */

  /*                      2. Ansatz:                                       */

  /*                      Integer.isNaN                                    */

  /*                        für kürzere Darstellungen                      */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * IVal
     * @return boolean StringIsInt
     * @param String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als int Wert Example
     * @see #getIValError
     * @see #getIValResult
     */
    public static boolean IVal(String szText) {
        // erläuterung von iIVal = Integer.valueOf(szText).intValue();

     /*
       Integer I;
       I = new Integer(0.0);   // Konstruktor braucht eine Zahl
       I = Integer.valueOf(szText);
       iIVal = iIVal = I.intValue();
     */

        boolean result = true;
        bIVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                iIVal = Integer.valueOf(szText).intValue();
                iValError = 0;
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bIVal = false;
                result = false;
            }
        }
        return result;
    } // IVal
    // neue IVal

    /**
     * IVal
     * @return boolean StringIsInt
     * @param String szText, int min, int max
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als int Wert Example
     * @see #getIValError
     * @see #getIValResult
     */
    public static boolean IVal(String szText, int iMin, int iMax) {
        // erläuterung von iIVal = Integer.valueOf(szText).intValue();

     /*
       Integer I;
       I = new Integer(0.0);   // Konstruktor braucht eine Zahl
       I = Integer.valueOf(szText);
       iIVal = iIVal = I.intValue();
     */

        boolean result = true;
        bIVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                iIVal = Integer.valueOf(szText).intValue();
                iValError = 0;
                if (iIVal < iMin) {
                    iValError = C_MIN;
                    result = false;
                }
                if (iIVal > iMax) {
                    iValError = C_MAX;
                    result = false;
                }
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bIVal = false;
                result = false;
            }
        }
        return result;
    } // IVal
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //   long  Val
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : getLValResult                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : gibt den Wert der Konvertierung aus               */

  /*                      wenn bLVal = true    Ausgabe lLVal               */

  /*                      wenn bLVal = false   Ausgabe lLValError          */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setLValError,  getLValResult,  LVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : long Wert                                         */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  lLVal und bLVal                                  */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Ausgabe des Ergebnisses                          */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * getLValResult
     * @return long lLVal
     * @param none
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use gibt den long Wert der Konvertierung aus, oder den Fehlercode Example
     * @see #getLValError
     * @see #setLValError
     */
    public static long getLValResult() {
        if (bLVal)
            return lLVal;
        else
            return lLValError;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : setLValError                                      */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : setzt die globale Variable LValError              */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setLValError,  getLValResult,  LVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  AUSGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN: LValError                                         */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  setzen der internen Variable                     */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * setLValError
     * @return none
     * @param long i
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use setzt den internen Errorwert Example
     * @see #getLValError
     * @see #getLValResult
     */
    public static void setLValError(long i) {
        lLValError = i;
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : LVal                                              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert einen String in einen long wert       */

  /*                     gibt true falls erfolgreich                       */

  /*                     verwendet die internen Variablen                  */

  /*                         lLVal und bLVal                               */

  /*                                                                       */

  /*  GEHÖRT ZU        :  setLValError, getLValResult,  LVal              */

  /*                                                                       */

  /*  EINGABEPARAMETER : Zeichnenkette                                     */

  /*                                                                       */

  /*  AUSGABEPARAMETER : true oder false                                   */

  /*                     falls Konvertierung erfolgreich true              */

  /*                     speicherung des Ergebnisses in lLVal              */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  lLVal und bLVal                                  */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit einem Long Object              */

  /*                       verwendung der exception                        */

  /*                                                                       */

  /*                      2. Ansatz:                                       */

  /*                      Long.isNaN                                       */

  /*                        für kürzere Darstellungen                      */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * LVal
     * @return boolean StringIsLong
     * @param String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als long Wert Example
     * @see #getLValError
     * @see #getLValResult
     */
    public static boolean LVal(String szText) {
        // erläuterung von iIVal = Integer.valueOf(szText).intValue();
        boolean result = true;
        bLVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                lLVal = Long.valueOf(szText).longValue();
                iValError = 0;
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bLVal = false;
                result = false;
            }
        }
        return result;
    } // LVal
    // neue LVal

    /**
     * LVal
     * @return boolean StringIsLong
     * @param String szText, long lMin, long lMax
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe des Konvertierten String als long Wert Example
     * @see #getLValError
     * @see #getLValResult
     */
    public static boolean LVal(String szText, long lMin, long lMax) {
        // erläuterung von lLVal = Long.valueOf(szText).longValue();

     /*
       Long L;
       L = new Long(0.0);   // Konstruktor braucht eine Zahl
       lL = Long.valueOf(szText);
       LVal = lLVal = L.longValue();
     */

        boolean result = true;
        bLVal = true;
        String s;
        s = new String(szText); // neues Objekt
        s.trim();
        if (s.length() == 0) {
            iValError = C_LEER;
            result = false;
        }
        else {
            try {
                lLVal = Long.valueOf(szText).longValue();
                iValError = 0;
                if (lLVal < lMin) {
                    iValError = C_MIN;
                    result = false;
                }
                if (lLVal > lMax) {
                    iValError = C_MAX;
                    result = false;
                }
            }
            catch (NumberFormatException e) {
                iValError = C_KEINEZAHL;
                bLVal = false;
                result = false;
            }
        }
        return result;
    } // LVal
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //   Umwandlung  Zahl to String
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    // nk = Nachkommastellen

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : DStr                                              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert einen double in einem String          */

  /*                     Parameter nk beschreibt die Nachkommastelle       */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : nk  Anzahl der festen nacjkommastellen            */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String                                            */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit einem NumberFormat Object      */

  /*                       verwendung mit setMinimal und setMaximal        */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    public static String DStr(double d, int nk) {
        NumberFormat NF = NumberFormat.getInstance();
        NF.setMinimumFractionDigits(nk);
        NF.setMaximumFractionDigits(nk);
        return NF.format(d);
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : DStr                                              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert einen double in einem String          */

  /*                     Parameter nk beschreibt die Nachkommastelle       */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : nk1, nk2                                          */

  /*                     nk1 ist die minmale  Nachkommastelle              */

  /*                     nk2 ist die maximale Nachkommastelle              */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String                                            */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit einem NumberFormat Object      */

  /*                       verwendung mit setMinimal und setMaximal        */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * DStr
     * @return String szNumberFormat
     * @param double d, int nk1, int nk2
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use wandelt den double Wert in einen String um Example
     * @see #IStr2
     * @see #LStr2
     */
    public static String DStr(double d, int nk1, int nk2) {
        NumberFormat NF = NumberFormat.getInstance();
        NF.setMinimumFractionDigits(nk1);
        NF.setMaximumFractionDigits(nk2);
        return NF.format(d);
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : IStr2                                             */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert ein int einen String mit mindestens   */

  /*                     zwei gültigen Ziffern                             */

  /*                     12     --->   "12"                                */

  /*                     123    --->   "123"                               */

  /*                     2      --->   "02"                                */

  /*                     1      --->   "01"                                */

  /*                     8      --->   "08"                                */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : int Zahl                                          */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit einem NumberFormat Object      */

  /*                       verwendung mit setMinimal und setMaximal        */

  /*                      wenn die Länge < 2 dann szZ="0"+szZ              */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * IStr2
     * @return String ZweistelligeZahl
     * @param int izahl
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use wandelt den int Wert in einen zweistelligen String um Example 1 -> 01   123 ->  123
     * @see #IStr2
     * @see #LStr2
     */
    public static String IStr2(int iZahl) {
        String s;
        NumberFormat NF = NumberFormat.getInstance();
        s = NF.format(iZahl);
        if (s.length() < 2) s = "0" + s;
        return s;
    }
    // siehe oben   IStr2

    /**
     * LStr2
     * @return String ZweistelligeZahl
     * @param long lzahl
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use wandelt den long Wert in einen zweistelligen String um Example 1 -> 01   123 ->  123
     * @see #IStr2
     * @see #LStr2
     */
    public static String LStr2(long lZahl) {
        String s;
        NumberFormat NF = NumberFormat.getInstance();
        s = NF.format(lZahl);
        if (s.length() < 2) s = "0" + s;
        return s;
    }
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //            Komma To Point
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : Komma2Point                                       */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : konvertiert alle Kommas in einem String          */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String Object                                     */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Konvertierung mit replace Methode               */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * Komma2Point
     * @return String
     * @param String szZ
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use ersetzt die Kommas im Parameter durch Punkte Example 1,23  -> 1.23
     * @see #Point2Komma
     */
    public static String Komma2Point(String szZ) {
        return szZ.replace(',', '.');
    }
    // siehe Komma2Point

    /**
     * Point2Komma
     * @return String
     * @param String szZ
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use ersetzt die Kommas im Parameter durch Punkte Example 1.234  ->  1,234
     * @see #Komma2Point
     */
    public static String Point2Komma(String szZ) {
        return szZ.replace('.', ',');
    }
    ///////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////

  /*                     Restliche Funktionen                                          */

    ///////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : CheckFileName                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : prüft ob ein Name ein gültiger Dateiname ist      */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Check ob folgende Zeichen vorhanden sind,        */

  /*                      dann falsch                                      */

  /*                      \  /   :  ?  *  "  <  >  |                       */

  /*                      Suche geschieht mit der Methode indexOf          */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * CheckFileName
     * @return boolean FileNameOkay
     * @param String szDateiname
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Prüft, ob der Dateiname gültig ist Example 1.234  ->  1,234
     * @see #getFileName
     * @see #ChangeFileExt
     */
    public static boolean CheckFileName(String szDateiname) {
        if (szDateiname.length() == 0) {
            return false;
        }
        else {
            int i;
            i = szDateiname.indexOf('\\', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('/', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf(':', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('?', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('*', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('"', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('<', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('>', 0);
            if (i > 0) return false;
            i = szDateiname.indexOf('|', 0);
            if (i > 0) return false;
            return true;
        }
    } //   pruefe_dateinamen

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : getFileName                                       */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : löscht aus einem String alle ungültigen Zeichen   */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  AUSGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  Suche hier über Schleife                         */

  /*                      dann falsch                                      */

  /*                      \  /   :  ?  *  "  <  >  |                       */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * getFileName
     * @return String FileName
     * @param String szDateiname
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Trennt Pfad Dateinme und Extention
     * @see #CheckFileName
     * @see #ChangeFileExt
     */
    public static String ggetFileName(String szDateiName) {
        String szZ = new String("");
        if (szDateiName.length() == 0) {
            return szZ;
        }
        else {
            int i, k;
            char ch;
            for (i = 0; i < szDateiName.length(); i++) {
                ch = szDateiName.charAt(i);
                if ((ch == '\\') || (ch == '/') || (ch == ':') || (ch == '?') || (ch == '*') || (ch == '"') ||
                    (ch == '<') || (ch == '>')) {
                        // nichts passiert
                }
                else {
                    szZ += ch;
                }
            }
            return szZ;
        }
    } // ggetFileName
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //            Nachrichten
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : Message                                           */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : zeigt eine Nachricht an                           */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                                                                       */

  /*  AUSGABEPARAMETER : none                                             */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  benutzt das Java MessageDialog                   */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

             /*
             BasisIO.Message("Error","<html>" + "An tree-item has NOT the correct length: "+
                 "<br><center>" +
                "index of the array: "+BasisIO.toString(i) +
                "<br><center>"+
                "   3.param: " +sItem3
                 );
             */

    /**
     * Message
     * @return none
     * @param String szTitel, String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe eines Textes mit einer Überschrift Example
     * @see #ReadYesNo
     * @see #ReadYesNoCancel
     * @see #OpenDialog
     * @see Error
     * with the character '\n' it is possible to create e newline
     */
    public static void Message(String szTitel, String szText) {
        JOptionPane.showMessageDialog(null, szText, szTitel, JOptionPane.INFORMATION_MESSAGE);
    }


    /**
     * Error
     * @return none
     * @param String szTitel, String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe eines Textes mit einer Überschrift Example
     * @see #ReadYesNo
     * @see #ReadYesNoCancel
     * @see #OpenDialog
     * @see Message
     * with the character '\n' it is possible to create e newline
     */
    public static void Error(String szTitel, String szText) {
        JOptionPane.showMessageDialog(null, szText, szTitel, JOptionPane.ERROR_MESSAGE);
    }

//        JOptionPane.ERROR_MESSAGE

/*

ERROR_MESSAGE
INFORMATION_MESSAGE
WARNING_MESSAGE
QUESTION_MESSAGE
PLAIN_MESSAGE
optionType
Defines the set of option buttons that appear at the bottom of the dialog box:

DEFAULT_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION

*/











  /*                                                                       */

  /*  FUNKTIONSNAME    : ReadYesNo   (LeseJaNein)                          */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : zeigt eine Nachricht an                           */

  /*                     fordert zu einer Ja/Nein-Eingabe auf              */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                     Titel und Text                                    */

  /*                                                                       */

  /*  AUSGABEPARAMETER : true oder false                                   */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  benutzt das Borland Beans MessageDialog         */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * ReadYesNo
     * @return boolean YesButton
     * @param String szTitel, String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe eines Textes mit einer Überschrift Example
     * @see #Message
     * @see #ReadYesNoCancel
     * @see #OpenDialog
     */
    public static boolean ReadYesNo(String szTitel, String szText) {
        int result;
        result = JOptionPane.showConfirmDialog(null, szText, szTitel, JOptionPane.INFORMATION_MESSAGE,
            JOptionPane.YES_NO_OPTION);

/*

ERROR_MESSAGE
INFORMATION_MESSAGE
WARNING_MESSAGE
QUESTION_MESSAGE
PLAIN_MESSAGE
optionType
Defines the set of option buttons that appear at the bottom of the dialog box:

DEFAULT_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION

*/

        return (result == JOptionPane.YES_OPTION);

    /*
    MessageDialog msg = new MessageDialog(f, szTitel, szText,msg.YES_NO);  // import java.io.*;
           // msg.setSize(300,300);
    msg.show();   //setVisible(true);
    result =  msg.getResult();
    return (result==msg.YES);
    */
    } // ReadYesNo

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : ReadYesNoCancel  (LeseJaNeinAbbruch)              */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : zeigt eine Nachricht an                           */

  /*                     fordert zu einer Ja/Nein/Abbruch-Eingabe auf      */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                     Titel und Text                                    */

  /*                                                                       */

  /*  AUSGABEPARAMETER : verwendet die eigenen Konstanten, damit die       */

  /*                     import Anweisungen nicht zunehmen                 */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  benutzt das Borland Beans MessageDialog         */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    /**
     * ReadYesNoCancel
     * @return int Button (C_NO, C_YES, C_CANCEL)
     * @param String szTitel, String szText
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Ausgabe eines Textes mit einer Überschrift Example
     * @see #Message
     * @sse #ReadYesNo
     * @see #OpenDialog
     */
    public static int ReadYesNoCancel(String szTitel, String szText) {
        int result;
        result = JOptionPane.showConfirmDialog(null, szText, szTitel, JOptionPane.INFORMATION_MESSAGE,
            JOptionPane.YES_NO_CANCEL_OPTION);
            if (JOptionPane.YES_OPTION == result)
                return C_YES;
        else if (JOptionPane.NO_OPTION == result)
            return C_NO;
        else
            return C_CANCEL;

    /*
    MessageDialog msg = new MessageDialog(f, szTitel, szText,msg.YES_NO_CANCEL);  // import java.io.*;
    // msg.setSize(300,300);
    msg.show();   //setVisible(true);
    result = msg.getResult();
    if (msg.YES==result)
       return C_YES;
    else if (msg.NO==result)
           return C_NO;
         else
           return C_CANCEL;
    */
    } // ReadYesNoCancel

    public static boolean FileExists(String szDateiname) {
        File f = null;
        try {
            // evnetuell kann auch f.pathSeparatorChar verwendet werden
            f = new File(szDateiname);
            if (f.exists())
                return true;
            else
                return false;
        }
        catch (Exception e) {
            return false;
        }
    }

    /**  */

  /*                                                                       */

  /*  FUNKTIONSNAME    : changeFileExt                                     */

  /*                                                                       */

  /*  AUTOR            : Michael Wilhelm                                   */

  /*                                                                       */

  /*  DATUM (1.Version): 30.07.1999                                        */

  /*                                                                       */

  /*  BESCHREIBUNG     : ändert die Extention eines Dateinamens            */

  /*                                                                       */

  /*  GEHÖRT ZU        :                                                   */

  /*                                                                       */

  /*  EINGABEPARAMETER : String - Object                                   */

  /*                     szDateiname                                       */

  /*                                                                       */

  /*  AUSGABEPARAMETER : geänderter Dateiname                              */

  /*                                                                       */

  /*  DATEIEN          : none                                             */

  /*  (lesen/ändern)                                                       */

  /*                                                                       */

  /*  GLOBALE VARIABLEN:  none                                            */

  /*  (Benutzt/Ändern)                                                     */

  /*                                                                       */

  /*  VERFAHREN        :  sucht das letzte Backslash                       */

  /*                      verwendet die Routine getParent                  */

  /*                                                                       */

  /*  (Entwurfs -                                                          */

  /*     scheidungen)                                                      */

  /*                                                                       */

  /*  EXTERNE AUFRUFE  :  none                                            */

  /*  (Modul.Name)                                                         */

  /*                                                                       */

  /*  ÄNDERUNGEN       :                                                   */

  /*  (b. changerequest)                                                   */

  /*  (Änderungsdatum)                                                     */

  /*                                                                       */

  /* ***********************************************************************/

    //   Beispiel
    //   szMom = bas.ChangeFileExt(szUFileName, ".MOM");

    /**
     * changeFileExt
     * @return String NewFileName
     * @param String szDateiname, String szExt
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #CheckFileName
     * @see #getFileExt Ändern der Dateiwerweiterung  TXT  -> DAT
     */
    public static String changeFileExt(String szDateiname, String szExt) {
        String szErgDatei;
        char ch;
        szErgDatei = "";
        File f = null;
        try {
            // evnetuell kann auch f.pathSeparatorChar verwendet werden
            f = new File(szDateiname);
            szErgDatei = f.getParent();
            ch = szErgDatei.charAt(szErgDatei.length() - 1);
            if (ch != '\\') szErgDatei = szErgDatei + '\\';
            //  + GetName(f.getName())+".ERG";  // Path
            szErgDatei = szErgDatei + getFileName(f.getName()) + szExt;
        }
        catch (Exception e) {
        }
        return szErgDatei;
    }
    //   Beispiel
    //   szMom = bas.getFileExt(szUFileName);
    //   szMom = ".MOM"

    /**
     * getFileExt
     * @return String Extension (.SNP)
     * @param String szDateiname
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #CheckFileName
     * @see #ChangeFileExt Ausgabe der Dateierweiterung
     */
    public static String getFileExt(String szDateiname) {
        int k, i, n;
        n = szDateiname.length();
        k = -1;
        // suche von hinten erstes Auftreten eines Punktes
        for (i = n - 1; i >= 0; i--) {
            if (szDateiname.charAt(i) == '.') {
                k = i;
                break;
            }
        }
        if (k == -1) // kein Punkt vorhanden
            return new String("");
        else {
            // substring zählt von NULL
            // Anfangsindex   EndIndex
            String s;
            s = szDateiname.substring(k, n);
            return szDateiname.substring(k, n);
        }
    } // getFileExt

    /**
     * GetFileName
     * @return String Name+Ext
     * @param String szDateiname
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Example
     * @see #CheckFileName
     * @see #ChangeFileExt
     * @see #getFileName extrahiert den Dateinamen ohne Pfad
     */
    public static String getFileNameExt(String szDateiname) {
    /*
      getFileName
    File F = new File(szDateiname);
    return F.getName();
   */

        int k, i, n;
        n = szDateiname.length();
        k = -1;
        for (i = n - 1; i >= 0; i--) {
            if (szDateiname.charAt(i) == '\\') {
                k = i + 1;
                break;
            }
            if (szDateiname.charAt(i) == '/') {
                k = i + 1;
                break;
            }
        }
        if (k == -1)
            return szDateiname;
        else // beginIndex   endIndex
            return szDateiname.substring(k, n); // ??????  n-1 ist zu klein
    }

    /**
     * GetName
     * @return String Name
     * @param String szDateiname, String szExt
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use interne Prozedur, trennt den Dateinamen und gibt ihn aus Example
     * @see #CheckFileName
     * @see #ChangeFileExt
     * @see #getFileNameExt
     */
    public static String getFileName(String szDateiname) {
        int k, i, n;
        n = szDateiname.length();
        k = -1;
        for (i = n - 1; i >= 0; i--) {
            if (szDateiname.charAt(i) == '.') {
                k = i - 1;
                break;
            }
        }
        if (k == -1)
            return szDateiname;
        else
            return szDateiname.substring(0, k + 1);
    }

  /*  Titel        :  Programm zur Umwandlung des Float-Typs IEEE 754 nach Java Float
      Version      :  1.0 Beta
      Copyright    :  Michael Wilhelm
      Autor        :  Michael Wilhelm
      Firma        :  FH Magdeburg, FB Bauwesen
      Beschreibung :  Konvertierung nach Float
      Verfahren    :  a)  Vertauschen der 4 bytes
                      b)  Bestimmen der Mantisse
                      b)  Bestimmen des Exponenten
                      c)  Bestimmen des Vorzeichens
                      d)  Bestimmen der neuen Mantisse 1.FFFFFFFF
                           1. Bit   0.5
                           2. Bit   0.25
                           3. Bit   0.125
                           4. Bit   0.0625
                      e)  Bestimmen des Exponenten (Potenz von 2)
                      f)  Multiplikation von
                           Vorzeichen * Mantisse * Exponenten
      Hinweis      :  Das Verfahren verwendet intern eine Double-Variable.
                      Fehlerkennungen werden noch nicht berücksichtigt
  */

    /**
     * ConvertInt2Float
     * @return float zahl
     * @param int bits
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandlung des IEEE Formates nach Float java Example
     * @see #MyFrexp
     */
    public static float ConvertInt2Float(int bits) {
        double result, faktor, summe;
        int s, e, m;
        int i, n, i1, i2, i3, i4;
        result = 0;
        String szZ1, szZ2, s1, s2, s3, s4;
        Integer II, Bits;
        // die Bytes werden verkehrt herum eingelesen
        // deshalb werden die Bytes vertauscht
        // unterste Byte
        i1 = (bits >> 24) & 0xFF;
        i2 = (bits >> 16) & 0xFF;
        i3 = (bits >> 8) & 0xFF;
        i4 = bits & 0xFF;
        bits = (i4 << 24) + (i3 << 16) + (i2 << 8) + i1;
        // Vorzeichen bestimmen
        if ((bits >> 31) == 0)
            result = 1;
        else
            result = -1;
        // Exponenten bestimmmen
        e = ((bits >> 23) & 0xFF);
        // Mantisse bestimmen
        m = (bits & 0x7FFFFF);
        // wenn Exponenten vorhanden, dann muss die Mantisse bestimmt werden

    /*
      d)  Bestimmen der neuen Mantisse 1.FFFFFFFF
           1. Bit   0.5
           2. Bit   0.25
           3. Bit   0.125
           4. Bit   0.0625
    */

        if ((e > 0) && (e < 255)) {
            // Gesamtformel:  Zahl = (+-) * 2^(e-127) * 1.FFFFFFFFFFFFFFF
            //   1.fffffffff
            summe = 1; // !!!!!!!!!!!!!!!!!!
            faktor = 1;
            for (i = 22; i >= 0; i--) {
                faktor = faktor * 0.5;
                i1 = (m >> i) & 1;
                if (i1 == 1) summe += faktor;
            }
            // nun den Exponenten bestimmen
            // Faktor mit 2 bzw. 0.5
            n = e - 127;
            if (n == 0) {
                faktor = 1;
            }
            else {
                faktor = 1;
                if (n > 0) {
                    for (i = 1; i <= n; i++) faktor *= 2.0;
                }
                else {
                    n = -n;
                    for (i = 1; i <= n; i++) faktor *= 0.5;
                }
            }
            result = result * summe * faktor;
        }
        else {
            // e ist Null
            if (m == 0) {
                result = 0;
            }
            else {
                //   Gesamtformel:  Zahl = (+-) * 2^(e-127) * 0.FFFFFFFFFFFFFFF
                //   0.fffffffff
                summe = 0; // !!!!!!!!!!!!!!!!!!
                faktor = 1;
                for (i = 22; i >= 0; i--) {
                    faktor = faktor * 0.5;
                    if ((m >> i) == 1) summe += faktor;
                }
                n = 126;
                faktor = 1;
                for (i = 1; i <= n; i++) faktor *= 0.5;
                result = result * summe * faktor;
            }
        }
        return (float)result;
    } // ConvertInt2Float(int bits)

    /**
     * MyFrexp
     * @return DbDbRec mantisse, exponent
     * @param double x, double lman, int lexpo
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Normierung Example
     * @see #ConvertInt2Float
     * @see #bestimme_xswD
     */
    public static DbDbRec MyFrexp(double x, double lman, int lexpo) {
        DbDbRec res = new DbDbRec();
        double man;
        int expo;
        man = Math.abs(x);
        expo = 0;
        if (man == 0.0) {
            res.d1 = man;
            res.d2 = expo;
            return res;
        }
        if (man >= 10.0) {
            while (man >= 10) {
                expo++;
                man = man * 0.1;
            }
        }
        else {
            while (man < 1.0) {
                expo--;
                man = man * 10.0;
            }
        }
        res.d1 = man;
        res.d2 = expo;
        return res;
    } // MyFrexp

    /**
     * IntPowerD
     * @return double m^n
     * @param double Base, int Exponent
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Potenzierung durch Multiplikation Example
     * @see #bestimme_xswD
     * @see #log10
     */
    public static double IntPowerD(double Base, int Exponent) {
        int i;
        double y;
        y = 1.0;
        for (i = 0; i < Exponent; i++) y = y * Base;
        return y;
    }

    /**
     * log10
     * @return double zahl
     * @param double x
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Normierung Example
     * @see #bestimme_xswD
     * @see #IntPowerD
     */
    public static double log10(double x) {
        return Math.log(x) / Math.log(10);
    }

    /**
     * KorrigiereXsw
     * @return double Schrittweite
     * @param double xa, double xe, double lxsw
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Grafikroutine Example
     * @see #bestimmeLOGsw
     * @see #BestimmeLogWert
     * @see #bestimme_xswD
     */
    public static double KorrigiereXsw(double xa, double xe, double lxsw) {
        double xsw = lxsw;
        if ((xa > xe) && (xsw > 0.0)) xsw = -xsw;
        if ((xa < xe) && (xsw < 0.0)) xsw = -xsw;
        return xsw;
    }

    /**
     * BestimmeLogWert
     * @return double
     * @param double xa
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use für die Grafikroutine Example
     * @see #bestimmeLOGsw
     * @see #KorrigiereXsw
     * @see #bestimme_xswD
     */
    public static double BestimmeLogWert(double x) {
        return 1; // Thomas
    }

    /**
     * bestimmeLOGsw
     * @return double
     * @param double xa
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use für die Grafikroutine Example
     * @see #KorrigiereXsw
     * @see #BestimmeLogWert
     */
    public static double bestimmeLOGsw(double xa) {
        return 1;
    }

    /**
     * bestimme_xswD
     * @return IntDb3Rec Nachkomma, xa, xsw, xe
     * @param int anz, double xxa, double xxsw, double xxe
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use für die Grafikroutine, bestimmt die Schrittweiten, wenn nur 10 Zahlen auf einer Achse erlaubt sind Example
     * @see #KorrigiereXsw
     * @see #BestimmeLogWert
     * @see #bestimmeLOGsw
     */
    public static IntDb3Rec bestimme_xswD(int anz, double xxa, double xxsw, double xxe) {
        int nachkomma, i;
        double xae_old, br, dn;
        String szZ, szZ2;
        boolean bTauschenXaXe;
        double manXa, manXe;
        int iexpoXa, iexpoXe;
        Double D = new Double(1);
        IntDb3Rec res = new IntDb3Rec();
        szZ = D.toString(xxa);
        szZ2 = D.toString(xxe);
        res.x1 = xxa;
        res.x2 = xxsw;
        res.x3 = xxe;
        if (szZ == szZ2) {
            br = res.x1;
            res.x1 = res.x1 - br * 0.2;
            res.x2 = res.x3 + br * 0.2;
        }
        if (res.x1 > res.x3) {
            br = res.x1;
            res.x1 = res.x2;
            res.x3 = br;
            bTauschenXaXe = true;
        }
        else
            bTauschenXaXe = false;
        if ((res.x3 == 0.0) && (res.x1 == 0.0)) {
            Message("Fehler", "xa und xe sind Null  Proc: Bestimme_xsw (Basis)");
            res.x1 = 0;
            res.x3 = 1;
            res.x2 = 0.1;
            res.i = 2;
            return res;
        }
        manXa = 0;
        iexpoXa = 0;
        MyFrexp(res.x1, manXa, iexpoXa);
        manXe = 0;
        iexpoXe = 0;
        MyFrexp(res.x3, manXe, iexpoXe);
        if ((res.x1 == 0) || (res.x3 == 0)) {
            if (res.x1 == 0) {
                if (iexpoXe < 0) {
                    res.x2 = 1.0 * IntPowerD(0.1, -iexpoXe + 1);
                    nachkomma = -iexpoXe + 1;
                }
                else {
                    res.x2 = 0.1;
                    nachkomma = 1;
                }
            }
            else {
                if (res.x1 < 0) {
                    res.x2 = 1.0 * IntPowerD(0.1, -iexpoXa + 1);
                    nachkomma = -iexpoXa + 1;
                }
                else {
                    res.x2 = 0.1;
                    nachkomma = 1;
                }
            }
        }
        else {
            if (iexpoXa > iexpoXe) {
                res.x2 = 1.0 * IntPowerD(0.1, -iexpoXa + 1);
                nachkomma = -iexpoXa + 1;
            }
            else {
                res.x2 = 1.0 * IntPowerD(0.1, -iexpoXe + 1);
                nachkomma = -iexpoXe + 1;
            }
        }
        if (nachkomma < 0) nachkomma = 0;
        br = (res.x3 - res.x1);
        i = 1;
        dn = (br) / res.x2;
        while (dn > anz) {
            switch (i) {
                case 1:
                    i = 2;
                    res.x2 = res.x2 + res.x2;
                    break;
                case 2:
                    i = 5;
                    res.x2 = res.x2 * 2.5;
                    break;
                case 5:
                    i = 1;
                    res.x2 = res.x2 + res.x2;
                    if (nachkomma > 0) nachkomma--;
                    break;
            } // case
            dn = (br) / res.x2;
        };
        //  xsw = 0.1000000001
        if (nachkomma < 10) {
            szZ = Komma2Point(DStr(res.x2, 20, 20));
            res.x2 = (D.valueOf(szZ)).doubleValue();
        }
        else {
            szZ = Komma2Point(DStr(res.x2, 20, 20));
            res.x2 = D.valueOf(szZ).doubleValue();
            // thomas
            // szZ = FloatToStrF(xsw, ffExponent, 4, 1);
            // xsw = StrToFloat(szZ);
        }
        if (res.x1 < res.x3) {
            //   -0.31   0.12
            //   10.2     20,3
            //   -10.1    -5,3
            xae_old = res.x3;
            if (res.x3 < 0.0) {
                dn = res.x3 + res.x2 * 0.05;
                res.x3 = 0;
                while (res.x3 > dn) // hochzählen von 0 nach xs
                {
                    res.x3 = res.x3 - res.x2;
                }
                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                    //szZ = FloatToStrF(xe, ffExponent, 4, 1);
                    // xe = StrToFloat(szZ);
                    // thomas
                }
                // -20      -10.2    -11
                if (res.x3 < (xae_old - res.x2 * 0.03)) res.x3 = res.x3 + res.x2; // zusätzliche
            } // xe < 0.0
            else {
                dn = res.x3 - res.x2 * 0.05; // xe > 0.0     xsw>0
                res.x3 = 0;
                while (res.x3 < dn) // hochzählen von 0 nach xs
                {
                    res.x3 = res.x3 + res.x2;
                }
                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                    // szZ = FloatToStrF(xe, ffExponent, 4, 1);
                    // xe = StrToFloat(szZ);
                    // thomas
                }
                if (res.x3 < (xae_old - res.x2 * 0.03)) res.x3 = res.x3 + res.x2; // zusätzliche
                // If ((xe-xsw) > xae_old) Then  xe = xe - xsw;
            } // xe > 0.0
            // falls xa=0.98675z464  runterzählen *)
            //  xsw = 0.1000000001
            // szZ = FloatToStrF(xe, ffFixed, 20, NachKomma);
            // xe = StrToFloat(szZ);
            if (res.x1 != 0.0) {
                if (res.x1 < res.x3)
                    res.x2 = Math.abs(res.x2);
                else
                    res.x2 = -Math.abs(res.x2);
                dn = res.x1 + res.x2 * 0.03;
                xae_old = res.x1;
                res.x1 = res.x3;
                while ((res.x1 > dn) || (res.x1 > xae_old)) res.x1 = res.x1 - res.x2;
                // If xa > xae_old            Then  xa = xa - xsw;
                if ((res.x1 + res.x2) < xae_old) res.x1 = res.x1 + res.x2;
                // problem   6,9E-17  statt  0.0
                if ((res.x1 < 1) && (res.x1 != 0.0)) {
                    if (Math.abs(res.x1) < 1.0E-4) {
                        if (Math.abs(log10(Math.abs(res.x1))) > (nachkomma + 1)) res.x1 = 0.0; // ????
                    }
                }

      /*   FloatToText  */

                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x1, 20, 20));
                    res.x1 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x1, 20, 20));
                    res.x1 = D.valueOf(szZ).doubleValue();
                    // szZ = FloatToStrF(xa, ffExponent, 4, 1);
                    //xa = StrToFloat(szZ);
                    // thomas
                }
            }
        } // xa  <  xe
        else {
            res.x2 = -res.x2; // xa > xe    xsw<0
            xae_old = res.x3;
            if (res.x3 < 0.0) {
                dn = res.x3 - res.x2 * 0.05;
                res.x3 = 0;
                while (res.x3 > dn) // hochzählen von 0 nach xs
                {
                    res.x3 = res.x3 + res.x2;
                }
                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                    // szZ = FloatToStrF(xe, ffExponent, 4, 1);
                    // xe = StrToFloat(szZ);
                    // thomas
                }
                // -20      -10.2    -11
                if (res.x3 > (xae_old - res.x2 * 0.03)) res.x3 = res.x3 + res.x2;
                // If ((xe-xsw) < xae_old) Then  xe = xe - xsw;
            }
            else {
                dn = res.x3 + res.x2 * 0.05; // xe > 0.0
                res.x3 = 0;
                while (res.x3 < dn) // hochzählen von 0 nach xs
                {
                    res.x3 = res.x3 - res.x2;
                }
                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x3, 20, 20));
                    res.x3 = D.valueOf(szZ).doubleValue();
                    // szZ = FloatToStrF(xe, ffExponent, 4, 1);
                    // xe = StrToFloat(szZ);
                    // thomas
                }
                // If xe < xae_old         Then  xe = xe - xsw;
                // If ((xe+xsw) > xae_old) Then  xe = xe + xsw;
            }

        /* falls xa=0.98675z464  runterzählen */

            //  xsw = 0.1000000001
            // szZ = FloatToStrF(xe, ffFixed, 20, NachKomma);
            // xe = StrToFloat(szZ);
            if (res.x1 != 0.0) {
                if (res.x1 < res.x3)
                    res.x2 = Math.abs(res.x2);
                else
                    res.x2 = -Math.abs(res.x2);
                if (res.x1 < 0.0) //   xa > xe    xsw<0
                    dn = res.x1 - res.x2 * 0.03;
                else
                    dn = res.x1 - res.x2 * 0.03; // + vorher
                xae_old = res.x1;
                res.x1 = res.x3;
                while (res.x1 < dn) res.x1 = res.x1 - res.x2;
                if (res.x1 < xae_old) {
                    // xae_old=10.01  xa = 10      xe = 0.00031
                    if (res.x1 < (xae_old + res.x2 * 0.01)) res.x1 = res.x1 + res.x2; // zusätzliche
                }
                else {
                    // xae_old=-0.00031  xa = 1      xe = -10.01
                    if ((res.x1 + res.x2) > (xae_old + res.x2 * 0.01)) res.x1 = res.x1 + res.x2; // restore
                }
                if (nachkomma < 10) {
                    szZ = Komma2Point(DStr(res.x1, 20, 20));
                    res.x1 = D.valueOf(szZ).doubleValue();
                }
                else {
                    szZ = Komma2Point(DStr(res.x1, 20, 20));
                    res.x1 = D.valueOf(szZ).doubleValue();
                    //szZ = FloatToStrF(xa, ffExponent, 4, 1);
                    // xa = StrToFloat(szZ);
                    // thomas
                }
            }
        }
        if (bTauschenXaXe) {
            br = res.x1;
            res.x1 = res.x3;
            res.x3 = br;
        }
        if (res.x1 < res.x3)
            res.x2 = Math.abs(res.x2);
        else
            res.x2 = -Math.abs(res.x2);
        res.i = nachkomma;
        return res;
    } // Bestimme _xsw double
    //   OpenDialog

    /**
     * OpenDialog
     * @return String Dateiname
     * @param Frame f, String szHome, String szExt1, String szExt2, String szTitel
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use #Aufruf eines Dialogfensters zur Bestimmung eines Dateinamens Example
     * @see #ReadYesNo
     * @see #Message
     * @see #ReadYesNoCancel new String[] {szExt1, szExt2} String szExt1, String szExt2
     */
    public static String OpenDialog(Frame f, String szHome, String[] szFilter, String szTitel) {
        String szRes;
        JFileChooser chooser = new JFileChooser(szHome);
        chooser.setMultiSelectionEnabled(false);
        int n = szFilter.length;
        //String[] f = new String[n+1];
        BasisFileFilter filter = new BasisFileFilter(szFilter, szTitel);
        BasisFileView fileView = new BasisFileView();
        // fileView.putIcon("jpg", jpgIcon);
        // fileView.putIcon("gif", gifIcon);
        chooser.setFileView(fileView);
        chooser.addChoosableFileFilter(filter);
        chooser.setFileFilter(filter);
        // Vorschau
        // chooser.setAccessory(new FilePreviewer(chooser));
        // chooser.setCurrentDirectory( szHomeVerz );
        chooser.setDialogTitle("Öffnen einer Datei");
        chooser.setApproveButtonMnemonic('O');
        chooser.setApproveButtonText("Öffnen");
        chooser.setApproveButtonToolTipText("Auswählen einer Datei");
        int retval = chooser.showOpenDialog(f);
        // int retval = chooser.showDialog(f,"Öffnen");
        // BasisIO.Message("Meldung", new Integer(1).toString(retval) );
        if (retval == 0) {
            File theFile = chooser.getSelectedFile();
            if (theFile == null) {
                return null; // szRes= new String("");
            }
            else {
                szRes = new String(chooser.getSelectedFile().getAbsolutePath());
                return szRes;
            }
        }
        else {
            return null; // szRes= new String("");
        }
    } // FileChooser

    /**
     * Beispiel String szDatei; String szHomeVerz = System.getProperty("user.dir");
     * szDatei = BasisIO.OpenDialog(this, szHomeVerz, "txt","bat","Eingabe einer Datei"); if (szDatei==null) {
     * // Einlesen der Datei }
     */

    /**
     * OpenDialog
     * @return String Dateiname
     * @param Frame f, String szHome, String szExt1, String szExt2, String szTitel
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use #Aufruf eines Dialogfensters zur Bestimmung eines Dateinamens Example
     * @see #ReadYesNo
     * @see #Message
     * @see #ReadYesNoCancel new String[] {szExt1, szExt2} String szExt1, String szExt2
     */
    public static String SaveDialog(Frame f, String szHome, String[] szFilter, String szTitel) {
        String szRes;
        JFileChooser chooser = new JFileChooser(szHome);
        chooser.setMultiSelectionEnabled(false);
        int n = szFilter.length;
        //String[] f = new String[n+1];
        BasisFileFilter filter = new BasisFileFilter(szFilter, szTitel);
        BasisFileView fileView = new BasisFileView();
        // fileView.putIcon("jpg", jpgIcon);
        // fileView.putIcon("gif", gifIcon);
        chooser.setFileView(fileView);
        chooser.addChoosableFileFilter(filter);
        chooser.setFileFilter(filter);
        // Vorschau
        // chooser.setAccessory(new FilePreviewer(chooser));
        // chooser.setCurrentDirectory( szHomeVerz );
        chooser.setDialogTitle("Speichern einer Datei");
        chooser.setApproveButtonMnemonic('S');
        chooser.setApproveButtonToolTipText("AAuswählen einer Datei");
        chooser.setApproveButtonText("Speichern");
        int retval = chooser.showOpenDialog(f);
        // BasisIO.Message("Meldung", new Integer(1).toString(retval) );
        if (retval == 0) {
            File theFile = chooser.getSelectedFile();
            if (theFile == null) {
                return null; // szRes= new String("");
            }
            else {
                szRes = new String(chooser.getSelectedFile().getAbsolutePath());
                return szRes;
            }
        }
        else {
            return null; // szRes= new String("");
        }
    } // FileChooser Save

    /**
     * getButton
     * @return int taste
     * @param MouseEvent e
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Bestimmen, welche Maustaset gedrückt wurde Example
     * @see
     */
    public static int getButton(MouseEvent e) {
        int mode = e.getModifiers();
        if ((mode & e.BUTTON2_MASK) > 0) {
            return 2;
        }
        if ((mode & e.BUTTON3_MASK) > 0) {
            return 3;
        }
        return 1;
    } // getButton

    /**
     * getObjTyp
     * @return int Typ (C_Integer, C_Long, C_Double, C_Boolean, C_String)
     * @param Object Obj
     * @exception IllegalArgumentException
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  Nr = BasisIO.getObjTyp( o ) ;
     * @see #createLong
     * @see #createInt
     * @see #createBoolean
     * @see #createDouble
     */
    public static int getObjTyp(Object Obj) {
        int id = 0;
        if (Obj instanceof Integer) return C_Integer;
        if (Obj instanceof Long) return C_Long;
        if (Obj instanceof Double) return C_Double;
        if (Obj instanceof Boolean) return C_Boolean;
        if (Obj instanceof String) return C_String;
        throw new IllegalArgumentException();
    }

    /**
     * createLong
     * @return Long
     * @param long value
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  Long L = BasisIO.createLong(22);
     * @see #createInt
     * @see #createBoolean
     * @see #createDouble
     * @see #getObjTyp
     */
    public static Long createLong(long value) {
        return new Long(value);
    }

    /**
     * createLong
     * @return Integer
     * @param int value
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  Long L = BasisIO.createLong(22);
     * @see #createLong
     * @see #createInt
     * @see #createBoolean
     * @see #createDouble
     * @see #getObjTyp
     */
    public static Integer createInteger(int value) {
        return new Integer(value);
    }

    /**
     * createBoolean
     * @return Boolean
     * @param boolean value
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  Boolean B = BasisIO.createBoolean(false);
     * @see #createLong
     * @see #createInt
     * @see #createDouble
     * @see #getObjTyp
     */
    public static Boolean createBoolean(boolean value) {
        return new Boolean(value);
    }

    /**
     * createDouble
     * @return Double
     * @param double value
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  Double D = BasisIO.createDouble(22);
     * @see #createLong
     * @see #createInt
     * @see #createBoolean
     * @see #getObjTyp
     */
    public static Double createDouble(double value) {
        return new Double(value);
    }

    /**
     * toString
     * @return String
     * @param int i
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines int in ein String Example
     * @see #ObjectToString
     */
    public static String toString(int i) {
        return new Integer(1).toString(i);
    }

    /**
     * toString
     * @return String
     * @param long l
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines long in ein String Example
     * @see #ObjectToString
     */
    public static String toString(long l) {
        return new Long(1).toString(l);
    }

    /**
     * toString
     * @return String
     * @param double d
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines double in ein String Example  System.println( BasisIO.toString(3.5)
     * @see #ObjectToString
     */
    public static String toString(double d) {
        return new Double(1).toString(d);
    }

    /**
     * ObjectToString
     * @return String
     * @param Object Obj
     * @exception none
     * @version      1.0
     * @author Thomas Schmidt, Michael Wilhelm FH MD, FB Bauwesen
     * @use Umwandeln eines Objectes in ein String Example  System.println( BasisIO.ObjetcToString(3.5)
     * @see #toString
     */
    public static String ObjectToString(Object Obj) {
        int ObjTyp = BasisIO.getObjTyp(Obj);
        switch (ObjTyp) {
            case BasisIO.C_Integer:
                Integer I = (Integer)Obj;
                return I.toString(I.intValue());
            case BasisIO.C_Long:
                Long L = (Long)Obj;
                return L.toString(L.longValue());
                //break;
            case BasisIO.C_Double:
                Double D = (Double)Obj;
                return D.toString(D.doubleValue());
                // break;
            case BasisIO.C_Boolean:
                break;
            case BasisIO.C_String:
                return (String)Obj;
                //break;
            default:
                return new String("");
        } // case
        return new String("");
    }

    /**
     * Load image icon from url string.
     * @param urlString The URL to load from.
     * @return The ImageIcon Object if found, or null
     */
    public static ImageIcon loadImageIcon(String urlString) {
        if (urlString != null) {
            // Message("image",urlString);
            return new ImageIcon(urlString);

            /*
            java.net.URL url = ClassLoader.getSystemResource(urlString);
            if (url != null)
                return new ImageIcon(url);
            */
        }
        return null;
    }

    /**
     * Center a frame to the screen. The size can be presetted or the actual frame size can be used.
     * @param frame Specifies the frame that should be centered
     * @param preset Specifies a preset dimension. If this is null, the dimension of the frame is used.
     */
    public static void centerScreen(java.awt.Window frame, java.awt.Dimension preset) {
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        java.awt.Dimension frameSize;
        if (preset == null)
            preset = frame.getSize();
        if (preset.height > screenSize.height)
            preset.height = screenSize.height;
        if (preset.width > screenSize.width)
            preset.width = screenSize.width;
        // set new pos:
        frame.setBounds((screenSize.width - preset.width) / 2, (screenSize.height - preset.height) / 2,
            preset.width, preset.height);
    }
} //   Class BasisIO
