Changeset 9 for ProtocolBuffers/UMainForm.pas
- Timestamp:
- Oct 12, 2009, 11:01:02 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ProtocolBuffers/UMainForm.pas
r8 r9 7 7 uses 8 8 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, 9 StdCtrls, UProtocolBuffers, UMemoryStreamEx;9 StdCtrls, ComCtrls, UProtocolBuffers, UMemoryStreamEx; 10 10 11 11 const … … 18 18 Button2: TButton; 19 19 Memo1: TMemo; 20 TreeView1: TTreeView; 21 TreeView2: TTreeView; 20 22 procedure Button1Click(Sender: TObject); 21 23 procedure Button2Click(Sender: TObject); … … 24 26 private 25 27 procedure DisplayStream(Stream: TStream); 28 procedure DisplayTree(ProtocolBuffer: TProtocolBuffer; TreeView: TTreeView); 29 procedure MessageToNode(PBMessage: TPBMessageItem; Node: TTreeNode); 26 30 public 27 PB: TProtocolBuffer; 28 end; 31 end; 29 32 30 33 var … … 43 46 Stream: TMemoryStream; 44 47 StringList: TStringList; 48 PB: TProtocolBuffer; 45 49 begin 46 50 Stream := TMemoryStreamEx.Create; … … 61 65 Stream: TMemoryStreamEx; 62 66 NewItem: TPBItem; 67 PB: TProtocolBuffer; 63 68 begin 64 69 Stream := TMemoryStreamEx.Create; … … 68 73 Name := 'SampleMessage'; 69 74 NewItem := TPBIntegerItem.Create; 70 TPBIntegerItem(NewItem).Value := $5555555; 75 TPBIntegerItem(NewItem).Name := 'Height'; 76 TPBIntegerItem(NewItem).Tag := 1; 77 TPBIntegerItem(NewItem).Value := 12; 78 Items.Add(NewItem); 79 NewItem := TPBIntegerItem.Create; 80 TPBIntegerItem(NewItem).Name := 'Width'; 81 TPBIntegerItem(NewItem).Tag := 2; 82 TPBIntegerItem(NewItem).Value := 34; 83 Items.Add(NewItem); 84 NewItem := TPBIntegerItem.Create; 85 TPBIntegerItem(NewItem).Name := 'Age'; 86 TPBIntegerItem(NewItem).Tag := 3; 87 TPBIntegerItem(NewItem).Value := 45; 71 88 Items.Add(NewItem); 72 89 end; 90 DisplayTree(PB, TreeView1); 73 91 SaveToStream(Stream); 74 DisplayStream(Stream); 92 Free; 93 end; 94 95 DisplayStream(Stream); 96 Stream.Position := 0; 97 98 PB := TProtocolBuffer.Create; 99 with PB do begin 100 with BaseMessage do begin 101 Name := 'SampleMessage'; 102 NewItem := TPBIntegerItem.Create; 103 TPBIntegerItem(NewItem).Name := 'Height'; 104 TPBIntegerItem(NewItem).Tag := 1; 105 Items.Add(NewItem); 106 NewItem := TPBIntegerItem.Create; 107 TPBIntegerItem(NewItem).Name := 'Age'; 108 TPBIntegerItem(NewItem).Tag := 3; 109 Items.Add(NewItem); 110 NewItem := TPBIntegerItem.Create; 111 TPBIntegerItem(NewItem).Name := 'Weight'; 112 TPBIntegerItem(NewItem).Tag := 4; 113 Items.Add(NewItem); 114 end; 115 LoadFromStream(Stream); 116 DisplayTree(PB, TreeView2); 117 Free; 75 118 end; 76 119 Stream.Free; … … 79 122 procedure TMainForm.FormDestroy(Sender: TObject); 80 123 begin 81 PB.Free;82 124 end; 83 125 … … 95 137 end; 96 138 139 procedure TMainForm.DisplayTree(ProtocolBuffer: TProtocolBuffer; 140 TreeView: TTreeView); 141 begin 142 with TreeView do begin 143 BeginUpdate; 144 Items.Clear; 145 TopItem := Items.Add(nil, 'message'); 146 MessageToNode(ProtocolBuffer.BaseMessage, TopItem); 147 TopItem.Expand(True); 148 EndUpdate; 149 end; 150 end; 151 152 procedure TMainForm.MessageToNode(PBMessage: TPBMessageItem; Node: TTreeNode); 153 var 154 I: Integer; 155 NewNode: TTreeNode; 156 begin 157 for I := 0 to PBMessage.Items.Count - 1 do begin 158 NewNode := Node.Owner.AddChild(Node, ''); 159 if TPBItem(PBMessage.Items[I]) is TPBStringItem then begin 160 NewNode.Text := IntToStr(TPBItem(PBMessage.Items[I]).Tag) + ': string ' + 161 TPBItem(PBMessage.Items[I]).Name + ' = ' + 162 TPBStringItem(PBMessage.Items[I]).Value; 163 end else 164 if TPBItem(PBMessage.Items[I]) is TPBIntegerItem then begin 165 NewNode.Text := IntToStr(TPBItem(PBMessage.Items[I]).Tag) + ': uint32 ' + 166 TPBItem(PBMessage.Items[I]).Name + ' = ' + 167 IntToStr(TPBIntegerItem(PBMessage.Items[I]).Value); 168 end else 169 if TPBItem(PBMessage.Items[I]) is TPBMessageItem then begin 170 NewNode.Text := IntToStr(TPBItem(PBMessage.Items[I]).Tag) + ': message ' + 171 TPBItem(PBMessage.Items[I]).Name; 172 MessageToNode(TPBMessageItem(PBMessage.Items[I]), NewNode); 173 end; 174 175 end; 176 end; 177 97 178 initialization 98 179 {$I UMainForm.lrs}
Note:
See TracChangeset
for help on using the changeset viewer.