103 |
|
else if datas = 'SWAPC_2BYTE' then |
104 |
|
current_list.AddElem('SWAPC_2BYTE', 2) |
105 |
|
else if datas = 'SWAPC_1BYTE' then |
106 |
< |
current_list.AddElem('SWAPC_1BYTE', 1) |
107 |
< |
else if datas = 'SWAPC_FIXARR_S' then |
108 |
< |
begin |
109 |
< |
ReadLn(descfile, line); |
110 |
< |
if Pos('h', line) > 0 then |
111 |
< |
datas := MidStr(line, Pos('db ', line) + 3, Pos('h', line) - (Pos('db ', line) + 3) ) |
112 |
< |
else |
113 |
< |
datas := MidStr(line, Pos('db ', line) + 3, Length(Line) - (Pos('db ', line) + 3) ); |
114 |
< |
i := current_list.AddArray('SWAPC_FIXARR_S', StrToInt('$'+datas)); |
115 |
< |
current_list := TSwapList(current_list.Child(i)); |
116 |
< |
end else if datas = 'SWAPC_VARARR_S' then |
117 |
< |
begin |
118 |
< |
ReadLn(descfile, line); |
119 |
< |
i := current_list.AddArray('SWAPC_VARARR_S', 0); |
120 |
< |
current_list := TSwapList(current_list.Child(i)); |
121 |
< |
end else if datas = 'SWAPC_TMPL_PTR' then |
122 |
< |
begin |
123 |
< |
ReadLn(descfile, line); |
124 |
< |
datas := MidStr(line, Pos('dd ', line) + 4, 4); |
125 |
< |
current_list.AddElem('SWAPC_TMPL_PTR: ' + datas, 4); |
126 |
< |
end; |
106 |
> |
current_list.AddElem('SWAPC_1BYTE', 1); |
107 |
|
end; |
108 |
|
if Pos('gTemplate_', line) = 1 then |
109 |
|
begin |
149 |
|
end else if datas = 'SWAPC_VARARR_S' then |
150 |
|
begin |
151 |
|
ReadLn(descfile, line); |
152 |
< |
i := current_list.AddArray('SWAPC_VARARR_S', 0); |
152 |
> |
datas := MidStr(line, Pos(' d', line) + 4, Length(line) - (Pos(' d', line) + 3)); |
153 |
> |
if datas = 'SWAPC_8BYTE' then |
154 |
> |
i := current_list.AddArray('SWAPC_VARARR_S', 8) |
155 |
> |
else if datas = 'SWAPC_4BYTE' then |
156 |
> |
i := current_list.AddArray('SWAPC_VARARR_S', 4) |
157 |
> |
else if datas = 'SWAPC_2BYTE' then |
158 |
> |
i := current_list.AddArray('SWAPC_VARARR_S', 2) |
159 |
> |
else if datas = 'SWAPC_1BYTE' then |
160 |
> |
i := current_list.AddArray('SWAPC_VARARR_S', 1); |
161 |
|
current_list := TSwapList(current_list.Child(i)); |
162 |
|
end else if datas = 'SWAPC_VARARR_E' then |
163 |
|
begin |
210 |
|
|
211 |
|
function TSwapList.CloseArray: TSwapList; |
212 |
|
begin |
213 |
< |
Self.size := Self.size * Self.count; |
213 |
> |
if Self.name = 'SWAPC_FIXARR_S' then |
214 |
> |
Self.size := Self.size * Self.count |
215 |
> |
else |
216 |
> |
Self.size := Self.count; |
217 |
|
Result := Self.parent; |
218 |
|
end; |
219 |
|
|
229 |
|
Data: TNodeData; |
230 |
|
node: PVirtualNode; |
231 |
|
name: String; |
241 |
– |
address: Integer; |
232 |
|
|
233 |
< |
procedure AddChilds(parent: PVirtualNode; SwapList: TSwapList); |
233 |
> |
procedure AddChilds(parent: PVirtualNode; SwapList: TSwapList; address: Integer); |
234 |
|
var |
235 |
|
i: Integer; |
236 |
|
begin |
241 |
|
data.TypeName := SwapList.Child(i).name; |
242 |
|
data.Size := SwapList.Child(i).size; |
243 |
|
data.Address := address; |
244 |
< |
if parent = nil then |
255 |
< |
address := address + data.Size; |
244 |
> |
address := address + data.Size; |
245 |
|
node := AddVSTEntry(VST, parent, data); |
246 |
|
if SwapList.Child(i) is TSwapList then |
247 |
< |
AddChilds(node, TSwapList(SwapList.Child(i))); |
247 |
> |
AddChilds(node, TSwapList(SwapList.Child(i)), address); |
248 |
|
end; |
249 |
|
end; |
250 |
|
end; |
253 |
|
VST.Clear; |
254 |
|
VST.BeginUpdate; |
255 |
|
|
267 |
– |
address := 0; |
268 |
– |
|
256 |
|
name := list.Items.Strings[list.ItemIndex]; |
257 |
|
for i := 0 to High(Types) do |
258 |
|
if Types[i].name = name then |
260 |
|
|
261 |
|
if i < Length(Types) then |
262 |
|
begin |
263 |
< |
AddChilds(nil, Types[i].SwapList); |
263 |
> |
AddChilds(nil, Types[i].SwapList, 0); |
264 |
|
end; |
265 |
|
|
266 |
|
VST.EndUpdate; |