2012-03-06 34 views
6

Chúng tôi có một dự án đầy đủ các thành phần tùy chỉnh mà hiện nay đang làm việc trong Lazarus và Delphi.Sự khác nhau giữa việc thực hiện Giao diện trong Delphi và Lazarus (FPC) là gì?

Tôi đang suy nghĩ về các giao diện mã trên đó, nhưng tôi không quen thuộc lắm với chúng. Những gì tôi muốn biết là: các sắc thái thực hiện từ Delphi và giao diện Lazarus là gì? Có điều gì đó mà tôi nên đặc biệt nhận thức? Tôi có phải viết mã những thứ khác nhau không?

Giải thích nền: Tôi nghĩ rằng các thành phần có thể được hưởng lợi từ giao diện hoặc ít nhất, tôi sẽ tìm hiểu thêm từ chúng. Ví dụ, một trong những thành phần làm cho giao tiếp với nhiều phần cứng khác nhau bằng cách sử dụng cổng nối tiếp. Nhưng người dùng chỉ nên sử dụng thành phần của chúng tôi để tạo ứng dụng. Vì vậy, chúng tôi có các thành phần và một lớp học cho mỗi phần cứng này mà hậu duệ từ một lớp cơ sở. Tại thời gian chạy, chúng ta tạo ra một lớp cụ thể bên trong thành phần.

Không chắc chắn giải thích cuối cùng này là cần thiết, nhưng tôi có thể viết thêm nếu bạn cần.

+2

Đây là một [đọc cơ bản'] (http://www.freepascal.org/docs-html/ref/refch7.html#x84-940007) về các giao diện trong FreePascal. Như một kết luận rất nhanh tôi sẽ nói, nếu bạn đang nhắm mục tiêu nền tảng Windows và bạn sẽ sử dụng kiến ​​trúc Windows COM (các giao diện giảm dần từ IUnknown) sẽ không có sự khác biệt trong mã từ Delphi, nhưng câu trả lời cho câu hỏi của bạn sẽ được nhiều hơn tinh vi. – TLama

+0

Bạn có ý nghĩa gì bởi "sắc thái thực hiện"? Có vẻ như điều đó thực sự quan trọng với bạn. Điều quan trọng là liệu bạn có thể viết mã * có nghĩa là * cùng một thứ với cả hai trình biên dịch, không phân biệt mỗi trình biên dịch thực sự thực hiện các giao diện như thế nào. –

+0

@DavidHeffernan Tôi có nghĩa là "sự khác biệt nhỏ trong việc thực hiện". Có lẽ tôi không thể viết mã có nghĩa là giống nhau cho cả hai, nhưng có lẽ, tôi sẽ không cần phải viết tất cả những điều cho mỗi trình biên dịch. Tôi đã hỏi chỉ vì tôi mong đợi có, nhưng tôi không biết nếu có bất kỳ sự khác biệt trong cả hai trình biên dịch trong trường hợp này. Điều này có rõ ràng hơn không? – EMBarbosa

Trả lời

11

Trong Pascal miễn phí, loại giao diện phụ thuộc vào chế độ. Về cơ bản có chế độ COM or CORBA. COM là mặc định và tương thích gần với Delphi. CORBA là một trường hợp đơn giản hơn mà không cần tính tham chiếu. (và do đó cũng không tạo ra các cuộc gọi đến chức năng đếm ngược). Về cơ bản, giao diện FPC Corba giống như tổ tiên giả định của giao diện IUnknown.

Bên cạnh đó, đôi khi có một số khác biệt wrt khi giao diện được phát hành. Delphi có xu hướng tiết kiệm giảm số lần truy cập vào cuối thủ tục hoặc khối (trong các quy trình lớn hơn), trong khi FPC đôi khi được biết là phát hành chúng sớm hơn, thường ngay sau khi tuyên bố sử dụng lần cuối. Cả hai đều là lựa chọn thực thi pháp lý btw, dựa trên phạm vi được sử dụng cho các biến tạm thời. (chỉ ở cấp chức năng, hoặc cũng trong các khối lồng nhau sâu hơn)

Tuy nhiên điều này đôi khi cho thấy các giả định ẩn (xấu) trong mã, đặc biệt khi sử dụng tham chiếu giao diện và tham chiếu đối tượng trong một thủ tục có thể "tồn tại" trong Delphi. không có trong FPC. Đây là một trường hợp điển hình cho thấy mã làm việc lâu dài không nhất thiết phải chính xác. Người ta chỉ có thể nhận thấy các giả định ẩn khi thay đổi triển khai

(được thêm sau :) lưu ý rằng bạn có thể sử dụng kiểu COM trên * nix. Nó chủ yếu là chèn các cuộc gọi đến các thói quen đếm tham chiếu để thiết lập hai loại giao diện. Không phải hệ thống nào (COM, Corba hoặc đơn giản là đếm tham chiếu RTL) các cuộc gọi đó được định tuyến đến.

Lưu ý rằng tôi nghĩ tên COM và Corba cho cả hai loại giao diện đều bị chọn sai. Các giao diện Corba được nạp lại thực sự, nhưng theo truyền thống, số lần truy cập này được xử lý thủ công, bởi vì Java không hỗ trợ các giao diện được xử lý bên ngoài một cách tự động.

+1

+1. Đây là loại thông tin thực sự được đánh giá cao. – EMBarbosa

Các vấn đề liên quan