AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicher überfüllt sich! Aber wo?

Ein Thema von gee21 · begonnen am 30. Mai 2013 · letzter Beitrag vom 31. Mai 2013
 
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#1

Speicher überfüllt sich! Aber wo?

  Alt 30. Mai 2013, 19:36
Hallo zusammen.

Irgendwie frisst meine Anwendung ins unendliche Arbeitsspeicher.
Aber ich sehe oder finde nicht heraus wo?

Weiss es jemand von euch?

Gruess Robert

Delphi-Quellcode:
 private
    { Private-Deklarationen }
       CopyFrame: TRect;
     CopyMouseDown: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  TimerONOFF:boolean;

implementation

uses Unit2, Unit3;

{$R *.dfm}
              type
   pRGBQuadArray = ^TRGBQuadArray;
   TRGBQuadArray = ARRAY[0..$effffff] OF TRGBQuad;


function GetScreenShot: TBitmap;
var
   Desktop: HDC;
begin
   Result := TBitmap.Create;
   Desktop := GetDC(0);
   try
     try
       Result.PixelFormat := pf32bit;
       Result.Width := strtoint(form1.edit1.text);
       Result.Height := strtoint(form1.edit2.text);
       BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, form1.SpinEdit1.Value, form1.SpinEdit2.Value, SRCCOPY);
       Result.Modified := True;
     finally
       ReleaseDC(0, Desktop);
     end;
   except
     Result.Free;
     Result := nil;
   end;
end;





Function FindBitmap(Container,Find:TBitmap):TPoint;
var
  SclS,SclF:pRGBQuadArray;
  xc,yc:Integer;
  x,y:Integer;
  Found:Boolean;
begin
    Container.PixelFormat := pf32Bit;
    Find.PixelFormat := pf32Bit;
    Result.X := -1;
    Result.Y := -1;

    yc:=0;
    while (yc < (Container.Height-Find.Height - 1)) and (Result.X=-1) do
        begin
          xc:= 0;
          while (xc < (Container.Width-Find.Width - 1)) and (Result.X=-1) do
             begin
                 y := 0;
                 Found := true;
                 while (y<Find.Height-1) and Found do
                   begin
                      x := 0;
                      SclF := Find.ScanLine[y];
                      SclS:= Container.ScanLine[yc+y];
                      while (x < Find.Width -1) and Found do
                         begin
                            Found := Integer(SclS[xc+x])=Integer(SclF[x]);
                         inc(x);
                         end;
                   inc(y);
                   end;
                 if Found then
                   begin
                      Result.X := xc;
                      Result.Y := yc;
                   end;
             inc(xc);
             end;
        inc(yc);
        end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  p:TPoint;
begin

if listbox1.Items.Count<1 then begin
showmessage('Keine Such-Objekte angegeben');
abort;
end else button1.Enabled:=false;

if button2.Enabled=true then timeronoff:=true;


if form2.Visible=true then form2.Close;
if listbox1.itemindex=-1 then listbox1.itemindex:=0;
if listbox1.ItemIndex<listbox1.Items.Count-1 then listbox1.ItemIndex:=listbox1.ItemIndex+1 else listbox1.ItemIndex:=0;

image1.Picture.Bitmap:= GetScreenShot;
image2.Picture.LoadFromFile(ExtractFilePath(Application.Exename)+'\'+listbox1.items[listbox1.ItemIndex]);

p:= FindBitmap(form1.Image1.Picture.Bitmap,Image2.Picture.Bitmap) ;

if p.X=-1=false then
                  begin
                   SetCursorPos(form2.Left+ p.x , p.y+ form2.Top+ (image2.Picture.Height div 2));
                   if listbox1.ItemIndex>0 then listbox1.ItemIndex:=listbox1.ItemIndex-1 else listbox1.ItemIndex:=listbox1.Items.Count-1;

                   mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                   mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

                  end else begin
                   p.X:=-1;
                   p.Y:=-1;
                  end;


     timer1.Enabled:=true;

 end;


procedure TForm1.Button2Click(Sender: TObject);
begin
TimerOnOff:=false;
button2.Enabled:=false;
button1.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if form2.Visible=true then form2.Close;

 image1.Picture.Bitmap:= GetScreenShot;
form1.Width:=707;

 // if savepicturedialog1.Execute=true then image1.Picture.SaveToFile(savepicturedialog1.filename);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin

form2.width:=strtoint(edit1.Text);
form2.Height:=strtoint(edit2.Text);

form2.Left:=spinedit1.Value;
form2.Top:=spinedit2.Value;

if form2.Visible=true then form2.Close else form2.Show;

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
form3.Show;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
form1.Width:=290;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var
search: string;
begin

if checkbox1.Checked=true then listbox1.Items.Add(checkbox1.Caption+'.bmp')
else begin
search := checkbox1.Caption;

  if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
end;

end;

procedure TForm1.CheckBox2Click(Sender: TObject);
var
search: string;
begin

if checkbox2.Checked=true then listbox1.Items.Add(checkbox2.Caption+'.bmp')
else begin
search := checkbox2.Caption;

  if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
end;
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
var
search: string;
begin

if checkbox3.Checked=true then listbox1.Items.Add(checkbox3.Caption+'.bmp')
else begin
search := checkbox3.Caption;

  if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
end;
end;

procedure TForm1.CheckBox4Click(Sender: TObject);

var
search: string;
begin

if checkbox4.Checked=true then listbox1.Items.Add(checkbox4.Caption+'.bmp')
else begin
search := checkbox4.Caption;

  if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
end;
end;

procedure TForm1.CheckBox5Click(Sender: TObject);
var
search: string;
begin

if checkbox5.Checked=true then listbox1.Items.Add(checkbox5.Caption+'.bmp')
else begin
search := checkbox5.Caption;

  if SendMessage(form1.ListBox1.Handle, lb_selectstring, - 1, Longint(PChar(search))) <> LB_ERR then listbox1.DeleteSelected;
end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
form2.width:=strtoint(edit1.Text);
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
form2.Height:=strtoint(edit2.Text);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
 Perform(WM_SYSCOMMAND, $F012, 0);

end;

procedure TForm1.FormShow(Sender: TObject);
begin
form2.width:=strtoint(edit1.Text);
form2.Height:=strtoint(edit2.Text);
form2.Show;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 CopyFrame.Left := X;
   CopyFrame.Top := Y;
   CopyMouseDown := True;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if PtInRect(Image1.ClientRect, Point(X, Y)) then
   begin
     CopyFrame.Right := X;
     CopyFrame.Bottom := Y;
   end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   Bmp: TBitmap;
begin
   Bmp := TBitmap.Create;
   try
     Bmp.PixelFormat := pf32Bit;
     Bmp.Width := CopyFrame.Right - CopyFrame.Left;
     Bmp.Height := CopyFrame.Bottom - CopyFrame.Top;
     Bmp.Canvas.CopyRect(Rect(0, 0, Bmp.Width, Bmp.Height), Image1.Picture.Bitmap.Canvas, CopyFrame);
     Image2.Picture.Bitmap.Assign(Bmp);
   finally
     Bmp.Free;
   end;
end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
 Perform(WM_SYSCOMMAND, $F012, 0);

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

if timeronoff=false then begin
timer1.Enabled:=false;
timeronoff:=true;
button2.Enabled:=false;
button1.Enabled:=true;
abort;
end;


timer1.Enabled:=false;
button1.Click;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
form3.memo1.lines.loadfromfile(ExtractFilePath(Application.Exename)+'\Bilder.txt');
checkbox1.caption:=form3.memo1.lines[0];
form3.RadioGroup1.Items[0]:=form3.memo1.lines[0];
checkbox2.caption:=form3.memo1.lines[1];
form3.RadioGroup1.Items[1]:=form3.memo1.lines[1];
checkbox3.caption:=form3.memo1.lines[2];
form3.RadioGroup1.Items[2]:=form3.memo1.lines[2];
checkbox4.caption:=form3.memo1.lines[3];
form3.RadioGroup1.Items[3]:=form3.memo1.lines[3];
checkbox5.caption:=form3.memo1.lines[4];
form3.RadioGroup1.Items[4]:=form3.memo1.lines[4];

timer2.Enabled:=false;
end;
Angehängte Grafiken
Dateityp: png Speicher.png (38,1 KB, 34x aufgerufen)
Robert
  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 06:35 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 by Thomas Breitkreuz