Вот родился по ходу дела такой вот тест:
procedure TestList;
const
cEtalon : array [0..4] of Integer = (1, 2, 3, 4, 5);
function DoItem(pItem : PInteger; anIndex : Integer) : Boolean;
begin
Result := true;
assert(pItem^ = cEtalon[anIndex]);
end;
var
l_L : Tl3LongintList;
l_I : Integer;
begin
l_L := Tl3LongintList.Create;
try
for l_I := Low(cEtalon) to High(cEtalon) do
l_L.Add(cEtalon[l_I]);
for l_I := Low(cEtalon) to High(cEtalon) do
assert(l_L.Items[l_I] = cEtalon[l_I]);
l_L.IterateAllF(l3L2IA(@DoItem));
l_L.IterateBackF(l_L.Hi, l_L.Lo, l3L2IA(@DoItem));
finally
FreeAndNil(l_L);
end;//try..finally
end;
procedure TestList;
const
cEtalon : array [0..4] of Integer = (1, 2, 3, 4, 5);
function DoItem(pItem : PInteger; anIndex : Integer) : Boolean;
begin
Result := true;
assert(pItem^ = cEtalon[anIndex]);
end;
var
l_L : Tl3LongintList;
l_I : Integer;
begin
l_L := Tl3LongintList.Create;
try
for l_I := Low(cEtalon) to High(cEtalon) do
l_L.Add(cEtalon[l_I]);
for l_I := Low(cEtalon) to High(cEtalon) do
assert(l_L.Items[l_I] = cEtalon[l_I]);
l_L.IterateAllF(l3L2IA(@DoItem));
l_L.IterateBackF(l_L.Hi, l_L.Lo, l3L2IA(@DoItem));
finally
FreeAndNil(l_L);
end;//try..finally
end;
-- казалось бы - банальный. Но ошибок покрыл - массу.
Я вот только одного пока не понял - а настоящие лямбды в Delphi XE3 есть или нету? http://8vmr.livejournal.com/6114.html
-- оно?
Т.е. так пишем:
procedure TestList;
const
cEtalon : array [0..4] of Integer = (1, 2, 3, 4, 5);
var
l_L : Tl3LongintList;
l_I : Integer;
begin
l_L := Tl3LongintList.Create;
try
for l_I := Low(cEtalon) to High(cEtalon) do
l_L.Add(cEtalon[l_I]);
l_L.IterateAll(
function (pItem : PInteger; anIndex : Integer) : Boolean;
begin
Result := true;
assert(pItem^ = cEtalon[anIndex]);
end;);
finally
FreeAndNil(l_L);
end;//try..finally
end;
? Или локальную функцию передать можно?
Я вот только одного пока не понял - а настоящие лямбды в Delphi XE3 есть или нету? http://8vmr.livejournal.com/6114.html
-- оно?
Т.е. так пишем:
procedure TestList;
const
cEtalon : array [0..4] of Integer = (1, 2, 3, 4, 5);
var
l_L : Tl3LongintList;
l_I : Integer;
begin
l_L := Tl3LongintList.Create;
try
for l_I := Low(cEtalon) to High(cEtalon) do
l_L.Add(cEtalon[l_I]);
l_L.IterateAll(
function (pItem : PInteger; anIndex : Integer) : Boolean;
begin
Result := true;
assert(pItem^ = cEtalon[anIndex]);
end;);
finally
FreeAndNil(l_L);
end;//try..finally
end;
? Или локальную функцию передать можно?
Комментариев нет:
Отправить комментарий