Für Java-Spezialisten

Juelin

Bekanntes Mitglied
Hallo Gemeinde,
wie vielleicht einige wissen komme ich von Delphi her und lerne jetzt Java.
Bei uns gab es einen Spruch.
Die meisten Computerfehler sitzen vor dem Bildschirm.
Und das stimmt.
Hier kommt was für absolute Java-Spezialisten.
Nun sollte man, als guter Programmierer, versuchen so viel wie möglich zu verhindern,
das der Anwender Fehler machen kann.
z. B. bei einer Eingabe (ist ja immer ein Textfeld und es können alle Zeichen eingegeben werden)
- bei Integer-Wert nur Zahlen und eventuell Vorzeichen
- bei Double-Wert nur Zahlen und eventuell Komma und Vorzeichen
- bei String-Wert alles
- bei Datum-Wert nur Zahlen und zwei Punkte und Gültigkeit prüfen
- bei Uhrzeit-Wert nur Zhalen und zwei Doppelpunkte und Gültigkeit prüfen
eingeben lassen.
So kann der Anwender schon gar kein Fehler machen und man erspart sich Ärger.
In Delphi habe ich das gemacht (Jetzt kommen Object-Pascal Befehle).

Vor der Eingabe (Variable initialisieren)
Code:
    Edit1.Enabled:=True;
    Edit1.Color:=clWhite;
    Edit1.Font.Color:=clBlue;
    Edit1.ReadOnly:=False;
    Edit1.Text:='';
    ialpha:='';
    inummer:=0;
    iart:=2;
    inumkom:=0;
    ikomma:=0;
    izeich:=3;
    istell:=0;
    ifunc:=6;
    ilanmax:=10;
    ilanmin:=1;
    iautocr:=1;
    Form3.ActiveControl:=Edit1;

Der eigentlich Code während der Eingabe
Code:
unit Eingabe;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

var
  itaste:   char;     // Tastencode
  ifunc:    integer;  // Funktion
                      // 1 = nummerisch ohne Komma ohne Vorzeichen
                      // 2 = nummerich ohne Komma mit Vorzeichen
                      // 3 = nummerisch mit Komma ohne Vorzeichen
                      // 4 = nummerisch mit Komma mit Vorzeichen
                      // 5 = Alphanummerisch
                      // 6 = Datum
                      // 7 = Telefonnummer
                      // 8 = Uhrzeit
   ilanmax: integer;  // Eingabelaenge maximal
   ilanmin: integer;  // Eingabelaenge minimal
   ikomma:  integer;  // Anzahl Nachkommastellen
   iart:    integer;  // Eingabeart
                      // 1 = vorher/nachher anzeigen
                      // 2 = nachher anzeigen
                      // 3 = Stern anzeigen
                      // 4 = nicht anzeigen
                      // 5 = Überschreiben (nur bei ifunc=5)
                      // 6 = Einfügen (nur bei ifunc=5)
   izeich:  integer;  // Zeichenart
                      // 1 = nur Kleinbuchstaben
                      // 2 = nur Grossbuchstaben
                      // 3 = Gross- und Kleinbuchstaben
   iautocr: integer;  // Automatischer Feldsprung
                      // 0 = nein
                      // 1 = ja
   istell:  integer;  // Eingabestelle (vorher immer 0)
   imkom:   integer;  // Merker ob Komma eingegeben worden
   iminus:  integer;  // Merker Plus/Minus 0/1
   ialpha:  string;   // Eingabefeld Alphanummerisch
   inummer: integer;  // Eingabefeld nummerisch mit Vorzeichen
   inumkom: double;   // Eingabefeld nummerisch mit Vorueichen und Komma
   ivz: integer;
   ivk: integer;
   iko: integer;
   ink: integer;
   ivkl: integer;
   procedure FeldEingabe(einfeld: TEdit);

implementation

procedure FeldEingabe(einfeld: TEdit);
 var numm:    integer;
 var htaste:  char;
 var hstell:  integer;
 var hleer:   string;
 var hstern:  string;
 var xstern:  string;
 var hilf1:   integer;
 var hilf2:   integer;
 var hilf3:   integer;
 var hilf4:   integer;
 var hilf5:   string;
 var hilf6:   string;
 var hilf7:   double;
 var hilf8:   integer;
 var hilf9:   integer;

begin
  if ((iart = 5) and (ifunc = 5)) then
  begin
    hilf1:=einfeld.SelStart+1;
    if (izeich = 1) then
    begin
      hilf5:=itaste;
      hilf6:=LowerCase(hilf5);
      itaste:=hilf6[1];
    end;
    if (izeich = 2) then
    begin
      hilf5:=itaste;
      hilf6:=UpperCase(hilf5);
      itaste:=hilf6[1];
    end;
    if hilf1 > ilanmax then
    begin
      einfeld.Text:=ialpha;
      itaste:=char(0);
    end else begin
      hilf5:='';
      hilf6:='';
      if itaste <> chr(13) then
      begin
        if hilf1 > 1 then
        begin
          hilf5:=Copy(einfeld.Text,1,hilf1-1);
        end;
        if hilf1 < ilanmax then
        begin
          hilf2:=ilanmax-hilf1;
          hilf6:=Copy(einfeld.Text,hilf1+1,hilf2);
        end;
        if itaste = char(8) then
        begin
         ialpha:=hilf5+hilf6;
         if hilf1 > 1 then
         begin
           hilf1:=hilf1 - 1;
         end;
        end else begin
         ialpha:=hilf5+char(itaste)+hilf6;
        end;
        itaste:=char(0);
      end else begin
        ialpha:=einfeld.Text;
      end;
      einfeld.Text:=ialpha;
    end;
    einfeld.SelStart:=hilf1;
    einfeld.Update;
  end else begin
    if ((iart = 6) and (ifunc = 5)) then
    begin
      hilf1:=einfeld.SelStart+1;
      if (izeich = 1) then
      begin
        hilf5:=itaste;
        hilf6:=LowerCase(hilf5);
        itaste:=hilf6[1];
      end;
      if (izeich = 2) then
      begin
        hilf5:=itaste;
        hilf6:=UpperCase(hilf5);
        itaste:=hilf6[1];
      end;
      if hilf1 > ilanmax then
      begin
        einfeld.Text:=ialpha;
        itaste:=char(0);
      end else begin
        hilf5:='';
        hilf6:='';
        if itaste <> chr(13) then
        begin
          if hilf1 > 1 then
          begin
            hilf5:=Copy(einfeld.Text,1,hilf1-1);
          end;
          if hilf1 < ilanmax then
          begin
            hilf2:=ilanmax-hilf1;
            hilf6:=Copy(einfeld.Text,hilf1,hilf2);
          end;
          if itaste = char(8) then
          begin
           ialpha:=hilf5+hilf6;
           if hilf1 > 1 then
           begin
             hilf1:=hilf1 - 1;
           end;
         end else begin
            ialpha:=hilf5+char(itaste)+hilf6;
          end;
          itaste:=char(0);
        end;
        einfeld.Text:=ialpha;
      end;
      einfeld.SelStart:=hilf1;
      einfeld.Update;
    end else begin
      if iart > 4 then
      begin
        iart:=1;
      end;
      numm:=ord(itaste);
      hstell:=ilanmax;
      hleer:='';
      hstern:='';
      for hilf1:=1 to ilanmax do
      begin
        hleer:=hleer+' ';
        hstern:=hstern+'*';
      end;
      if (istell = 0) then
      begin
        imkom:=0;
        iminus:=0;
        ivz:=0;
        ivk:=0;
        iko:=0;
        ink:=0;
        ivkl:=0;
        if (ifunc = 2) then
        begin
          ivkl:=ilanmax - 1;
        end;
        if (ifunc = 3) then
        begin
          ivkl:=ilanmax - ikomma - 1;
        end;
        if (ifunc = 4) then
        begin
          ivkl:=ilanmax - ikomma - 2;
        end;
        if (ifunc = 7) then
        begin
          ivkl:=ilanmax - 1;
        end;
        if (iart > 1) then
        begin
          inummer:=0;
          inumkom:=0;
          ialpha:=hleer;
          einfeld.Text:=hleer;
        end else begin
          if (ifunc = 1) then
          begin
            hilf5:='%';
            hilf6:=Format('%d', [ilanmax]);
            hilf5:=hilf5+hilf6+'d';
            ialpha:=Format(hilf5, [inummer]);
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 2) then
          begin
            hilf5:='%-';
            hilf6:=Format('%d', [hstell]);
            hilf5:=hilf5+hilf6+'d';
            ialpha:=Format(hilf5, [inummer]);
            einfeld.Text:=ialpha;
            hilf5:=Copy(ialpha, 1, 1);
            if (hilf5 = '-') then
            begin
              iminus:=1;
            end;
          end;
          if (ifunc = 3) then
          begin
            hilf5:='%';
            hilf4:=ilanmax - ikomma - 1;
            hilf6:=Format('%d', [hilf4]);
            hilf5:=hilf5+hilf6+'.';
            hilf6:=Format('%d', [ikomma]);
            hilf5:=hilf5+hilf6+'f';
            ialpha:=Format(hilf5, [inumkom]);
            einfeld.Text:=ialpha;
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
          if (ifunc = 4) then
          begin
            hilf5:='%-';
            hilf4:=ilanmax - ikomma - 2;
            hilf6:=Format('%d', [hilf4]);
            hilf5:=hilf5+hilf6+'.';
            hilf6:=Format('%d', [ikomma]);
            hilf5:=hilf5+hilf6+'f';
            ialpha:=Format(hilf5, [inumkom]);
            einfeld.Text:=ialpha;
            hilf5:=Copy(ialpha, 1, 1);
            if (hilf5 = '-') then
            begin
              iminus:=1;
            end;
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
          if (ifunc = 5) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 6) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 7) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 8) then
          begin
            einfeld.Text:=ialpha;
          end;
        end;
      einfeld.update;
      end;
      if (istell >= hstell) then
      begin
        itaste:=chr(0);
        numm:=0;
        if (iautocr = 1) then
        begin
          itaste:=chr(13);
          numm:=13;
        end;
      end;
// Tastenwerte 8=Backspace 13=Enter 43=+ 44=, 45=- 46=. 48-57=0-9
      if ((numm = 13) and (istell < ilanmin)) then
      begin
        itaste:=chr(0);
        numm:=0;
        if (istell = 0) then
        begin
          itaste:=chr(13);
          if (ifunc = 1) then
          begin
            hilf5:='%';
            hilf6:=Format('%d', [ilanmax]);
            hilf5:=hilf5+hilf6+'d';
            ialpha:=Format(hilf5, [inummer]);
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 2) then
          begin
            hilf5:='%-';
            hilf6:=Format('%d', [hstell]);
            hilf5:=hilf5+hilf6+'d';
            ialpha:=Format(hilf5, [inummer]);
            einfeld.Text:=ialpha;
            hilf5:=Copy(ialpha, 1, 1);
            if (hilf5 = '-') then
            begin
              iminus:=1;
            end;
          end;
          if (ifunc = 3) then
          begin
            hilf5:='%';
            hilf4:=ilanmax - ikomma - 1;
            hilf6:=Format('%d', [hilf4]);
            hilf5:=hilf5+hilf6+'.';
            hilf6:=Format('%d', [ikomma]);
            hilf5:=hilf5+hilf6+'f';
            ialpha:=Format(hilf5, [inumkom]);
            einfeld.Text:=ialpha;
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
          if (ifunc = 4) then
          begin
            hilf5:='%-';
            hilf4:=ilanmax - ikomma - 2;
            hilf6:=Format('%d', [hilf4]);
            hilf5:=hilf5+hilf6+'.';
            hilf6:=Format('%d', [ikomma]);
            hilf5:=hilf5+hilf6+'f';
            ialpha:=Format(hilf5, [inumkom]);
            einfeld.Text:=ialpha;
            hilf5:=Copy(ialpha, 1, 1);
            if (hilf5 = '-') then
            begin
              iminus:=1;
            end;
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
          if (ifunc = 5) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 6) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 7) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (ifunc = 8) then
          begin
            einfeld.Text:=ialpha;
          end;
          if (iart = 3) then
          begin
            xstern:='';
            if istell > 0 then
            begin
              for hilf9:=1 to istell do
              begin
                xstern:=xstern+'*';
              end;
            end;
            einfeld.Text:=xstern;
          end;
          if (iart = 4) then
          begin
            einfeld.Text:=hleer;
          end;
          einfeld.update;
        end;
      end;
      htaste:=itaste;
      if ((ifunc = 1) or (ifunc = 2) or (ifunc = 3) or (ifunc = 4)) then
      begin
        if ((numm <> 8) and (numm <> 13)) then
        begin
          itaste:=chr(0);
        end;
      end;
      if (ifunc = 6) then
      begin
        if ((numm <> 8) and (numm <> 13)) then
        begin
          itaste:=chr(0);
        end;
      end;
      if (ifunc = 7) then
      begin
        if ((numm <> 8) and (numm <> 13)) then
        begin
          itaste:=chr(0);
        end;
      end;
      if (ifunc = 8) then
      begin
        if ((numm <> 8) and (numm <> 13)) then
        begin
          itaste:=chr(0);
        end;
      end;
      if ((numm = 8) and (istell > 0)) then
      begin
        if (istell = imkom) then
        begin
          imkom:=0;
          iko:=0;
        end;
        istell:=istell - 1;
        if (istell = 0) then
        begin
          iminus:=0;
          ivz:=0;
          ivk:=0;
          iko:=0;
          ink:=0;
          ivkl:=0;
          if (ifunc = 2) then
          begin
            ivkl:=ilanmax - 1;
          end;
          if (ifunc = 3) then
          begin
            ivkl:=ilanmax - ikomma - 1;
          end;
          if (ifunc = 4) then
          begin
            ivkl:=ilanmax - ikomma - 2;
          end;
          if (ifunc = 7) then
          begin
            ivkl:=ilanmax - 1;
          end;
        end;
        if ((ifunc = 1) or (ifunc = 2)) then
        begin
          if (inummer < 0) then
          begin
            inummer:=inummer * -1;
          end;
          hilf7:=inummer;
          hilf7:=hilf7 / 10;
          inummer:=Trunc(hilf7);
          if ((ifunc = 2) and (iminus = 1) and (inummer > 0) and (istell > 0)) then
          begin
            inummer:=inummer * -1;
          end;
        end;
        if ((ifunc = 5) or (ifunc = 6) or (ifunc = 7) or (ifunc = 8)) then
        begin
          hilf5:=ialpha;
          ialpha:='';
          if (istell > 0) then
          begin
            ialpha:=Copy(hilf5, 1, istell);
          end;
          hilf3:=ilanmax - istell;
          for hilf1:=1 to hilf3 do
          begin
            ialpha:=ialpha+' ';
          end;
        end;
      end;
      if ((numm = 8) and (istell = 0)) then
      begin
        itaste:=chr(0);
        numm:=0;
        ivz:=0;
        ivk:=0;
        iko:=0;
        ink:=0;
        ivkl:=0;
        if (ifunc = 2) then
        begin
          ivkl:=ilanmax - 1;
        end;
        if (ifunc = 3) then
        begin
          ivkl:=ilanmax - ikomma - 1;
        end;
        if (ifunc = 4) then
        begin
          ivkl:=ilanmax - ikomma - 2;
        end;
        if (ifunc = 7) then
        begin
          ivkl:=ilanmax - 1;
        end;
      end;
      if ((istell = 0) and (numm <> 13) and (numm <> 0)) then
      begin
        imkom:=0;
        iminus:=0;
        inummer:=0;
        inumkom:=0;
        ialpha:=hleer;
        einfeld.Text:=ialpha;
        if (ifunc = 2) then
        begin
          hilf5:='%-';
          hilf6:=Format('%d', [hstell]);
          hilf5:=hilf5+hilf6+'d';
          ialpha:=Format(hilf5, [inummer]);
          hilf5:=Copy(ialpha, 1, 1);
          if (hilf5 = '-') then
          begin
            iminus:=1;
          end;
        end;
        if (ifunc = 3) then
        begin
          hilf5:='%';
          hilf4:=ilanmax - ikomma - 1;
          hilf6:=Format('%d', [hilf4]);
          hilf5:=hilf5+hilf6+'.';
          hilf6:=Format('%d', [ikomma]);
          hilf5:=hilf5+hilf6+'f';
          ialpha:=Format(hilf5, [inumkom]);
          if (iko = 1) then
          begin
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
        end;
        if (ifunc = 4) then
        begin
          hilf5:='%-';
          hilf4:=ilanmax - ikomma - 2;
          hilf6:=Format('%d', [hilf4]);
          hilf5:=hilf5+hilf6+'.';
          hilf6:=Format('%d', [ikomma]);
          hilf5:=hilf5+hilf6+'f';
          ialpha:=Format(hilf5, [inumkom]);
          hilf5:=Copy(ialpha, 1, 1);
          if (hilf5 = '-') then
          begin
            iminus:=1;
          end;
          if (iko = 1) then
          begin
            for hilf4:=1 to ilanmax do
            begin
              hilf5:=Copy(ialpha, hilf4, 1);
              if (hilf5 = ',') then
              begin
                imkom:=hilf4;
              end;
            end;
          end;
        end;
        if (iart = 3) then
        begin
          xstern:='';
          if istell > 0 then
          begin
            for hilf9:=1 to istell do
            begin
              xstern:=xstern+'*';
            end;
          end;
          einfeld.Text:=xstern;
        end;
        if (iart = 4) then
        begin
          einfeld.Text:=hleer;
        end;
        einfeld.update;
      end;
      if ((ifunc = 5) and (ord(itaste) > 0) and (numm <> 8) and (numm <> 13)) then
      begin
        if (izeich = 1) then
        begin
          hilf5:=itaste;
          hilf6:=LowerCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (izeich = 2) then
        begin
          hilf5:=itaste;
          hilf6:=UpperCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (iart = 3) then
        begin
          itaste:='*';
        end;
        if (iart = 4) then
        begin
          itaste:=' ';
        end;
      end;
      if ((ifunc = 6) and (ord(itaste) > 0) and (numm <> 8) and (numm <> 13)) then
      begin
        if (izeich = 1) then
        begin
          hilf5:=itaste;
          hilf6:=LowerCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (izeich = 2) then
        begin
          hilf5:=itaste;
          hilf6:=UpperCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (iart = 3) then
        begin
          itaste:='*';
        end;
        if (iart = 4) then
        begin
          itaste:=' ';
        end;
      end;
      if ((ifunc = 7) and (ord(itaste) > 0) and (numm <> 8) and (numm <> 13)) then
      begin
        if (izeich = 1) then
        begin
          hilf5:=itaste;
          hilf6:=LowerCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (izeich = 2) then
        begin
          hilf5:=itaste;
          hilf6:=UpperCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (iart = 3) then
        begin
          itaste:='*';
        end;
        if (iart = 4) then
        begin
          itaste:=' ';
        end;
      end;
      if ((ifunc = 8) and (ord(itaste) > 0) and (numm <> 8) and (numm <> 13)) then
      begin
        if (izeich = 1) then
        begin
          hilf5:=itaste;
          hilf6:=LowerCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (izeich = 2) then
        begin
          hilf5:=itaste;
          hilf6:=UpperCase(hilf5);
          itaste:=hilf6[1];
          numm:=ord(itaste);
        end;
        if (iart = 3) then
        begin
          itaste:='*';
        end;
        if (iart = 4) then
        begin
          itaste:=' ';
        end;
      end;
      if ((numm > 47) and (numm < 58)) then
      begin
        if ((ifunc = 1) or (ifunc = 5)) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
        if (ifunc = 6) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
        if (ifunc = 7) then
        begin
          if (ivk < ivkl) then
          begin
            itaste:=htaste;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
        if (ifunc = 8) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
        if ((ifunc = 2) or (ifunc = 3) or (ifunc = 4)) then
        begin
          if (ivk < ivkl) then
          begin
            itaste:=htaste;
            ivk:=ivk + 1;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
        if ((ifunc = 2) or (ifunc = 3) or (ifunc = 4)) then
        begin
          if (iko = 1) then
          begin
            if (ink < ikomma) then
            begin
              itaste:=htaste;
              ivk:=ivk + 1;
              if (iart = 3) then
              begin
                itaste:='*';
              end;
              if (iart = 4) then
              begin
                itaste:=' ';
              end;
            end;
          end;
        end;
      end;
      if (ifunc = 6) then
      begin
        if (numm = 46) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
      end;
      if (ifunc = 7) then
      begin
        if istell = 0 then
        begin
          if (numm = 43) then
          begin
            itaste:=htaste;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
        if (numm = 45) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
      end;
      if (ifunc = 8) then
      begin
        if (numm = 58) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
      end;
      if (ifunc = 5) then
      begin
        if ((numm = 43) or (numm = 45)) then
        begin
          if (istell = 0) then
          begin
            itaste:=htaste;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
      end;
      if ((ifunc = 2) or (ifunc = 4)) then
      begin
        if ((numm = 43) or (numm = 45)) then
        begin
          if (istell = 0) then
          begin
            itaste:=htaste;
            iminus:=1;
            ivz:=1;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
      end;
      if (ifunc = 5) then
      begin
        if (numm = 44) then
        begin
          itaste:=htaste;
          if (iart = 3) then
          begin
            itaste:='*';
          end;
          if (iart = 4) then
          begin
            itaste:=' ';
          end;
        end;
      end;
      if ((ifunc = 3) or (ifunc = 4)) then
      begin
        if (iko = 0) then
        begin
          if (numm = 44) then
          begin
            itaste:=htaste;
            imkom:=istell + 1;
            iko:=1;
            if (iart = 3) then
            begin
              itaste:='*';
            end;
            if (iart = 4) then
            begin
              itaste:=' ';
            end;
          end;
        end;
      end;
      if ((ord(itaste) > 0) and (ord(itaste) <> 8) and (ord(itaste) <> 13) and (numm > 0)) then
      begin
        istell:=istell + 1;
        if ((ifunc = 1) or (ifunc = 2)) then
        begin
          if ((numm <> 43) and (numm <> 45)) then
          begin
            if (inummer < 0) then
            begin
              inummer:=inummer * -1;
            end;
            hilf1:=numm - 48;
            inummer:=inummer * 10;
            inummer:=inummer + hilf1;
            if ((ifunc = 2) and (iminus = 1) and (inummer > 0)) then
            begin
              inummer:=inummer * -1;
            end;
          end;
        end;
        if ((ifunc = 3) or (ifunc = 4)) then
        begin
          if ((numm <> 43) and (numm <> 44) and (numm <> 45)) then
          begin
            if (inumkom < 0) then
            begin
              inumkom:=inumkom * -1;
            end;
            hilf1:=numm - 48;
            hilf2:=Trunc(inumkom);
            hilf4:=0;
            if (imkom > 0) then
            begin
              hilf4:=istell - imkom;
            end;
            if (hilf4 > 0) then
            begin
              hilf7:=hilf1;
              for hilf8:=1 to hilf4 do
              begin
                hilf7:=hilf7 / 10;
              end;
              inumkom:=inumkom + hilf7;
            end else begin
              hilf2:=hilf2 * 10;
              hilf2:=hilf2 + hilf1;
              inumkom:=hilf2;
            end;
            if ((ifunc = 4) and (iminus = 1) and (inumkom > 0)) then
            begin
              inumkom:=inumkom * -1;
            end;
          end;
        end;
        if (ifunc = 5) then
        begin
          Insert(chr(numm),ialpha,istell);
          hilf3:=ilanmax + 1;
          Delete(ialpha, hilf3, 1);
        end;
        if (ifunc = 6) then
        begin
          Insert(chr(numm),ialpha,istell);
          hilf3:=ilanmax + 1;
          Delete(ialpha, hilf3, 1);
        end;
        if (ifunc = 7) then
        begin
          Insert(chr(numm),ialpha,istell);
          hilf3:=ilanmax + 1;
          Delete(ialpha, hilf3, 1);
        end;
        if (ifunc = 8) then
        begin
          Insert(chr(numm),ialpha,istell);
          hilf3:=ilanmax + 1;
          Delete(ialpha, hilf3, 1);
        end;
      end;
      if ((itaste = ' ') and (iart = 4)) then
      begin
        itaste:=chr(0);
      end;
    end;
  end;
end;

end.

Nach der Eingabe
Code:
procedure TForm3.Edit10KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if mlauf = 11 then
  begin
if ((istell = ilanmax) and (ord(itaste) > 0) and (iautocr = 1)) then
    begin
      Key:=ord(chr(13));
    end;
    if ord(Key) = 13 then
    begin
      istell:=0;
      Label2.Caption:='';
      Edit10.ReadOnly:=True;
      Edit10.AutoSelect:=False;
      if ((inummer < 101) and (inummer > 0)) then
      begin
        e3spo:=inummer;

......... weiter im Programm

      end else begin
        Label2.Caption:='Sauerstoffsätigung darf nur maximal 100% und größer Null sein';
        Edit10.Enabled:=True;
        Edit10.Color:=clWhite;
        Edit10.Font.Color:=clBlue;
        Edit10.ReadOnly:=False;
        Edit10.Text:='';
        ialpha:='';
        inummer:=0;
        iart:=2;
        inumkom:=0;
        ikomma:=0;
        izeich:=3;
        istell:=0;
        ifunc:=1;
        ilanmax:=3;
        ilanmin:=1;
        iautocr:=1;
        if mart = 2 then
        begin
          Edit10.Text:=IntToStr(e3spo);
          inummer:=e3spo;
          iart:=1;
        end;
        Form3.ActiveControl:=Edit10;
        Edit10.AutoSelect:=True;
      end;
    end;
  end;
end;

Gibt es sowas auch schon in Java?
Ich bin gerade dabei, das nach Java zu portieren.
Ich glaube aber, dass das die Königsklasse der Programmierung ist, und nur was für absolute Spezialisten.

So, das wollte ich Euch mal mitteilen.
Frohe Ostern und schöner Gruß
Jürgen
 

KonradN

Super-Moderator
Mitarbeiter
Schau Dir evtl. einmal die controlsFX Library an. Die bietet einiges rund um das Thema Validierung.
(Wäre da so um die Klasse ValidationSupport)

Generell ist dabei aber immer die Frage, was man genau haben möchte. Das Verhindern von Eingaben ist nicht immer sinnvoll. Eher eine Validierung der fertigen Eingabe. Aber natürlich geht beides. Das Verhindern wäre ein einfaches:
Java:
        TextField restrictedTextField = new TextField();
        restrictedTextField.textProperty().addListener((observable, oldValue, newValue) -> {
            String pattern = "[^a-zA-Z0-9]";
            ((StringProperty) observable).set(newValue.replaceAll(pattern, ""));
        });
(Nur um auf die Schnelle etwas Code zu zeigen. Kann man bestimmt besser umsetzen).

Bei der Validierung würde man z.B. auf die focusProperty() zugreifen um beim Focus-Verlust den Inhalt zu prüfen um dann z.B. Symbole ein/auszublenden oder Nachrichten einblenden.
 

AndiE

Top Contributor
Ich finde den delphi-Code zu kryptisch. Selbst wenn man diese Überprüfung komplett selbst schreiben will, würde ich entweder das in Prozeduren trennen oder aber das mit einer Klassenhierachie machen. Dann würde ich z.B. eher so etwie sie "boolean checkDate( String in)" festlegen. Ist der String "in" ein gültiges Datum, kommt "true" zurück, sonst "false" . In der Prozedur wird dann der übergebene String überprüft, was auch die Anzahl der Variablen etwas übersichtlicher macht.

Ansonsten würde ich das Programm teilen, weil eine Zeilennummer über 1000 schon ziemlich groß ist. Ob und wie das in Delphi geht, weiß ich nicht, es ist in Java aber gängige Praxis.
 

KonradN

Super-Moderator
Mitarbeiter
Ob und wie das in Delphi geht, weiß ich nicht
Da ist sehr viel durchaus ähnlich. Delphi ist auch objektorientiert - also durchaus vergleichbar zu Java. Wobei es keine managed Sprache ist, es gibt also keinen Garbage Collector. Du musst also Instanzen selbst wieder entfernen, wenn Du diese nicht mehr brauchst. Also diesbezüglich ähnlich C/C++.
Ich will das aber nicht weiter vertiefen - wenn das interessieren sollte, der findet unter OOPv0.13.doc (manuel-poeter.de) ein PDF (kein .doc wie der Titel erahnen lässt) und kann sich da weiter Informieren.

Das aber nur kurz zur Ergänzung Deiner Aussage - der ich zu 100% zustimme.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
H Lust auf eine Open-Source Lösung für universelle Java Client-Technologie? AWT, Swing, JavaFX & SWT 11
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
2 Java Hausaufgabenheft für Android AWT, Swing, JavaFX & SWT 4
TheWhiteShadow Applet Firefox will Plugin für Java 1.7u4; Installiert ist 1.7u5 AWT, Swing, JavaFX & SWT 2
G Welcher Teil der Java Standard Edition API ist für das Zeichnen von einfachen Grafiken gedacht? AWT, Swing, JavaFX & SWT 3
D Plottingtool für java AWT, Swing, JavaFX & SWT 2
B WYSIWYG-HTML-Editor / Validator für JAVA AWT, Swing, JavaFX & SWT 2
F Java Browser für 1.6 AWT, Swing, JavaFX & SWT 2
K map24,viaMichelin,. Plugin für Java AWT, Swing, JavaFX & SWT 3
J Gibt es ein OutlookTabbedPane für Java ? AWT, Swing, JavaFX & SWT 9
M icons für die java.swing components wie jbutton etc AWT, Swing, JavaFX & SWT 5
S RemoteFileDialog für java ? AWT, Swing, JavaFX & SWT 2
D Fähigkeit der Designer für Java AWT, Swing, JavaFX & SWT 7
R Plugin Entwicklung für Java Programme AWT, Swing, JavaFX & SWT 3
C Explorer Bar für Java? AWT, Swing, JavaFX & SWT 11
G JAVA: onChange()-Methode für JComboBox AWT, Swing, JavaFX & SWT 5
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
R Eine Art DropDown-Menu für JAVA? AWT, Swing, JavaFX & SWT 3
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ein Patten für das Gluon Mobile Framework AWT, Swing, JavaFX & SWT 7
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
Soloeco JavaFX Dreifachklick für MenuButton erforderlich AWT, Swing, JavaFX & SWT 2
L JavaFX Lösungsvorschläge für dieses coole Control AWT, Swing, JavaFX & SWT 8
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
W JavaFX (j)Unittests für GUI AWT, Swing, JavaFX & SWT 0
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
SchmidiMC Swing Vorschläge für ein Design AWT, Swing, JavaFX & SWT 5
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
L DragDropped für jede Node AWT, Swing, JavaFX & SWT 0
temi JavaFX Lösungsansatz für Umsetzung gesucht AWT, Swing, JavaFX & SWT 4
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
L JavaFX Renderer für JavaFX AWT, Swing, JavaFX & SWT 2
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
L Font für Dashboard AWT, Swing, JavaFX & SWT 3
F Swing JColorChooser für die JToggleButtons AWT, Swing, JavaFX & SWT 5
S JavaFX Optimierung für verschiedene Auflösungen AWT, Swing, JavaFX & SWT 12
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Kloso Swing Pseudocode für Strafurzeichnung AWT, Swing, JavaFX & SWT 4
F Konstruktor für "Vier Gewinnt" AWT, Swing, JavaFX & SWT 10
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
L Event Handling Gui für Taschenrechner AWT, Swing, JavaFX & SWT 27
C Slider für Zeitauswahl AWT, Swing, JavaFX & SWT 3
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
OnDemand Gui Themes für FX AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P JavaFX Kalender mit Kacheln für Ereignisse AWT, Swing, JavaFX & SWT 4
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
J Swing Neuen Command für "show"? AWT, Swing, JavaFX & SWT 2
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
D GUI-Bau für ein Auswertungs-Tool AWT, Swing, JavaFX & SWT 11
L Swing CellRenderer für einzelne Zellen? AWT, Swing, JavaFX & SWT 5
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben