| 68 |  | Result := 4; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 69 |  | 100..300: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 70 |  | Result := datatype - 100; | 
 
 
 
 
 
 
 
 | 71 | + | 500..614: | 
 
 
 
 
 
 
 
 | 72 | + | Result := 4; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 73 |  | 1000..9999: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 74 |  | Result := datatype - 1000; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 75 |  | 10000..65535: | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 130 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 131 |  | function LoadStructureDefinition(ConnectionID, FileID: Integer): TStructDef; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 132 |  | var | 
 
 
 
 
 
 
 
 
 | 131 | – | i:      Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 133 |  | current_type: Byte; //0: Global, 1: Undynamic, 2: Dynamic | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 134 |  | current_base, current_package, current_package_size: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 135 |  | packages: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 178 |  | 3: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 179 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 180 |  | current_type := 1; | 
 
 
 
 
 
 
 
 
 
 
 | 181 | < | current_base := HexToLong(fields[2]); | 
 
 
 
 
 
 
 
 
 | 181 | > | current_base := StrToInt(fields[2]); | 
 
 
 
 
 
 
 
 
 
 
 | 182 |  | SetLength(Result.Subs, Length(Result.Subs) + 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 183 |  | Result.Subs[High(Result.Subs)].SubName := | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 184 |  | MidStr(fields[0], 2, Length(fields[0]) - 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 187 |  | 6: | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 188 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 189 |  | current_type    := 2; | 
 
 
 
 
 
 
 
 
 
 
 | 190 | < | current_base    := HexToLong(fields[2]); | 
 
 
 
 
 
 
 
 
 | 190 | > | current_base    := StrToInt(fields[2]); | 
 
 
 
 
 
 
 
 
 
 
 | 191 |  | current_package := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 192 |  | current_package_size := StrToInt(fields[5]); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 193 |  | if fields[4][1] <> '$' then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 194 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 195 |  | case StrToInt(fields[4]) of | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 196 |  | 1: | 
 
 
 
 
 
 
 
 
 
 
 | 197 | < | packages := Data[HexToLong(fields[3])]; | 
 
 
 
 
 
 
 
 
 | 197 | > | packages := Data[StrToInt(fields[3])]; | 
 
 
 
 
 
 
 
 
 
 
 | 198 |  | 2: | 
 
 
 
 
 
 
 
 
 
 
 | 199 | < | packages := Data[HexToLong(fields[3])] + Data[HexToLong(fields[3]) + 1] * 256; | 
 
 
 
 
 
 
 
 
 | 199 | > | packages := Data[StrToInt(fields[3])] + Data[StrToInt(fields[3]) + 1] * 256; | 
 
 
 
 
 
 
 
 
 
 
 | 200 |  | 4: | 
 
 
 
 
 
 
 
 
 
 
 | 201 | < | packages := Data[HexToLong(fields[3])] + Data[HexToLong(fields[3]) + 1] * | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 202 | < | 256 + Data[HexToLong(fields[3]) + 2] * 256 * 256 + Data[HexToLong(fields[3]) + 3] * 256 * 256 * 256; | 
 
 
 
 
 
 
 
 
 | 201 | > | packages := Data[StrToInt(fields[3])] + Data[StrToInt(fields[3]) + 1] * | 
 
 
 
 
 | 202 | > | 256 + Data[StrToInt(fields[3]) + 2] * 256 * 256 + Data[StrToInt(fields[3]) + 3] * 256 * 256 * 256; | 
 
 
 
 
 
 
 
 
 
 
 | 203 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 204 |  | end | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 205 |  | else | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 206 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 | 207 | < | packages := HexToLong(fields[4]); | 
 
 
 
 
 
 
 
 
 | 207 | > | packages := StrToInt(fields[4]); | 
 
 
 
 
 
 
 
 
 
 
 | 208 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 209 |  | SetLength(Result.Subs, Length(Result.Subs) + packages); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 210 |  | for current_package := 0 to packages - 1 do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 238 |  | structentry.description := ''; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 239 |  | if current_type in [0, 1] then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 240 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 | 241 | < | structentry.offset := HexToLong(fields[1]) + current_base; | 
 
 
 
 
 
 
 
 
 | 241 | > | structentry.offset := StrToInt(fields[1]) + current_base; | 
 
 
 
 
 
 
 
 
 
 
 | 242 |  | if Length(Result.Subs) = 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 243 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 244 |  | SetLength(Result.Global, Length(Result.Global) + 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 257 |  | for current_package := 0 to packages - 1 do | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 258 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 259 |  | structentry.offset := | 
 
 
 
 
 
 
 
 
 
 
 | 260 | < | current_base + current_package * current_package_size + HexToLong(fields[1]); | 
 
 
 
 
 
 
 
 
 | 260 | > | current_base + current_package * current_package_size + StrToInt(fields[1]); | 
 
 
 
 
 
 
 
 
 
 
 | 261 |  | with Result.Subs[High(Result.Subs) - packages + current_package + 1] do | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 262 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 263 |  | SetLength(Entries, Length(Entries) + 1); |