Einzelnen Beitrag anzeigen

Knut

Registriert seit: 8. Aug 2003
38 Beiträge
 
Delphi 7 Personal
 
#1

Probleme mit Free und AccessViolence

  Alt 9. Aug 2003, 17:08
habe mal versucht images von oben nach unten durchs bild laufen zu lassen.

hat auch funktioniert bis ich gemerkt hab das alles immer langsamer wird.
da ist mir die idee gekommen, dass ich mein erzeugten images "unter" dem formblatt weiterlaufen.

habe dann das mit free versucht und nachdem die ersten parr images aus dem bild waren, kam ein AccessViolence problem.

hier mal der code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;
  image : array of TImage;
// j : Integer = 0;
  i : Integer = 0;
  k : Integer = 0;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  randomize;
  if (k=0) or
     ((k mod 50) = 0) then begin
       SetLength(image,i+1);
       image[i] := TImage.Create(Form1);
       image[i].Left := Random((Width-image[i].Width));
       image[i].Picture.LoadFromFile('stein.bmp');
       image[i].Parent := Form1;
       image[i].Top := -image[i].Height;
       Inc(i);
     end
     else
     begin
      Inc(k);
     end;
      if i = 100 then timer1.Enabled := false;
 end;


procedure TForm1.Timer2Timer(Sender: TObject);
var
 j : integer;
begin
for j:= 0 to (i-1) do
begin
image[j].Top := image[j].Top + 1;
**if image[j].Top >= Height then image[j].Free;
end;
end;

end.
wenn ich die zeile mit den sternchen weglass funktioniert das progrämmchen recht gut bis auf das flackern und dass meine runden steine einen eckigen kasten haben.
Was nicht fliegen kann, kann auch nicht abstürzen
  Mit Zitat antworten Zitat