Registriert seit: 1. Feb 2018
3.691 Beiträge
Delphi 11 Alexandria
|
AW: Problem mit Prozedur (Integerprüfung) + Überladungen
30. Sep 2018, 21: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.
Geändert von KodeZwerg (30. Sep 2018 um 21:52 Uhr)
Grund: falscher code gepostet
|
|
Zitat
|