![]() |
Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem
benutze doch einfach eine Liste (zum Beispiel TList) dann bist du nicht auf 2000 Einträge beschränkt und mitm aufräumen ist eigentlich auch kein Problem
|
Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Die Idee ist gar nicht so schlecht! Ich denke ich werd mir mal selbst was zusammenhacken. Thx.
|
Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Ich habe ein paar kleine Veränderungen an Gesture vorgenommen. Das wichtigste ist die Einführung einer verketteten Liste, um den Mausweg zu speichern.
Allerings besteht das Problem, dass der Speicher nach dem Zeichnen einer Geste nicht wieder freigegeben wird. Ich weiß nicht, woran das liegt: Auszug aus GestureList.pas:
Delphi-Quellcode:
{...}
PItem = ^TItem; TItem = packed record Data: TFloatingPoint; Next: PItem; end; procedure TGestureList.Add(APoint: TFloatingPoint; pos: integer = -1); var cur_item, new_item: PItem; begin GetMem(new_item, SizeOf(TItem)); new_item^.Data := APoint; if pos = -1 then pos := ItemCount; if pos = 0 then begin cur_item := StartItem; new_item^.next := cur_item; StartItem := new_item; Inc(ItemCount); end else if pos <= ItemCount then begin cur_item := GetItem(pos-1); new_item^.next := cur_item^.next; cur_item^.next := new_item; Inc(ItemCount); end else Dispose(new_item); end; procedure TGestureList.Delete(Pos: integer); var del_item, cur_item: PItem; begin if StartItem <> nil then if pos = 0 then begin del_item := StartItem; StartItem := StartItem^.Next; Dispose(del_item); Dec(ItemCount); end else if pos < ItemCount then begin cur_item := GetItem(pos-1); del_item := cur_item^.Next; cur_item^.Next := del_item^.Next; Dispose(del_item); Dec(ItemCount); end; end; procedure TGestureList.DelAllFromItem(var Item: PItem); begin if Item <> nil then begin if Item^.Next <> nil then DelAllFromItem(Item^.Next); //Rekursion! FreeMem(Item, SizeOf(TItem)); Item := nil; end; end; {...} |
Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Der Speicherbug ist getilgt. Es lag nicht an der genannten Unit sondern an einem vergessenen ReleaseDC in der DesktopDraw.pas. Thx to Memproof und Keldorn@delphi-forum
Gesture 0.0.2 (Pre-Alpha-Version) Änderungen: Nur Bugfixes Kompilat: ![]() Source: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz