Ik heb twee klassen waarmee een soort van boomstructuur opgebouwd kan worden.
Hierin heb je groepen en items, ze kunnen beide onder groepen vallen.
Nu heb ik in de groupklasse (TUnitGroup) een functie die moet kijken of er een UnitItem met een bepaalde naam bestaat.
Het is een recursieve functie zodat er ook door de subgroupen van de group gelopen wordt. Het enige probleem is alleen dat wanneer er een match is gevonden de Result := true niet wordt teruggeven.
Waarom slaat delphi deze regel over?
De code:
Hierin heb je groepen en items, ze kunnen beide onder groepen vallen.
Nu heb ik in de groupklasse (TUnitGroup) een functie die moet kijken of er een UnitItem met een bepaalde naam bestaat.
Het is een recursieve functie zodat er ook door de subgroupen van de group gelopen wordt. Het enige probleem is alleen dat wanneer er een match is gevonden de Result := true niet wordt teruggeven.
Waarom slaat delphi deze regel over?
De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| function TUnitGroup.checkUnitItemByName(aName : string) : boolean;
var
i : integer;
strTemp : String;
begin
for i:= 0 to Count -1 do
begin
if Items[i].ClassType = TUnitItem then begin
strTemp := (Items[i] as TUnitItem).name;
if strTemp = aName then begin
ShowMessage('ik ben de juiste unititem');
Result := true; // deze regel slaat ie over
ShowMessage('voorbij result = true'); // deze doet ie wel
end;
end;
if Items[i].ClassType = TUnitGroup then begin
Result := (Items[i] as TUnitGroup).checkUnitItemByName(aName);
end;
end;
Result := false;
end; |