Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Gesture - ein lernfähiges Mausgesten-Erkennungssystem (https://www.delphipraxis.net/26748-gesture-ein-lernfaehiges-mausgesten-erkennungssystem.html)

SirThornberry 28. Jul 2004 22:02

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

OrallY 29. Jul 2004 09:21

Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem
 
Die Idee ist gar nicht so schlecht! Ich denke ich werd mir mal selbst was zusammenhacken. Thx.

OrallY 30. Jul 2004 14:04

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;
{...}

OrallY 2. Aug 2004 12:13

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: http://prdownloads.sourceforge.net/g...a.zip?download [26KB]
Source: http://prdownloads.sourceforge.net/g...a.zip?download [23KB]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz