Arsip: error waktu mau menampilkan image

 
user image
more 17 years ago

shindo

rekan sekalian, mau nanya nih saya ada error pada listing yg saya buat waktu mau menampilkan message setelah refresh ... sebelumnya tidak ada masalah waktu program ini belum saya pasang ke event on refresh berikut potongan program nya sedang error message yg ditampilkan :
... EFOpenError with message 'Cannot open file xxx.jpg. Process cannot open file because it is being used by another process'
mohon pencerahannya, apa yg harus saya betulkan supaya program bisa berjalan normal ? thx a lot :D
var PicFile     : string;
    OleGraphic  : TOleGraphic;
    fs          : TFileStream;
begin
    PicFile     := FrMenu.PicsDir+DMMaster.TMPet.FieldByName('PPic').AsString;
    OleGraphic  := nil;
    fs          := nil;
    OleGraphic  := TOleGraphic.Create;
    fs          := TFileStream.Create(PicFile,fmOpenRead);
    with FrMPet.fpics.Picture do
    begin
        OleGraphic.LoadFromStream(fs);
        Assign(OleGraphic);
        FrMPet.FPicSize.Caption   := IntToStr(Width)+' x '+IntToStr(Height);
        if (width > 250) or (height > 250) then
    end;
end;
user image
more 17 years ago

Manz

Bro shindo, mungkin kurang tepat kalo di simpan di event onRefresh ... karena setiap kali image load , pasti dipanggil lagi untuk onResfresh nya ... Error tersebut mungkin terjadi karena dead-lock pada saat menampilkan image yang belum selesai tapi event onRefresh sudah dipanggil kembali oleh proses yang lain (background process) :mrgreen: mendingan jangan disimpan di onRefresh, mendingan di procedure lain, baru kalo ada perubahan tinggal panggil aja procedure itu... Oceh ...
user image
more 17 years ago

shindo

umm ... tapi saya butuhnya itu buat database binatang, jadi tiap binatang bisa ada gambar2 nya ... kalau misalnya saya mau buat loop buat menunggu supaya tidak jadi dead lock, jadi saat satu proses belum selesai, tunggu sampai proses yg satu selesai baru di proses lagi begitu, gimana cara bikin looping nya ya atau ... bisa tolong kasih tau, identitas apa atau status apa yg bisa dicek utk menunjukkan proses pembacaan image sdh selesai ? mohon pencerahannya thx a lot
user image
more 17 years ago

DelphiExpert

kemungkinan pertama: dikau lupa men-destroy fd: TFileStream ... sehingga state file tersebut (resource IO) masih nempel. Setelah selesai load from stream panggil fs.free;, ataukah OleGraphic.LoadFromStream otomatis udah me-release file stream tsb? untuk mengetahui sebuah proses dalam blok udah selesai apa belum gampang aja... tambai variable global, loadPic: Boolean misalnya.

var PicFile     : string;
    OleGraphic  : TOleGraphic;
    fs          : TFileStream;
begin
    if LoadPic then Exit;
    LoadPic:= True;
    try
    PicFile     := FrMenu.PicsDir+DMMaster.TMPet.FieldByName('PPic').AsString;
    OleGraphic  := nil;
    fs          := nil;
    OleGraphic  := TOleGraphic.Create;
    fs          := TFileStream.Create(PicFile,fmOpenRead);
    with FrMPet.fpics.Picture do
    begin
        OleGraphic.LoadFromStream(fs);
        Assign(OleGraphic);
        FrMPet.FPicSize.Caption   := IntToStr(Width)+' x '+IntToStr(Height);
        if (width > 250) or (height > 250) then
    end;
    finally
        loadPic:= False;
    end;
end;
user image
more 17 years ago

Manz

Saya rasa OleGraphic tidak melakukan free secara otomatis setelah me-load filestream, sebab kalo free otomatis fungsi Assign(OleGraphic) tidak bakal sukses, karena OleGraphic menjadi nil.
user image
more 17 years ago

Manz

dari source diatas ....

try 
... bla bla bla
finally
  loadPic := False;
  fs.free;   <---- tambahin ini untuk free-ing memory setelah creating FS oleh TFileStream
end;
Smoga Embantoe :mrgreen:
user image
more 17 years ago

shindo

sip banget bro .. dah bisa sekarang ... yg kemarin gw coba2 ... akhirnya bisa juga, saya coba akalin di fs := TFileStream.Create(PicFile,fmOpenRead) saya ganti jadi fs := TFileStream.Create(PicFile,fmShareNoneDeny) tapi kayanya ini cara yg salah deh ... thx a lot buat semuanya :D
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com