Arsip: Set value di dll

more 17 years ago
EkoIndri
Kebetulan saya dah buat file dll.
Didalam file dll itu saya berikan fungsi dengan output form.
Catatan:
Didalam form saya tambahkan object memo dengan isi beberapa kalimat.
Nah waktu file dll itu saya akses dari aplikasi lain, fungsi tersebut saya pastikan utk dihitung jumlah object yang ada didalam form itu.
Ternyata jumlah sesuai.
Kemudian saya lanjutkan dengan mengecek dengan menggunakan showmessage untuk menampilkan informasi text yang ada di object memo, ternyata datanya benar.
karena saya bisa akses tuh object memo, terus saya lanjutkan dengan mengubah isi text dari object memo.
Ternyata usaha yang saya lakukan adalah sia-sia...
bagi temen2 yang tahu solusi untuk mengubah data text dalam memo itu mohon dishare donk ilmunya...
thanxs sebelumnya...

more 17 years ago
DelphiExpert
bagaimana cara anda "membaca" text dalam memo? <getter> ; seperti itulah harusnya anda bisa lakukan set isi memo <setter>.
well... akan lebih menjelaskan apabila code yg dibuat anda post juga...

more 17 years ago
EkoIndri
intinya kan showmessage(memo1.text); itu kan bisa dilakukan di form biasa
tapi kenapa itu tidak bisa saya lakukan terhadap memo yang ada didalam dll

more 17 years ago
ImanD
@EkoIndri
Bener sekali yg di bilang @DE, klo bisa getter kenapa setter ga bisa? mungkin parameternya yg di tangkap dll blom di setter ke dalam object memo tersebut.

more 17 years ago
mat_koder
cobain nge-editnya pake Memo.Lines.Add('..................');
atau kalo ngga bisa juga cara, silakan cobain dibawah ini - pasti bisa ( sdh di coba dgn D7 di PC saya )
Yg di-export dari DLL adalah pointer ke Form yg baru di-create.
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca.
Kode begini ngga pernah True:
if DllForm.Controls[i] is TMemo
dedangkan dgn begini OK:
if DllForm.Controls[i].ClassName = 'TMemo'
// di Dll (dpr file)
exports
SetDLLApplication, ResetDLLApplication,
CreateNewForm;
// di unit DLL
function CreateNewForm:TForm;
procedure SetDLLApplication(A: TApplication);
procedure ResetDLLApplication;
var
OldHandle: TApplication;
implementation
uses
unitFrmYgDiinginkan;
procedure SetDLLApplication(A: TApplication);
begin
OldHandle := Application;
Application := A;
end;
procedure ResetDLLApplication;
begin
Application := OldHandle;
end;
function CreateNewForm:TForm;
begin
Result := TfrmYgDiinginkan.Create(Application);
end;
// di Aplikasi utama:
type
TShowDllFormdProc = function:TForm;
TResetDLLApplicationProc = procedure;
TSetDLLApplicationProc = procedure(A: TApplication);
function OpenMyDll: Boolean;
procedure CloseMyDll;
procedure SetDLLApplication;
procedure ResetDLLApplication;
var
frmMain: TfrmMain;
GDLLHandle: THandle;
DllMemo: Tmemo;
implementation
{$R *.DFM}
function OpenMyDll: Boolean;
begin
if (GDLLHandle = 0) then
begin
GDLLHandle := LoadLibrary('MdiDll');
if (GDLLHandle = 0) then Result := False else Result := True;
end
else Result := True;
if (Result) then SetDLLApplication;
end;
procedure CloseMyDll;
begin
if (GDLLHandle <> 0) then
begin
ResetDLLApplication;
FreeLibrary(GDLLHandle);
GDLLHandle := 0;
end;
end;
procedure SetDLLApplication;
var
SetDLLApplication: TSetDLLApplicationProc;
begin
SetDLLApplication := GetProcAddress(GDLLHandle, 'SetDLLApplication');
SetDLLApplication(Application);
end;
procedure ResetDLLApplication;
var
ResetDLLApplication: TResetDLLApplicationProc;
begin
ResetDLLApplication := GetProcAddress(GDLLHandle, 'ResetDLLApplication');
ResetDLLApplication;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
DllMemo := nil;
if (not OpenMyDLL) then
begin
ShowMessage('Unable to open DLL.');
end;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
DllMemo:=nil;
CloseMyDLL;
end;
procedure TfrmMain.btnNewDllFormClick(Sender: TObject);
var
ShowDllFormProc: TShowDllFormdProc;
DllForm:TForm;
i: integer;
begin
ShowDllFormProc := GetProcAddress(GDLLHandle, 'CreateNewForm');
DllForm:=ShowDllFormProc;
for i:=0 to DllForm.ControlCount-1 do
if DllForm.Controls[i].ClassName='TMemo' then
DllMemo := TMemo(DllForm.Controls[i]);
DllForm.Show;
end;
procedure TfrmMain.btnTambahBarisClick(Sender: TObject);
begin
if (DllMemo <> nil) then
DllMemo.Lines.Add('Tambah baris baru');
end;

more 17 years ago
EkoIndri
tul mas..
kemarin aku coba pakai ini:
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca.
Kode begini ngga pernah True:
if DllForm.Controls[i] is TMemo
tak coba deh ntar caranya diatas
makasih sebelumnya...

more 17 years ago
DelphiExpert
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca. Kode begini ngga pernah True: if DllForm.Controls[i] is TMemotahukah anda kenapa code tersebut tidak pernah menghasilkan TRUE? :D

more 17 years ago
EkoIndri
kemarin sebenarnya saya mirip dengan itu
if Components[indek].ClassType = TMemo then
@DE
ada penjelasan kah?

more 17 years ago
DelphiExpert
jawaban simplenya karena beda module dng demikian beda virtual-method table, beda class registry table... dll...
if Components[indek].ClassType = TMemo then --> saya rasa ini juga tidak bisa digunakan (jika dieksekusi di Host app / DLL form lain)... karena masing2 module punya Class Table sendiri... jadi pengecekan object A hanya relevan jika dilakukan dlm module dimana object A tersebut dibuat...
if DllForm.Controls[i].ClassName = 'TMemo' --> seperti @mat_koder bilang; itu bisa anda gunakan...
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Ada yang tau komponentnya?
by p2bf in Tip n Trik Pemrograman more 17 years ago - Update Software
by rudyrc in Hal umum tentang Pascal Indonesia more 19 years ago - menampilkan data di string grid
by krizzna in Tip n Trik Pemrograman more 19 years ago - Menampilkan Record Berdasar No. Record Di Suatu Tabel
by umarbakri in Hal umum tentang Pascal Indonesia more 18 years ago - Membuat sebuah file dengan ukuran tertentu
by frozenade in Network, Files, I/O & System more 17 years ago - Print dengan Word
by xerion in Tip n Trik Pemrograman more 18 years ago - tanya form
by sulth4n in Tip n Trik Pemrograman more 19 years ago - Supaya Aplikasi tidak mudah dimatikan user
by zuyo in Tip n Trik Pemrograman more 16 years ago - Nanya File dalam File
by Hadoitz in Tutorial & Community Project more 16 years ago - Hubungkan delphi dengan VB...???
by alvian_tc in Tip n Trik Pemrograman more 15 years ago