Autor Beitrag
SchwarzerVampir
Hält's aus hier
Beiträge: 3


Delphi 7
BeitragVerfasst: Mo 24.04.06 16:34 
Hallo,

ich habe folgendes Problem:
meine Anwendung verwendet GDI+ um PNG's zu laden, gezeichnet wird auf einer TImage-Komponente.
Wenn ich meine Draw-Routine(n) ausführe, präsentiert sich die Anwendung genau so, wie sie soll, schließe ich aber die Mainform, stürzt das Programm mit einer "Invalid pointer operation" ab. Ohne GDI+ läuft alles einwandfrei.

Die Draw-Routine(n) laufen alle nach dem gleichen Schema ab, hier dazu ein Beispiel

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TSDStar.Draw (canvas: TCanvas);
var
  g: GGraphics;
  img: Image;
  i: integer;
begin
  for i:= 0 to 5000 do fSize := Random (15);
  fDistance := Random (5000);
  g := GGraphics.create(Canvas.Handle);
  try
   if (fSize >= 0and (fSize < 5then img := Image.Create('GFX\StarSmall.png')
   else if (fSize >= 5and (fSize < 10then img := Image.Create('GFX\StarLarge.png')
   else if (fSize >= 10and (fSize < 15then img := Image.Create('GFX\StarVeryLarge.png');


   g.DrawImage(img, MakePoint(fX, fY));
   fRange := Rect (fx, fy, fX + img.GetWidth, fy + img.GetHeight);
  finally
   img.Free;
   g.Free;
  end;
end;


Außerdem führe ich bei den Events onShow und onDestroy ein BeginGDIPlus bzw. EndGDIPlus aus.

Leider habe ich bezüglich meines Problems hier im Forum nichts passendes gefunden, das GDI+-Tutorial hilft mir in diesem Fall auch nicht weiter.

Kann mir jemand erklären, was ich falsch mache?

Gruß
SchwarzerVampir

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
SchwarzerVampir Threadstarter
Hält's aus hier
Beiträge: 3


Delphi 7
BeitragVerfasst: Mo 24.04.06 17:24 
Hi,

das Problem hat sich grade von selbst gelöst. Es lag kein GDI+-Problem vor, sondern ich hatte dummerweise vergessen einen Parameter zu setzen, der bestimmen sollte, wie lange ein Array wird. Da dieser nicht initialisiert war, ist setLength nicht in der Lage gewesen Speicher zu reservieren.

'Tschuldigung an alle, die schon angefangen haben sich den Kopf zu zerbrechen :oops:

Gruß

SchwarzerVampir