ok, hab mir das mal zu herzen genommen^^
jetzt sieht das ganze so aus:
Delphi-Quellcode:
procedure ImageToBitmap(Img: TImage);
var
Pic: TPicture;
begin
Pic := TPicture.Create;
try
Pic.Assign(Img.Picture);
Img.Picture.Bitmap.Assign(Pic.Graphic);
finally
FreeAndNil(Pic);
end;
end;
procedure TForm1.LoadImages;
var
h :HINST;
r :TResourceStream;
j :TJpegImage;
im: TImage;
I: Integer;
Namen: TStringList;
begin
Namen := TStringList.Create;
Namen.Add('bWdhTrackp'); Namen.Add('bWdhTrack');
Namen.Add('bWdhp'); Namen.Add('bWdhNonep');
Namen.Add('bWdhNone');
h := LoadLibrary('pBilder.dll');
if h <> 0 then
for I := 0 to 4 do
begin
r := TResourceStream.Create(h, Namen[I], 'Jpeg');
j := TJpegImage.Create;
im := TImage.create(self);
try
j.LoadFromStream(r);
Im.Picture.Assign(j);
ImageToBitmap(Im);
test.Add(im.Picture.Bitmap, im.Picture.Bitmap);
finally
j.Free;
r.Free;
im.free;
end;
end;
FreeLibrary(h);
Namen.free;
end;
leider kommt immernoch die
AV.
Ich hab aber etwas interessantes festgestellt:
er führt nur die erste schleife aus, dann beim
im.free
springt er in die
Unit System zu
Delphi-Quellcode:
CALL SysInit.@GetTLS
MOV ECX,[EAX].RaiseListPtr
MOV EDX,[ECX].TRaiseFrame.NextRaise
MOV [EAX].RaiseListPtr,EDX
ADD ESP,5*4 { Remove local RaiseList }
[...]
nach so ca 100 befehlen kommt dann die
AV.