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:
Sửa Move lại thành CopyMemory đi, cho nó rõ, tường minh hơn. Để ý Dest, Source và Size.
Nếu inArrayByte là PByte thì thử như sau:
CopyMemory(Pointer(@OutArray[0]), inArrayByte, mSize);
Còn nếu inArrayByte là 1 array thì:
CopyMemory(Pointer(@OutArray[0]), Pointer(@inArrayByte[0], mSize);
 
Upvote 0
Đọc lại đi.
Mấy cô cậu này yếu về cái căn bản memory, pointer,địa chỉ quá. Căn bản không học, cứ nhảy đòi làm cái cao xa, giờ thấy hổng cẵng chưa ?
 
Upvote 0
Access violation at address 00408A2E
Tôi đã nói ngay từ đầu, ngay từ bài 1047 là
Mã:
 Không phải là Pointer(OutArray[0])^
Nhưng bạn lờ đi, bạn không bàn về nó.

Dùng CopyMemory của Windows thì quá dễ. Dùng Move của Delphi mà truyền đúng tham số mới là thử thách cho bạn. Nếu bạn thấy Move khó quá đối với bạn thì dùng CopyMemory của Windows API thôi.
 
Upvote 0
Các bạn học Delphi mà đụng vào memory hay sử dụng các hàm API thì phải hiểu kiến thức về con trỏ đã. Xem bài bạn Thuyyeu thì hình như bạn chưa đọc kỹ tài liệu về Pointer trong Pascal. Nếu chưa có chuẩn bị kiến thức về Pointer thì các hướng dẫn trên của mọi người về Move hay CopyMemory sẽ không hiểu đâu. Kiến thức dạng này phải cày tài liệu kỹ, không học mò được đâu.
 
Upvote 0
Vài lời tâm sự gửi cho gió ...
Xem ra cái thớt Delphi này Có nhiều thành Viên mê lắm, thích lắm và mong muốn học nhiều lắm
…!!!???

Mà tại làm sao không dám lên đây đặt 1 câu hỏi đơn giản nhất như 1 + 1 = ???!!! là sao vậy
Mà cứ lén lút nhắn tin + kết Bạn Zalo, Facebook hỏi giật chọt như thế thì làm sao mà học được ??!!!
Hay cái Tôi của mình quá lớn đến nổi dấu dốt mà không dám hỏi 1 câu hay sao ????!!!

Không có gì là xấu hổ cả Chỉ có dấu dốt hay xâm phạm tới các quy định của pháp luật mới thật sự xấu hổ
Học tập là cả 1 quá trình tích lũy đâu có dễ như ăn kẹo mút …hỏi cà giật tin nhắn 1 ,2 câu xong
Hãy dũng cảm lên , Mạnh mẻ lên … lên cái thớt này mà hỏi … học tập giao lưu tương tác thì mới phát sinh nhiều cái hay mà học ...

Trẻ tuổi học cái hay cái kinh nghiệm của người nhiều tuổi và người nhiều tuổi trong chừng mực nào đó có khi lại học cái hay của giới trẻ ấy chứ
Có giao lưu, tương tác thì xã hội này nó mới phát triển lên được và chính mình cũng thế !!!!???

Và cuối cùng nếu thật sự mong muốn học thì nên hỏi nhưng nơi người ta giảng dạy có trường lớp, bài bản VD như: @Nguyễn Duy Tuân
thì sẻ có một kiến thức cơ bản tốt

Xin đừng nhắn tin + kết bạn với Mạnh vì cái sự dấu dốt, lén lút và mấy đồng bạc còi … tui bới cho lại hủy kết bạn thì nhọc lắm hehehehe
 
Lần chỉnh sửa cuối:
Upvote 0
Vài lời tâm sự gửi cho gió ...
Xem ra cái thớt Delphi này Có nhiều thành Viên mê lắm, thích lắm và mong muốn học nhiều lắm
…!!!???

Mà tại làm sao không dám lên đây đặt 1 câu hỏi đơn giản nhất như 1 + 1 = ???!!! là sao vậy
Mà cứ lén lút nhắn tin + kết Bạn Zalo, Facebook hỏi giật chọt như thế thì làm sao mà học được ??!!!
Hay cái Tôi của mình quá lớn đến nổi dấu dốt mà không dám hỏi 1 câu hay sao ????!!!

Không có gì là xấu hổ cả Chỉ có dấu dốt hay xâm phạm tới các quy định của pháp luật mới thật sự xấu hổ
Học tập là cả 1 quá trình tích lũy đâu có dễ như ăn kẹo mút …hỏi cà giật tin nhắn 1 ,2 câu xong
Hãy dũng cảm lên , Mạnh mẻ lên … lên cái thớt này mà hỏi … học tập giao lưu tương tác thì mới phát sinh nhiều cái hay mà học ...

Trẻ tuổi học cái hay cái kinh nghiệm của người nhiều tuổi và người nhiều tuổi trong chừng mực nào đó có khi lại học cái hay của giới trẻ ấy chứ
Có giao lưu, tương tác thì xã hội này nó mới phát triển lên được và chính mình cũng thế !!!!???

Và cuối cùng nếu thật sự mong muốn học thì nên hỏi nhưng nơi người ta giảng dạy có trường lớp, bài bản VD như: @Nguyễn Duy Tuân
thì sẻ có một kiến thức cơ bản tốt

Xin đừng nhắn tin + kết bạn với Mạnh vì cái sự dấu dốt, lén lút và mấy đồng bạc còi … tui bới cho lại hủy kết bạn thì nhọc lắm hehehehe
hehe em giải quyết xong hàm move rồi (mà move xong nó chuyển dòng thành cột mới ghê chứ éc).Làm liên quan tới Memory không nắm vững nguy hiểm quá không mò nữa.
Khi nào vướng hỏi tiếp heheheh
 
Upvote 0
hehe em giải quyết xong hàm move rồi (mà move xong nó chuyển dòng thành cột mới ghê chứ éc).Làm liên quan tới Memory không nắm vững nguy hiểm quá không mò nữa.
Khi nào vướng hỏi tiếp heheheh
THÌ HÔM mạnh cũng có thử trên VBA mà thấy nó rối quá đang bỏ đó
Hình như dòng sang cột cho vào Memory nó cho tốc độ rất nhanh .... có thể bỏ qua được vòng lặp chuyển mảng
Chúc mừng nha

mà có Re cho Mạnh 1 tẹo học hỏi ko nhỉ Quan trọng cái đó ý :D :p cái đó người ta keo là giao lưu và tương tác đấy ???
 
Upvote 0
THÌ HÔM mạnh cũng có thử trên VBA mà thấy nó rối quá đang bỏ đó
Hình như dòng sang cột cho vào Memory nó cho tốc độ rất nhanh .... có thể bỏ qua được vòng lặp chuyển mảng
Chúc mừng nha

mà có Re cho Mạnh 1 tẹo học hỏi ko nhỉ Quan trọng cái đó ý :D :p cái đó người ta keo là giao lưu và tương tác đấy ???
Mò đi cho nó phê hehehehe
Chạy lần đầu không sao, lần 2 nó lỗi làm biếng mò quá anh với lại không đúng yêu cầu của em (em đâu có muốn viết Tranpose đâu em muốn viết ReDim Preserve ).
Thôi cái này khó quá cho qua để đó tính sau.
 
Upvote 0
1/ Mạnh có tìm hiểu đọc khá nhiều tài liệu thấy trên Google nó keo chỉ có C++ Or Delphi mới viết được *.DLL ... API không biết nó phán như vậy có đúng không ???? ai biết xin trả lời dùm

2/ Thực tế Mạnh thấy mấy Fan hâm mộ VB6 cũng tự chế thêm Tools cũng Build DLL kiểu API thấy cũng chạy được đó nhưng chỉ trên nền tảng 32 bit ( mà thấy nó cũng ko giống ai ... chạy code ok code lỗi linh tinh )

3/ Tại vì cũng có mấy Bạn hỏi viết trên VB6 nên đang tìm hiểu tài liệu chút viết cái Add-ins cho VB6 như ý đồ mục số 2 cho các Bạn đó làm quên DLL API mà thấy nó không giống ai cả .... :D ;) ( Vì code VB6 nó gần như VBA nên rất dễ làm quen )

4/ Thui khuyên ai đó nếu rảnh nên học C++ Or Delphi đi viết *.DLL API cho khoẻ khỏi mất công làm giả như mục số 2 thấy cũng nhọc lắm he
 
Lần chỉnh sửa cuối:
Upvote 0
PHƯƠNG PHÁP LẬP TRÌNH NHÚNG DLL TRONG DELPHI
Lập trình Delphi tạo hàm trả về mảng động (co giãn trên worksheet) với thư viện Add-in A-Tools.
Lợi ích của phương pháp này là:
- Code các hàm của bạn được biên dịch hoàn toàn ra DLL
- Vì DLL biên dịch bằng Delphi ra mã máy nên tốc độ code chạy rất nhanh.
- Tận dụng được thư viện đã có từ một DLL khác để dùng trong phần mềm hay DLL của bạn.

 
Lần chỉnh sửa cuối:
Upvote 0
1/ Năm ngoái Mạnh có quậy cái TaskPane có nhúng cái BSAC.OCX đó vào Delphi ... Mục đích là xem trong đó nó có cái gì !! :p :p nhưng khi Build nó báo lỗi liên quan Tới Bản Quyền ( Vì ko cài bản Free )

2/ Mới xem hết Video xong học được cách tạo cái Arr trên Delphi thấy hay ... lâu lâu học được 1 chút + lại nhiều chút cũng ok

Cảm ơn @Nguyễn Duy Tuân rất nhiều
 
Upvote 0
1/ Năm ngoái Mạnh có quậy cái TaskPane có nhúng cái BSAC.OCX đó vào Delphi ... Mục đích là xem trong đó nó có cái gì !! :p :p nhưng khi Build nó báo lỗi liên quan Tới Bản Quyền ( Vì ko cài bản Free )

2/ Mới xem hết Video xong học được cách tạo cái Arr trên Delphi thấy hay ... lâu lâu học được 1 chút + lại nhiều chút cũng ok

Cảm ơn @Nguyễn Duy Tuân rất nhiều

1). Tạo TaskPane dùng thư viện BSAC thì viết lệnh nhé, đúng kéo TaskPaneX vào form (không như VBA). Cũng làm công việc Import Type Library. Dùng class IBSTaskPanes, IBSTakPane. Sau có time có thể mình làm clip về cái này.

2). Mảng trong VBA nhìn thì dễ, bản chất nó là mảng PSafeArray nên ở Delphi phải dùng kiểu đó (VarArrayCreate() ). Còn mảng chỉ giao tiếp trong môi trường Delphi thôi thì chỉ cần khai báo var arr: array[0..n-1, 0..0] of Variant;
 
Upvote 0
Mạnh thấy Bài 1074 viết Hàm hay quá mò diết Copy xào trẻ, cắt dán diết cuối cùng cũng mò ra phương thức của nó một tí ... khoe 1 tẹo :p
Code Copy từ Internet .... thêm hành + tỏi + nước mắm xào lên thế thôi ... thấy nó cũng thơm _+)(9
 

File đính kèm

  • ADO_Access_Excel.rar
    3.3 MB · Đọc: 11
Lần chỉnh sửa cuối:
Upvote 0
các Bạn cho mình hỏi chút Mình muốn xài CreateObject("Scripting.FileSystemObject") Trong Delphi thì Uses cái Unit nào nhỉ
lâu này toàn sử dụng kiểu sau ... giờ muốn bỏ sử dụng cái sẳn có trong Delphi
Mã:
fso := CreateOleObject('Scripting.FileSystemObject');
 
Upvote 0
Các Bạn cho Mình hỏi chút
Mình sử dụng code sau test thử sao có 2 dòng sau lúc nó chạy lúc Không mà chưa biết vì sao ... hay viết sai cái gì
Rất mong trợ giúp
Mã:
ShowMessage(sheet.name); //dòng này lúc chạy lúc không
sheet.Range['a1', 'a1'] := 'Kiều Mạnh';    //dòng này lúc chạy lúc không
Toàn bộ code như sau:
Mã:
procedure Get_ExcelApp;
var
  Excel: OleVariant;
  sheet: OleVariant;
  XlVersion: Integer;
begin
  try
    Excel := GetActiveOleObject('EXCEL.Application');
    XlVersion := Trunc(Excel.Application.Version);
    ShowMessage('GetActiveOleObject');
    ShowMessage(IntToStr(XlVersion));
    sheet := Excel.ActiveSheet;
    ShowMessage(sheet.name); //dòng này lúc chạy lúc không
    sheet.Range['a1', 'a1'] := 'Kiều Mạnh';    //dòng này lúc chạy lúc không
  except
    Excel := CreateOleObject('EXCEL.Application');
    XlVersion := Trunc(Excel.Application.Version);
    ShowMessage('CreateOleObject');
    ShowMessage(IntToStr(XlVersion));
    sheet := Excel.ActiveSheet;
    ShowMessage(sheet.name); //dòng này lúc chạy lúc không
    sheet.Range['a1', 'a1'] := 'Kiều Mạnh';    //dòng này lúc chạy lúc không
  end;
  Excel := Unassigned;
end;
1/ Nếu mở 1 File Excel mới tinh lên chưa Lưu có đường dẫn trên ổ cứng là tịt !!
2/ Nếu 1 File có có dữ liệu đã lưu trên Ổ cứng thì OK ???
 
Lần chỉnh sửa cuối:
Upvote 0
Debug đi, debug vào source của Delphi luôn, xem tại sao failed.
Quăng lý do failed, file source, dòng lên đây.
Code mà không biết debug là vứt.
Những dòng lệnh trong khối except...end sẽ được thực thi khi nào mà viết là "lúc chạy lúc không ?????"
Đọc help của Delphi về cơ chế exception handling của nó chưa ?
try finally except mục đích làm gì ?
 
Upvote 0
Web KT
Back
Top Bottom