AI muốn lập trình DLL cho Excel và các loại bằng Delphi thì xem video này nhé!

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lần chỉnh sửa cuối:
Pascl, Python, C++ gì gì đó thì tôi không biết có nên dạy hay không.
Nhưng hướng đối tượng thì hơi khó dạy. HĐT cần tư duy khác hẳn. Số người VN có khả năng tư duy này không nhiều. Số giáo viên có khả năng này lại càng hiếm.

Vào mấy diễn đàn chuyên Java, C# hay C++ sẽ thấy mấy bài tập LTHĐT cứng như que củi, quanh quẩn ba cái ví dụ lớp này lớp nọ. Cái lớp có thể phức tạp kinh khủng nhưng tinh thần HĐT là zê-rô.
Không hề thấy thầy/cô nào dạy học sinh nhìn vào môi trường vấn đề như một khung cảnh mà trong đó có nhiều vật thể tương tác với nhau. Không hề thấy một bài tập nào cho phép học sinh tự do thiết kế các lớp của mình.

Điển hình là xem tất cả các bài tập về Excel mà học sinh đem lên GPE hỏi. Chỉ toàn là lập công thức này công thức nọ chứ chả thấy bài tập nào hỏi cách thiết lập một bảng tính trải rộng hay cách đọc dữ liệu trong bảng tính cả.

Vì đều ăn xổi ở thì, làm nhanh ăn nhanh, có thừa kế hay lặp lại code đáng đâu.
Còn Excel ở đây cũng thế, hỏi 1 lần
If của các Ngôn ngữ lập trình khác nhau
Mới nhìn thấy khó ... nhìn diết cảm giác nó gần giống nhau -0-0-0-
Mấy cấu trúc
- IF, IF THEN ELSE..., IF ... THEN ELSEIF THEN ... ELSE
- FOR / WHILE / REPEAT UNTIL , LOOP .... DO

thì là cơ bản của cơ bản của hầu hết các ngôn ngữ lập trình rồi.
 
Upvote 0
Các Bạn cho Mình hỏi chút

Mình đang tập làm cái Add-Ins COM trên Delphi cho Excel ( thực ra lâu nay là xài đồ có sẳn của người ta tải về viết lại + thêm vào )
Nay rảnh đang tự mò làm lấy từ A To Z vậy mình muốn hỏi là

1/ khi mình Import cái thư viện tạm keo là của Bill thì Delphi tạo ra File AddInDesignerObjects_TLB.pas
2/ khi mục số 1 thực hiện xong mình có thêm các Unit và thử viết thì thấy chạy ok
3/ Tuy nhiên Mình thắc mắc là sao file AddInDesignerObjects_TLB.pas nó báo lỗi code một vài chỗ có hình kèm theo mà vẫn chạy tốt

Tóm lại lỗi đó là gì và tại sao khi Build DLL ko thấy báo lỗi mà vẫn sử dụng rất tốt ??????????!!!!!!!!!!!!!!

COM.png
 
Upvote 0
rảnh đang mò viết cái hàm CompactRepair API tìm diết ở mô xa .. thì ra trong Delphi nó có hết rồi chỉ việc gắp ra xài -0-0-0-
 
Upvote 0
Anh @batman1 Chỉ Em học và cách sử dụng thư viện *.dll đã Component\Import Component... Với

Em mô tả như sau:

1/ khi em viết cái thư viện NetworkTCPIP.dll trên VB6 xong em sử dụng rất tốt ..
2/ Em thử mở Delphi lên xong Component\Import Component... ( NetworkTCPIP.dll ---> vb6 ) vào thì Delphi nó tạo ra 2 file như Em úp lên đây
3/ vậy khi Em viết API DLL trên Delphi thì Em khai báo sử dụng 2 cái hàm trong Unit NetworkTCPIP_TLB.pas như thế nào ??

Cụ thể 2 hàm đó như sau:

Mã:
function Connect(var IP: WideString; var Port: Integer; var SQL: WideString): _Recordset; safecall;
    function ConnectDataName(var IP: WideString; var Port: Integer; var FileName: WideString;
                             var SQL: WideString): _Recordset; safecall;

4/ 2 Hàm đó Em viết ngay trên Delphi thì OK rồi đó ... vấn đề là em muốn học cách sử dụng Import Component thành các Unit mà xài cho Delphi
xem có sử dụng được hay không. Vì trên Internet em có thấy họ chia sẻ nhiều DLL viết bằng vb6 rất hay mà kẹt là code họ không có cho nên em thử vận dụng kiểu Import Component xem nó như thế nào đó mà :p :p

5/ cách này em hoàn toàn chưa biết gì luôn nếu được Anh chỉ và hướng dẫn cho Em học với có 1 VD mẫu thì với em coi như là quá ok rồi đó. xong từ đó em có thể vận dụng DLL = vb6 Import Component qua Delphi các kiểu rồi đấy hoặc Delphi To Delphi :p

Em cảm ơn
 

File đính kèm

  • NetworkTCPIP_Import_Component.rar
    14.4 KB · Đọc: 10
Upvote 0
Anh @batman1 Chỉ Em học và cách sử dụng thư viện *.dll đã Component\Import Component... Với
Bạn có vấn đề thì cứ nhờ tất cả mọi người giúp đỡ thôi chứ sao lại gọi tôi lên bảng?

Nếu nói về Import thì phải là Project -> Import Type Library chứ nhỉ. Tôi không chơi Delphi cũng cỡ 15 năm rồi nên có thể không còn nhớ nhiều. Nhưng chắc chắn Delphi 5 không có Component\Import Component... Nếu có thì có lẽ là Component\Import ActiveX ...
1/ khi em viết cái thư viện NetworkTCPIP.dll trên VB6 xong em sử dụng rất tốt ..
Có nghĩa là thế nào? Cụ thể cái rất tốt ấy có nghĩa là gì, code tuần tự như thế nào? Tôi đã nói với bạn rất nhiều lần là tôi thường không có hứng trả lời bạn vì bạn viết cụt lủn.
2/ Em thử mở Delphi lên xong Component\Import Component... ( NetworkTCPIP.dll ---> vb6 ) vào thì Delphi nó tạo ra 2 file như Em úp lên đây
3/ vậy khi Em viết API DLL trên Delphi thì Em khai báo sử dụng 2 cái hàm trong Unit NetworkTCPIP_TLB.pas như thế nào ??

Cụ thể 2 hàm đó như sau:

Mã:
function Connect(var IP: WideString; var Port: Integer; var SQL: WideString): _Recordset; safecall;
    function ConnectDataName(var IP: WideString; var Port: Integer; var FileName: WideString;
                             var SQL: WideString): _Recordset; safecall;

4/ 2 Hàm đó Em viết ngay trên Delphi thì OK rồi đó ...
Tôi không hiểu bạn nói gì. "2 Hàm đó Em viết ngay trên Delphi thì OK rồi đó" có nghĩa là gì?

Khi bạn đã import type library, và bạn có NetworkTCPIP_TLB.pas thì 2 hàm "kia" nó xuất hiện như 2 phương thức của interface Network trong NetworkTCPIP_TLB.pas rồi còn gì.

Theo tôi nghĩ thì trong system trước đó server NetworkTCPIP.dll đã phải được đăng ký. Sau đó trong Delphi phải gọi CreateComObject để tạo 1 instance của đối tượng COM. Khi đã có interface Network rồi thì gọi phương thức Connect và ConnectDataName của nó thôi.

Tôi nghĩ tất cả là như thế. Nhưng tôi bỏ gần 15 năm rồi nên có thể không còn nhớ nhiều.
 
Upvote 0
1/ trước đây viết VCL.tyles cho DLL là 1 cực hình với người đang tập Delphi ... thì nay trên Delphi 10.4 nó hổ trợ chọn vẹn luôn chỉ khai báo và xài thôi

2/ trước đây viết SQLite trên Delphi phải chuyển nó qua cả ngàn dòng code + SQLite3.dll ... thì nay từ Delphi 10.3 nó có hết rồi như ADO trên Windows vậy chỉ khai báo và lôi nó ra xài thôi vv...

Quá khó .............. mà củng không quá dễ khi vượt cái cái ngưỡng ban đầu nhập môn Delphi

AddIns SQLite cho Excel đang hình thành ... vậy là trong thời gian tới sẻ có 1 cái Addins cho Excel bao gồm:

SQL Excel + Access + Sqlite + SQL Server Ms + SQL TCP/IP ( SQL TCP/IP = Builded SQL và lấy dữ liệu qua Internet )

Hình sau là SQLite Build đang hình thành Viết tìm kiếm File kiểu Explorer folder

Chọn ổ dĩa ===> Show list Files === > chọn File ===> chọn tableName ===> chọn Build SQL ===> thưởng thức

1618029280722.png
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi vẫn đang nghiên cứu C#, viết Add-Ins cũng thấy OK. Hiện tại vẫn phát triển tốt, hiện tại là tự mò nhưng cũng cảm thấy hiểu nhiều về nó rồi. Hầu như là những cái tiện ích VNTools của tôi hoàn toàn chuyển được sang C# rồi. Thấy ái Delphi này ít tài liệu nghiên cứu quá nên chạy mất dép, nhưng những bài viết trong chủ đề này vẫn tò mò muốn xem, thấy bác mò dữ quá.
Xin phép đào mộ xíu, tìm cái vnTool của bác thấy bài viết này. Bác dùng gì để làm addin bằng C# vậy? Mình cũng đang ngâm cứu cái này
 
Upvote 0
Xin phép đào mộ xíu, tìm cái vnTool của bác thấy bài viết này. Bác dùng gì để làm addin bằng C# vậy? Mình cũng đang ngâm cứu cái này
Mình dùng Visual Studio 2019 để viết Add-ins sử dụng thư viện Exceldna, nhưng đã lâu rồi không tiếp dự án, mấy hôm nay rảnh định tiếp tục dự án. Bạn có hứng thú thì có thể lập chủ đề thảo luận trao đổi, tôi sẽ chia sẻ kiến thức nếu biết. Còn đây là giao diện dự án đang bỏ dở.
Hinh.png
Hình giao diện Ribbon TIỆN ÍCH VIỆT hoàn toàn tạo trên C# hết đấy nhé.
 
Upvote 0
mạnh phại khai báo dong này
procedure adxtShowPrintSheet;
phía trên var nữa
Mã:
procedure adxtShowPrintSheet;
var
  Form1: TForm1;
  f: TForm1;
  implementation

{$R *.dfm}
procedure adxtShowPrintSheet;
begin
  f := TForm1.Create(nil);
  try
    f.Show; //.ShowModal;
  finally

  end;
end;
Bạn cho mình hỏi nguyên nhân là mình làm theo bạn hướng dẫn bên trên nhưng:
1. Xài cho office 2019 thì nó chạy ok
2. Xài cho Office 365 thì khi chạy nó lại báo "File not Found" cái MyDLL.dll chép vào 'C:\Windows\SysWOW64'
Cảm ơn bạn !
 
Upvote 0
Bạn cho mình hỏi nguyên nhân là mình làm theo bạn hướng dẫn bên trên nhưng:
1. Xài cho office 2019 thì nó chạy ok
2. Xài cho Office 365 thì khi chạy nó lại báo "File not Found" cái MyDLL.dll chép vào 'C:\Windows\SysWOW64'
Cảm ơn bạn !
Nếu bạn viết thông thường + sử dụng các thư viên có liên quan tới Windows có sẳn thì chạy tốt
Còn viết phức tạp nó liên quan tới nhiều thư viện khác nhau thì nó sẻ không chạy được vì thiếu 1 trong số thư viện đó

có rất nhiều nguyên nhân sinh ra nó ... và người viết code có cái nhìn tổng thể trong toàn bộ project của mình thì mới có thể tìm ra

Tôi cũng bị do trên máy khác cũng windows10 mà thiếu 1 thư viện .... tìm copy vào là xong
 
Upvote 0
Trên windows 32 bit thì dll lưu vào system32. Trên windows 64 bit, các dll 64 bit cũng lưu vào system32, chắc để tương thích ngược với phiên bản cũ còn dll 32 bit lưu vào SysWOW64 (windows on windows 64).
 
Upvote 0
Trên windows 32 bit thì dll lưu vào system32. Trên windows 64 bit, các dll 64 bit cũng lưu vào system32, chắc để tương thích ngược với phiên bản cũ còn dll 32 bit lưu vào SysWOW64 (windows on windows 64).
Tây nó nói tiếng Anh ... Google nó dịch ra như sau

GHI CHÚ!
Trên hệ điều hành Windows có kiến trúc 64 Bit,
tệp dll phải nằm trong cả thư mục " sysWOW64 "
cũng như thư mục " System32 ". Nói cách khác,
bạn phải sao chép tệp .dll vào cả hai thư mục.
 
Upvote 0
Tây nó nói tiếng Anh ... Google nó dịch ra như sau

GHI CHÚ!
Trên hệ điều hành Windows có kiến trúc 64 Bit,
tệp dll phải nằm trong cả thư mục " sysWOW64 "
cũng như thư mục " System32 ". Nói cách khác,
bạn phải sao chép tệp .dll vào cả hai thư mục.
Không biết bạn đọc ở trang nào còn tất cả các trang mình đọc đều nói system32 dành cho dll64 còn SysWOW64 dành cho dll32. Vì không thấy trang của MS nên mình không đưa. Do dll của bạn đã đăng ký nên windows đã biết đường dẫn để nạp nên có thể không lỗi. Tuy nhiên windows không nạp cả 2 dll ở 2 folder cùng lúc.
 
Upvote 0
Các bạn tạo DLL, OCX hãy lưu ý platforms của Windows và Office. Chứ không phải chỉ xem xét mỗi Windows. Tôi đã phân phối sản phẩm DLL, OCX nhiều năm cả tây và ta nên những hướng dẫn tôi viết ra đây mọi người đều làm theo và chạy được: http://atoolspro.com/install-activex-controls-bsac-manually.html
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn cho mình hỏi nguyên nhân là mình làm theo bạn hướng dẫn bên trên nhưng:
1. Xài cho office 2019 thì nó chạy ok
2. Xài cho Office 365 thì khi chạy nó lại báo "File not Found" cái MyDLL.dll chép vào 'C:\Windows\SysWOW64'
Cảm ơn bạn !
Bạn làm theo bài #1258 là chính xác
 
Upvote 0
Thời gian vừa qua có 1 số bạn gửi mail + nhắn tin zalo + Facebook cho tôi nhưng vấn đề có liên quan tới Delphi

Bạn nào yêu thích Delphi ==> xin mời vào đây ta trao đổi bàn luận tiếp
Học thì nên có bạn Buôn bán thì gì đó ... Không nên dấu dốt, ko biết thì hỏi là bình thường ???!!!!!!!!!!!!

nay Tôi đăng nhập lại nick này có gì trao đổi bàn luận tại đây tiếp Hoăc lập chủ đề mới thì tùy
 
Upvote 0
Web KT
Back
Top Bottom