| 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; |