我想在Delphi中使用类似SQL的条件
if VarI in SOMESET then
...
[SOMESET]从任何文本文件中读取。
在ini / txt等任何文本文件中存储少量数字,并从文件中读取并将其替换为set,以便我们可以在运算符中使用if条件。
答案 0 :(得分:1)
如果我理解你的要求是正确的,那么简单的回答是肯定的。您的术语可能有点偏离 - 设置意味着Delphi中的某些特定内容,但我不认为这就是您的意思。另外,我不认为你是在询问加载和保存的具体细节,所以我没有把它包括在内。相反,我认为你问的是如何在这个特定的情况下允许'in',这里是如何
unit Unit1;
interface
uses
System.SysUtils;
type
TMySet = record
private
function GetEntry(const i: integer): integer;
public
Entries : array of integer;
// procedure LoadFromFile( const pFromFile : TFileName );
class operator in ( const pTest : integer; pMyset : TMyset ) : boolean;
property Entry[ const i : integer ] : integer
read GetEntry; default;
end;
implementation
{ TMySet }
function TMySet.GetEntry(const i: integer): integer;
begin
Result := Entries[ i ]; // allow default exceptions to occur
end;
class operator TMySet.in(const pTest: integer; pMyset: TMyset): boolean;
var
i: Integer;
begin
for i := Low(pMyset.Entries) to High(pMyset.Entries) do
begin
if i = pMyset[ i ] then
begin
Result := TRUE;
exit;
end;
end;
// else
Result := FALSE;
end;
end.
我希望我理解你的问题,这会有所帮助。