Delphi-Quellcode:
//==============================
// ListView1 Click
//==============================
procedure TForm1.ListView1Click(Sender: TObject);
var nPictNr : Integer;
cBild : String;
TmpJpg : TJPEGImage;
strStream : TStringStream;
begin
nPictNr := StrToInt(ListView1.Items[ListView1.ItemIndex].Caption);
// ListView.Items[ListView1.ItemIndex].SubItems[0] waere 2. Spalte
cBild := MyComPort.SendPicture(nPictNr, ProgressBar1);
if cBild <> '' then begin
strStream := TStringStream.Create(cBild);
Try
TmpJpg := TJPEGImage.Create;
Try
TmpJpg.LoadFromStream(strStream);
Form1.Image1.Picture.Assign(TmpJpg);
Finally
TmpJpg.Free;
End;
Finally
strStream.Free;
End;
end;
end;
Zitat von
mkmk:
Noch eine Frage: warum muss ich TmpJpg.free schreiben? Ist TmpJpg nicht eine lokale Variable?
Das stimmt, aber es handelt sich um einen Zeiger auf einen alloziierten Speicherbereich. Delphi räumt hier nicht automatisch auf.