Hallo, ich verwende in meinem Programm eine Listview. Immer wenn ein Eintrag angeklickt wird, wird ein Bild von einem Server geladen und in TImage angezeigt. Dabei stehe ich aber leider vor einem Problem:
Wenn ich die Procedure ListviewClick aufrufe, funktioniert zwar alles Prima, aber sobald man auf eine Leere Spalte klickt, stürzt das Programm mit einem Memory
Access Fehler ab.
Wenn man das gleiche mit der Procedure OnSelectItem macht, passiert der Fehler zwar nicht wenn man in eine leere Spalte klickt, aber er kommt sobald man das 2te mal einen Eintrag auswählen will. D.h. Wenn man das erste mal Klickt funktioniert alles Super. Klickt man das 2te mal etwas an, Crasht das Programm.
Ich poste einfach mal den Codefetzen, vielleicht weiß ja irgentwer woran es liegen könnte.
Delphi-Quellcode:
procedure TForm3.MaplistSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
var
Stream : TFileStream;
begin
Maplist.Enabled := false; // soll verhindern das geklickt wird während ein Download läuft. ( Programmabsturz )
Stream := TFileStream.Create(Maplist.Selected.Caption+'.png', fmCreate); // Cache erstellen ( Windows Temp führt bei Vista zu Problemen ka wieso )
Downloadstatus.Get('http://***/'+Maplist.Selected.Caption+'.png', Stream); // Dateidownload
Stream.free;
Minimap.Picture.LoadFromFile(Maplist.Selected.Caption+'.png'); // Cache laden
deletefile(Maplist.Selected.Caption+'.png'); // Nach dem Laden löschen
Maplist.Enabled := true; // Eintrag wieder freigeben
end;
Maplist = Listview
Minimap = TImage
Downloadstatus = IdHttp
Hoffe mir kann jemand helfen