AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Gesture - ein lernfähiges Mausgesten-Erkennungssystem
Thema durchsuchen
Ansicht
Themen-Optionen

Gesture - ein lernfähiges Mausgesten-Erkennungssystem

Ein Thema von OrallY · begonnen am 28. Jul 2004 · letzter Beitrag vom 2. Aug 2004
 
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#33

Re: Gesture - ein lernfähiges Mausgesten-Erkennungssystem

  Alt 30. Jul 2004, 14:04
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;
{...}
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 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