Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme beim Laden von Bitmaps in ein Array vom Typ TBitmap (https://www.delphipraxis.net/10603-probleme-beim-laden-von-bitmaps-ein-array-vom-typ-tbitmap.html)

Chris1986 22. Okt 2003 00:28


Probleme beim Laden von Bitmaps in ein Array vom Typ TBitmap
 
In der procedure laod_pics bricht der Debugger das Programm mit einer Zugriffsverletzung ab. Sieht jemand den Fehler?:

Delphi-Quellcode:
unit mmousemove;

interface

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

type
  Tmouse = Array [1..4] of TBitmap;
  Tmousemove = class(TForm)
    lbedCursorPos: TLabeledEdit;
    imMouse: TImage;
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure load_pics (var Pics: TMouse);
  public
    { Public-Deklarationen }
  end;

var
  mousemove: Tmousemove;
  mousepics: Tmouse;


implementation

{$R *.dfm}

procedure Tmousemove.load_pics (var Pics: TMouse);
begin
  //Die Bilder werden ins Array geladen
  Pics[1].LoadFromFile('mouse.bmp'); {<= hier gibt der Debugger eine Zugriffsverletzung aus}
  Pics[2].LoadFromFile('left.bmp');
  Pics[3].LoadFromFile('middle.bmp');
  Pics[4].LoadFromFile('right.bmp');
end;

procedure Tmousemove.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
lbedCursorPos.Text := 'X: '+inttostr(x)+' ; Y: '+inttostr(Y);
//Im Edit wird die aktuelle Cursorposition ausgegeben
end;

procedure Tmousemove.FormActivate(Sender: TObject);
begin
  load_pics (mousepics); // Die Bilder werden ins Array geladen
end;

end.
Vielen Dank für eure Hilfe.
MfG
Christian

himitsu 22. Okt 2003 01:02

Re: Probleme beim Laden von Bitmaps in ein Array vom Typ TBi
 
Die Variablen müssen erst noch instantiiert werden. (zuweisen des Speichers)
Code:
procedure Tmousemove.FormCreate(Sender: TObject); {OnCreate}
begin
  mousepics[1] := TBitMap.Create;
  mousepics[2] := TBitMap.Create;
  mousepics[3] := TBitMap.Create;
  mousepics[4] := TBitMap.Create;
  mousepics[1].LoadFromFile('mouse.bmp');
  mousepics[2].LoadFromFile('left.bmp');
  mousepics[3].LoadFromFile('middle.bmp');
  mousepics[4].LoadFromFile('right.bmp');
end;
Und vergiß nicht alles am Ende wieder freizugeben. (Programmeende)
Code:
procedure Tmousemove.FormDestroy(Sender: TObject); {OnDestroy}
begin
  mousepics[1].Free;
  mousepics[2].Free;
  mousepics[3].Free;
  mousepics[4].Free;
end;
In OnCreate werden die Bilder nur ein mal, beim erstellen des Formulars, erzeugt und geladen.
Und in OnActivate geschieht das jedes mal, wenn das Formular den Eingabefokus erhält.

Chris1986 22. Okt 2003 12:10

Re: Probleme beim Laden von Bitmaps in ein Array vom Typ TBi
 
Danke. Ist das erste mal, das ich Bitmaps in ein Array lade :oops:

MfG
Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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