2011-06-27 23 views
9

Được rồi - chúng tôi có một vấn đề thú vị.Có thể biên dịch lại gói DataSnap trong Delphi XE bằng phiên bản mới/khác biệt của Indy không?

Một số nền:

  1. ứng dụng chính của chúng tôi sử dụng Indy 10. Tuy nhiên, chúng ta lấy Indy 10 nguồn và sửa lỗi trong đó, biên dịch và cài đặt thiết lập riêng của chúng ta về Indy thành phần.

  2. Chúng tôi đang di chuyển sang xe Delphi và muốn bắt đầu sử dụng DataSnap.

  3. DataSnap yêu cầu phiên bản "chính thức, giao hàng" của Indy là không tương thích với phiên bản Indy tùy chỉnh của chúng tôi.

  4. Máy chủ DataSnap của chúng tôi sẽ là các ứng dụng riêng biệt, nhưng vì chúng tôi có Indy được cài đặt trong IDE, chúng tôi không thể "vượt qua luồng".

Được rồi, do đó, chúng tôi không thể sử dụng dữ liệu của Delphi XE ra khỏi hộp vì vấn đề tương thích này.

Vì vậy, câu hỏi của tôi là thế này:

Có thể biên dịch lại các gói DataSnap trong Delphi XE với một phiên bản mới/khác nhau của Indy?

Suy nghĩ của bạn được chấp nhận một cách biết ơn.

+0

Tại sao DataSnap không hoạt động với phiên bản Indy của bạn? Bạn đang thay đổi giao diện? –

+0

Tôi chưa bao giờ có thể tìm thấy DPK cho các Gói này. –

+0

@David - Hmm. Không chắc. Kiểm tra .... và họ nói rằng họ không tin như vậy. Đó có thể là tuyến đường đến giải pháp - áp dụng các bản sửa lỗi của chúng tôi cho phiên bản giao hàng. Chúng tôi đã sử dụng phiên bản mới hơn của Indy, nhưng phiên bản vận chuyển XE có thể hoạt động. –

Trả lời

3

Niềm tin chung là Không, điều đó là không thể do không phải tất cả các nguồn được cung cấp bởi Embarcadero và một số trong các nguồn này phụ thuộc vào việc xây dựng Indy như được vận chuyển. (Đó là cực kỳ bực bội cho người dùng cuối như phiên bản của Indy mà tàu với Delphi là lỗi thời tương đối nhanh chóng và đôi khi phiên bản được lựa chọn tại thời điểm đó không nhất thiết phải là một phiên bản rất tốt.)

Xem liên quan SO câu hỏi: Is it possible to use Indy 10.5.8.0 in Delphi XE and DataSnap?

Cũng xem trang dự án Indy: http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx trong đó nêu:

Lưu ý: Trong D/CB/RAD 2009+, DataSnap sử dụng Indy 10 nội bộ. Cài đặt phiên bản mới của Indy sẽ làm cho DataSnap không sử dụng được, vì sẽ không thể tải các gói Indy nữa. DataSnap được biên soạn dựa trên các gói Indy đi kèm với IDE và DataSnap không thể được biên dịch lại bởi người dùng cuối . Nếu bạn cần sử dụng DataSnap, thì bạn sẽ cần duy trì gói bản gốc Indy 10 để sử dụng trong các dự án DataSnap.

Người ta nói rằng phiên bản tiếp theo hy vọng sẽ cho phép cập nhật dễ dàng hơn của Indy.

+1

quy tắc vàng: không bao giờ sử dụng các thành phần không có mã nguồn đầy đủ – mjn

+4

Embarcadero sẽ giải quyết vấn đề DataSnap/Indy trong bản phát hành XE2 sắp tới để người dùng có thể nâng cấp Indy một cách độc lập mà không phá vỡ DataSnap nữa. –

+1

@Mjn: vấn đề là DataSnap là thư viện Delphi ... bạn không nên sử dụng toàn bộ RTL/VCL vì bạn không có mã nguồn đầy đủ (gói ...)! : D –

2

Nếu tất cả nguồn DataSnap được bao gồm, tất nhiên có thể sử dụng một số loại chương trình analisys PE thực thi để phát hiện các lớp và đơn vị nào được sử dụng trong BPL (như BPL chỉ là DLL tùy chỉnh). Rất dễ sử dụng được cung cấp với GExperts.

Trong BPLs, các đường danh sách xuất khẩu từ GExperts \ Thông tin PE có một định dạng như @xp $ @ [nn] [unitName] @ [TypeName] (đối với các loại) và @ [unitName] {@ [Loại >]} @ [Đơn vị phần tử toàn cục như thủ tục hoặc biến] (đối với phần còn lại).

Bạn có thể lưu danh sách đó vào một tệp và GREP để nhận danh sách các Đơn vị được sử dụng trên BPL.

Ví dụ Real (vcl140.bpl):

  • @ $ xp $ 11Forms @ TForm
  • @ Appevnts @ TCustomApplicationEvents @ Kích hoạt
  • @ Clipbrd @ Clipboard
+0

+1 mẹo tuyệt vời. –