2010-01-27 29 views
17

Có ai biết dự án thực hiện triển khai Bộ đệm giao thức của Google ở ​​Delphi không?Bộ đệm giao thức Delphi?

+0

không giống là khó để có một đi vào nó bản thân mình (mình?), nó chỉ thời gian (thời gian !!) tôi ước gì có một vài giờ nữa mỗi ngày. –

+2

Amen! Đã hy vọng để giúp đỡ và không bắt đầu từ đầu. –

+1

Trang đệm giao thức: http://code.google.com/p/protobuf/ protobuf-net là triển khai .net: http://code.google.com/p/protobuf-net/ Dựa trên ở trên nó phải là công việc nhiều hơn tôi nghĩ đầu tiên. Tôi muốn có phiên bản win32 hoặc không .net ở Delphi. –

Trả lời

9

Dự án này chứa việc triển khai Bộ đệm giao thức cho Delphi. Từ dự án đã được triển khai thực hiện chức năng hạn chế cần thiết cho một dự án cụ thể. Vào thời điểm đó, tôi không thấy bất kỳ ý nghĩa nào để chuyển toàn bộ mã dự án. http://sourceforge.net/projects/protobuf-delphi/

+0

và chưa được chạm lại từ năm 2011. Xem bên dưới cho câu trả lời Cơ bản dường như vẫn được duy trì tích cực. –

+1

Phiên bản 1.1 đã được phát hành vào tháng 4 năm 2013. –

2

Bạn có thể nên tìm/tạo cầu C++/Delphi tốt hơn là thực hiện lại bộ đệm giao thức. Các codebase là khá lớn.

0

Tôi tự hỏi bạn nghĩ gì khi sử dụng hoặc JSON hoặc BSON có vẻ giống như một công việc đang tiến hành) dưới dạng giao thức.

+0

Dường như các bộ đệm giao thức có nhiều tính năng hơn vì chúng cho phép các phần tử tùy chọn ví dụ, vì vậy nó gần với giao thức XML + XSD/WSDL/SOAP hơn là định dạng tuần tự – mjn

14

đây:

Fundamentals Nghị định thư Buffers 4.00.01 (10 Feb 2013)

Google Nghị định thư Buffers

http://fundementals.sourceforge.net/dl.html

+2

Xuất hiện để được duy trì tích cực. 1 cho điều này trong khi câu trả lời được chấp nhận dường như bị đóng băng và không bao giờ xúc động kể từ năm 2011. –

1

tôi thấy another one trên github. (được phát triển từ tháng 2 năm 2014 đến tháng 7 năm 2016, kể từ tháng 6 năm 2017)

Có vẻ như có preliminary proto3 support.

Tôi chưa thử nghiệm, nhưng nó có thể là tốt nhất kể từ hôm nay.

https://github.com/stijnsanders/DelphiProtocolBuffer

EDIT: Tôi thử nghiệm này nhưng có vẻ như được viết bằng delphi cũ và không Unicode sẵn sàng.

tôi có thể biên dịch các máy phát điện (sử dụng 10 Seattle), nhưng biên soạn exe không thể tạo ra file pas :-(

EDIT2:

Các bộ tạo mã công trình chỉ cần thay thế TStream để TStreamReader/Writer . tôi khẳng định máy phát điện có thể chuyển đổi gần đây address book sample.

diff --git a/ProtBufParse.pas b/ProtBufParse.pas 
index f29d7c7..cdd734d 100644 
--- a/ProtBufParse.pas 
+++ b/ProtBufParse.pas 
@@ -236,16 +236,13 @@ var 

    procedure LoadCode; 
    var 
- f:TFileStream; 
+ sr:TStreamReader; 
    begin 
- f:=TFileStream.Create(FilePath,fmOpenRead or fmShareDenyWrite); 
+ sr:=TStreamReader.Create(FilePath, True{DetectBOM}); 
    try 
-  //TODO: UTF-8? UTF-16? 
-  CodeL:=f.Size; 
-  SetLength(Code,CodeL); 
-  if f.Read(Code[1],CodeL)<>CodeL then RaiseLastOSError; 
+  Code := sr.ReadToEnd; 
    finally 
-  f.Free; 
+  sr.Free; 
    end; 
    end; 

diff --git a/dpbp.dpr b/dpbp.dpr 
index 4049480..b6dab90 100644 
--- a/dpbp.dpr 
+++ b/dpbp.dpr 
@@ -22,7 +22,7 @@ var 
    p:TProtocolBufferParser; 
    s,t,InputFN,OutputFN,RelPath:string; 
    i,j,l,l1:integer; 
- f:TFileStream; 
+ sw:TStreamWriter; 
    fv:TProtocolBufferParserValue; 
    ff:TProtocolBufferParserFlag; 
    Flags:TProtocolBufferParserFlags; 
@@ -134,11 +134,12 @@ begin 

     writeln('Writing '+OutputFN); 
     s:=p.GenerateUnit(Flags); 
-  f:=TFileStream.Create(OutputFN,fmCreate); 
+ 
+  sw:=TStreamWriter.Create(OutputFN,False,TEncoding.UTF8); 
     try 
-   f.Write(s[1],Length(s)); 
+   sw.Write(s); 
     finally 
-   f.Free; 
+   sw.Free; 
     end; 

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