Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#6

AW: Schiffe versenken "Kein gültiger Integerwert"

  Alt 13. Apr 2013, 01:10
Hallo,

vermutlich sollen in Dein TEdit e_zbuch die Buchstaben [A..J] eingegeben werden, im TEdit e_zzahl wohl die Ziffern [1..10].

Wenn dem so ist, dann könntest Du über den Objektinspektor die Eigenschaften
Code:
CharCase  | ecUpperCase
MaxLength | 1
für Dein TEdit e_zbuch setzen (was das bringt kannst Du in der OH nachlesen).

Den Rest eventuell so:
Delphi-Quellcode:
procedure TForm1.b_schussClick(Sender: TObject);
var
  a, b : integer;
begin
  a := BBelegung;
  b := ZBelegung;
  img_raster1.Canvas.FillRect(Rect(a, b, (a + 20), (b + 20)));
end;

function TForm1.BBelegung : Integer;
var
  s : string;
  c : Char;
begin
  s := Trim (e_zbuch.Text);
  if s = 'then
    raise Exception.Create ('Der Eingabewerte für e_zbuch darf nicht leer sein');
  
  c := s [1];
  if not (c in ['A'..'J']) then
    raise Exception.Create ('Als Eingabewerte für e_zbuch sind nur die Buchstaben A bis J erlaubt');

  Result := 20 * (Ord (c) - 65)
end;

function TForm1.ZBelegung : Integer;
begin
  if Trim (e_zzahl.Text) = 'then
    raise Exception.Create ('Der Eingabewerte für e_zzahl nicht leer sein');

  try
    Result := StrToInt (e_zzahl.Text);
    if (Result < 1) or (Result > 10) then
      raise Exception.Create ('Als Eingabewerte für e_zzahl sind nur die Zahlen 1 bis 10 erlaubt');

    Result := 20 * (Result - 1)
  except
    raise Exception.Create ('Als Eingabewerte für e_zzahl sind nur die Zahlen 1 bis 10 erlaubt')
  end
end;
Wenn Dir das mit dem werfen der Exceptions nicht gefällt, dann kannst Du natürlich auch einen negativen Wert zurückliefern und entsprechend in Deiner b_schussClick behandeln.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat