Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit Prozedur (Integerprüfung) + Überladungen

  Alt 30. Sep 2018, 20:35
vielleicht so?
Delphi-Quellcode:
type
 TIntUtils = record
 public
  class procedure CheckInteger(var IntToCheck: Integer; const iDefaultValue, iMinValue, iMaxValue: Int64); overload; static;
  class procedure CheckInteger(var IntToCheck: Int64; const iDefaultValue, iMinValue, iMaxValue: Int64); overload; static;
 end;

implementation

uses
  System.Variants;

{$R *.dfm}

class procedure TIntUtils.CheckInteger(var IntToCheck: Int64; const iDefaultValue, iMinValue, iMaxValue: Int64);
begin
 if ((VarCompareValue(IntToCheck, iMinValue) = vrLessThan) or (VarCompareValue(IntToCheck, iMaxValue) = vrGreaterThan)) then
// if (IntToCheck < iMinValue) or (IntToCheck > iMaxValue) then
  IntToCheck := iDefaultValue;
end;

class procedure TIntUtils.CheckInteger(var IntToCheck: Integer; const iDefaultValue, iMinValue, iMaxValue: Int64);
var
   asInt64: Int64;
begin
 asInt64 := Int64(IntToCheck);
 CheckInteger(asInt64, iDefaultValue, iMinValue, iMaxValue);
 IntToCheck := Integer(asInt64);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 X: Integer;
 Y: Int64;
begin
  X := 1000;
  Y := 1000;
  Memo1.Lines.Clear;
  TIntUtils.CheckInteger(X, 123, 110, 200);
  TIntUtils.CheckInteger(Y, 123, 110, 200);
  Memo1.Lines.Add('X: '+IntToStr(X));
  Memo1.Lines.Add('Y: '+IntToStr(Y));
end;
edit
Hatte Variant Code vergessen zu kopieren.
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Sep 2018 um 20:52 Uhr) Grund: falscher code gepostet
  Mit Zitat antworten Zitat