Arsip: [Ask] Free DLL Handle

more 9 years ago
henry_sys
Para suhu Delphi sekalian saya mau tanya dan mohon pencerahan...
saya buat 1 aplikasi dengan DLL (Dynamic Link Library) kemudian saya buat 1 aplikasi lg utk panggil DLL yg tadi.
Pada proses pemanggilan dan handle Form program berjalan dengan baik, tetapi ketika saya ingin terminate/Close program pemanggil ada pesan error Memory (Acces violation......) walaupun DLL nya udah saya Free sebelum Terminate,
ini Coding Pemanggil DLL saya
type
.......
.......
private
MyReport : THandle;
CallReport : procedure (vParentApplication: TApplication; vControl:TWinControl); stdcall;
.....
.....
procedure TFmMain.FormCreate(Sender: TObject);
begin
if MyReport = 0 then
MyReport := LoadLibrary('Reports.Dll');
end;
procedure TFmMain.Reports1Click(Sender: TObject);
begin
if MyReport <> 0 then
begin
@CallReport := GetProcAddress(MyReport,'ShowMain');
CallReport(Application, cxTabsheet1);
end;
end;
procedure TFmMain.Exit1Click(Sender: TObject);
begin
if MyReport <> 0 then
FreeLibrary(MyReport);
Close;
end;
Sorce DLL nya
procedure ShowMain(vParentApplication :TApplication; vComControl:TWinControl); stdcall;
begin
Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB}
Application:= vParentApplication;
vControl := vComControl;
FmMainReport := TFmMainReport.CreateParented(vComControl.Handle);
FmMainReport.QuMenu.Open;
FmMainReport.Show;
end;
exports ShowMain;
klu saya Trace error itu terjadi ketika FreeLibrary.....
mohon bantuan para master2 sekalian
more 9 years ago
henry_sys
[Double Thread, and Has Be Merged, by mas_kofa]
Para suhu Delphi sekalian saya mau tanya dan mohon pencerahan...
saya buat 1 aplikasi dengan DLL (Dynamic Link Library) kemudian saya buat 1 aplikasi lg utk panggil DLL yg tadi.
Pada proses pemanggilan dan handle Form program berjalan dengan baik, tetapi ketika saya ingin terminate/Close program pemanggil ada pesan error Memory (Acces violation......) walaupun DLL nya udah saya Free sebelum Terminate,
ini Coding Pemanggil DLL saya
type
.......
.......
private
MyReport : THandle;
CallReport : procedure (vParentApplication: TApplication; vControl:TWinControl); stdcall;
.....
.....
procedure TFmMain.FormCreate(Sender: TObject);
begin
if MyReport = 0 then
MyReport := LoadLibrary('Reports.Dll');
end;
procedure TFmMain.Reports1Click(Sender: TObject);
begin
if MyReport <> 0 then
begin
@CallReport := GetProcAddress(MyReport,'ShowMain');
CallReport(Application, cxTabsheet1);
end;
end;
procedure TFmMain.Exit1Click(Sender: TObject);
begin
if MyReport <> 0 then
FreeLibrary(MyReport);
Close;
end;
Sorce DLL nya
procedure ShowMain(vParentApplication :TApplication; vComControl:TWinControl); stdcall;
begin
Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB}
Application:= vParentApplication;
vControl := vComControl;
FmMainReport := TFmMainReport.CreateParented(vComControl.Handle);
FmMainReport.QuMenu.Open;
FmMainReport.Show;
end;
exports ShowMain;
klu saya Trace error itu terjadi ketika FreeLibrary.....
mohon bantuan para master2 sekalian
more 9 years ago
mat_koder
Cuman ngeliat sepintas saja :
Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB}
Application:= vParentApplication;
apa memang benar-benar logix code anda seharusnya demikian?
(hanya bertanya saja - it would not generate error on compiling -)
more 9 years ago
henry_sys
@mat_koder: Cuman ngeliat sepintas saja :CreateForm itu construktor yg berguna untuk mengcreate class TDmReport dan menampungnya kedalam object dengan nama DmReport itu yg saya tahu kalau salah mohon diperbaiki, Tetapi program itu tidak error dan Running Normal klu agan pingin lihat(bkn mksd menggurui) coba buka *.dpr project delphi biasanya secara default akan menulisapa memang benar-benar logix code anda seharusnya demikian? (hanya bertanya saja - it would not generate error on compiling -)Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB} Application:= vParentApplication;
uses
.......
.......
begin
Application.initialized;
Application.CreateForm(NamaKelas,NamaObject);
.....
.....
Application.Run;
end.
untuk kasus saya semua TForm/TComponent sudah saya inisialisasi jadi tinggal di "Create" aja
dan "Action := Cafree" untuk free Object ketika di close
Yang jadi masalah saya adalah bagaimana membuat procedure untuk memfree seleruh object yg telah saya create, baru kemudian melepas Handle tanpa klik close pada tiap Form Mohon pencerahan para master delphi sekalian.....
It'is Urgent :?
more 9 years ago
reminder2k1
Yang perlu di perhatikan ketika bermain DLL adalah, USE SHAREMEM di file .dpr yang akan mengexecute .dll tersebut...
Apakah sudah spt itu???

more 9 years ago
mat_koder
Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB}
Application:= vParentApplication;
bukankah baris2 hrs lebih dahulu dari baris 1 ( dari segi logic-nya ) ?
coba buat begini:
var
OldDLLAppHandle : THandle;
procedure ShowMain(vParentApplication :TApplication; vComControl:TWinControl); stdcall;
begin
Application.Handle := vParentApplication.Handle;
Application.CreateForm(TDmReports,DmReports); {Create dataModule utk Keneksi DB}
vControl := vComControl;
FmMainReport := TFmMainReport.CreateParented(vComControl.Handle);
FmMainReport.QuMenu.Open;
FmMainReport.Show;
end;
exports ShowMain;
initialization
OldDLLAppHandle := Application.handle;
finalization
Application.handle := OldDLLAppHandle;
jangan lupa waktu di main-app , deklarasi ShowMain harus benar ( stdcall calling ).
more 9 years ago
henry_sys
Untuk sementara saya temukan solusi untuk memfree semua Object pada Finalization
Initialization
RegisterClass(ClassOfForm);
Finalization
if Assigned(ObjectOfForm) then
ObjectOfForm.Free;
UnRegisterClass(ClassOfForm);
Pada AppMain
procedure TFmMain.CloseMainApp;
begin
UnRegisterModuleClasses(NamaHandle);{Procedure untuk mengeksekusi finalization pada ObjectOfForm}
FreeLibrary(NamaHandle);
Close;//Application.Terminate;
end;
Mohon masukan dari master-master sekalian ttg cara yg saya gunakan.....more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
- Project Group dalam Lazarus
- FastPlaz Database Explorer
- Release: FastPlaz Super Mom v0.12.22
- PascalClass #3: Web Development with Free Pascal
- Makna Pascal di Pascal Indonesia
- Kulgram : Instalasi Lazarus di Perangkat Berbasis ARM
- PascalClass #1: Analisa Database dan Machine Learning
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
- Mengenal OXYGENE – Pascal For .NET
- PascalTalk #5: UX: Research, Design and Engineer
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 months ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 1 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 8 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 8 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 8 years ago
Random Topic
- hitung total with sqL
by nurez in Tip n Trik Pemrograman more 13 years ago - cancel save database
by ImanD in Tip n Trik Pemrograman more 14 years ago - bingung mo kasih judul apa ?
by flamade in MySQL more 13 years ago - Delphi codenames
by deLogic in Hal umum tentang Pascal Indonesia more 15 years ago - Alternatif Database?
by ZeAL in Tip n Trik Pemrograman more 14 years ago - Desain tabel utk Histori Absensi
by onsir in Lain-lain more 12 years ago - login error
by putukaca in Hal umum tentang Pascal Indonesia more 14 years ago - Linux + Kylix / Windows + Delphi
by 3rei in Hal umum tentang Pascal Indonesia more 14 years ago - Kartu magnetik
by julius in Hal umum tentang Pascal Indonesia more 13 years ago - buat file bengkak
by esafm in Tip n Trik Pemrograman more 13 years ago