Du musst explizit Typen erstellen, damit du Arrays als Parameter nutzen kannst:
Delphi-Quellcode:
type
rRec1 = record
foo:byte;
flag:boolean;
end;
rRec2 = record
bar:string;
flag:boolean;
end;
TMyArrayA = array [0..12] of rRec1;
TMyArrayB = array [0..100] of rRec2;
// damits dynamisch wird, so machen (SetLength nicht vergessen):
{
TMyArrayA = array of rRec1;
TMyArrayB = array of rRec2;
}
function hasFlag(aData:array):boolean;
var
arrayA: TMyArrayA;
arrayB: TMyArrayB;
implementation
// Das hier im OnCreate oder so einfügen, falls du die dynamischen Array oben nutzt:
{
SetLength(arrayA, 13); // entspricht array [0..12]
SetLength(arrayB, 101); // entspricht array [0..100]
}
//irgendein flag auf true?
function hasFlag(aData: TMyArrayA):boolean; overload;
var x:cardinal;
begin
result := false;
for x := low(aData) to high(aData) do
if aData[x].flag = true then
begin
result := true;
break;
end;
end
function hasFlag(aData: TMyArrayB):boolean; overload;
var x:cardinal;
begin
result := false;
for x := low(aData) to high(aData) do
if aData[x].flag = true then
begin
result := true;
break;
end;
end;
Soweit ich weiss, dürfte ein Typecast unter den Recordtypen nicht funktionieren,
deshalb musst du überladene Prozedureen schreiben, damit du *bequem* prüfen kannst.
(Diese ist dann mit hasFlag() aufrufbar und nimmt TMyArrayA als auch TMyArrayB an)