Fastream Technologies wrote:
> How about us to make a list of pointers in onlist and then remove?
Yes, I'd just override DoListNode, something like (untested):
TMyCache = class(TCacheTree)
private
FDeleteList: TList;
FCondition: string;
protected
procedure DoListNode(Node: TAvlTreeNode; var Cancel: Boolean); override;
public
destructor Destroy; override;
procedure RemoveSomeStuff(const ACondition: String);
end;
implementation
{ TMyCache }
type
TMyData = record
SomeStr : string;
end;
PMyData = ^TMyData;
procedure TMyCache.RemoveSomeStuff(const ACondition: String);
var
I: Integer;
begin
if not Assigned(FDeleteList) then
FDeleteList := TList.Create;
try
FCondition := ACondition;
ListTree;
for I := 0 to FDeleteList.Count -1 do
Remove(FDeleteList[I]);
finally
FDeleteList.Clear;
FCondition := '';
end;
end;
destructor TMyCache.Destroy;
begin
FDeleteList.Free;
inherited Destroy;
end;
procedure TMyCache.DoListNode(Node: TAvlTreeNode; var Cancel: Boolean);
begin
if (Node <> nil) and (FCondition <> '') then
begin
if (PMyData(TCacheNode(Node).Data)^.SomeStr = FCondition) then
FDeleteList.Add(Node);
end
else
inherited;
end;
> Best Regards,
>
> SZ
> On Sun, Dec 4, 2011 at 15:24, Fastream Technologies
> <[email protected]>wrote:
>
>> Arno,
>>
>> The deletions occur once in a day/week or so, when the end admin user
>> clicks a button in GUI. It is not a part of every second cache
>> operation. What is the easiest/safest way to delete by iteration?
>>
>> a. Implement a new TCacheTree with IPv6 AVLPointerTree?
>> b. A very slow workaround for the current class (speed is NOT an
>> issue). Best Regards,
>>
>> SZ
>> On Sun, Dec 4, 2011 at 14:31, Arno Garrels <[email protected]>
>> wrote:
>>
>>> Fastream Technologies wrote:
>>>> Ok but how do I delete with respect to a data->property??
>>>
>>> One needs one linked tree for each search key, if you
>>> have to iterate over a tree in order to find something a list
>>> would likely be faster. But if can live with slow deletions
>>> maybe you can use TIcsAvlPointerTree rather than TAvlTree to write
>>> a new TCacheTree.
>>>
>>>> We use
>>>> regex and string comparison for this! If you can help me with it, I
>>>> will appreciate. We can be sponsors for this feature. I think we
>>>> can live with OnList way but really need to be able to delete with
>>>> respect to data...
>>>
>>> Sounds like plenty of keys, I'm not sure whether this would be
>>> faster with trees.
>>>
>>> --
>>> Arno Garrels
>>>
>>>
>>>
>>> --
>>> To unsubscribe or change your settings for TWSocket mailing list
>>> please goto
>>> http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our
>>> website at http://www.overbyte.be
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be