| 141 |
|
baselink, lastlink: Integer; |
| 142 |
|
links: Integer; |
| 143 |
|
Data: TStream; |
| 144 |
+ |
read: Integer; |
| 145 |
+ |
char: Byte; |
| 146 |
+ |
foundzeros: Byte; |
| 147 |
|
begin |
| 148 |
+ |
SetLength(Result, 0); |
| 149 |
+ |
|
| 150 |
|
ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $18, 4, @baselink); |
| 151 |
|
ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $1C, 4, @links); |
| 152 |
|
if links > 0 then |
| 153 |
|
begin |
| 154 |
|
ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + (links - 1) * 4, 4, @lastlink); |
| 150 |
– |
// SetLength(Data, lastlink + 1024); |
| 155 |
|
Data := nil; |
| 156 |
|
TAccess_OniArchive(ConManager.Connection[ConnectionID]).LoadRawOffset( |
| 157 |
|
False, baselink, lastlink + 1024, Data); |
| 158 |
< |
// TOniDataDat(connection).LoadRawOffset(False, baselink, lastlink + 1024, Data); |
| 159 |
< |
// connection.LoadRawFile(fileid,$1C,baselink,lastlink+1024,False,@data[0]); |
| 160 |
< |
raise ENotImplemented.Create('RawList.SUBT'); |
| 161 |
< |
end; |
| 162 |
< |
{ |
| 159 |
< |
k := 0; |
| 160 |
< |
for j := 0 to 1024 do |
| 161 |
< |
begin |
| 162 |
< |
if (Data[lastlink + j] = $00) or (j = 1024) then |
| 158 |
> |
|
| 159 |
> |
foundzeros := 0; |
| 160 |
> |
repeat |
| 161 |
> |
read := Data.Read(char, 1); |
| 162 |
> |
if (read > 0) and (char = 0) then |
| 163 |
|
begin |
| 164 |
< |
if j < 1024 then |
| 165 |
< |
begin |
| 166 |
< |
if k = 0 then |
| 167 |
< |
begin |
| 168 |
< |
k := 1; |
| 169 |
< |
end |
| 170 |
< |
else |
| 171 |
< |
begin |
| 172 |
< |
SetLength(Result, 1); |
| 173 |
< |
Result[0].src_offset := $18; |
| 174 |
< |
Result[0].raw_addr := baselink; |
| 175 |
< |
Result[0].raw_size := lastlink + j; |
| 176 |
< |
Break; |
| 177 |
< |
end; |
| 178 |
< |
end; |
| 164 |
> |
Inc(foundzeros); |
| 165 |
|
end; |
| 166 |
+ |
until (read = 0) or (foundzeros = 2); |
| 167 |
+ |
|
| 168 |
+ |
if foundzeros = 2 then |
| 169 |
+ |
begin |
| 170 |
+ |
SetLength(Result, 1); |
| 171 |
+ |
Result[0].SrcID := FileID; |
| 172 |
+ |
Result[0].SrcOffset := $18; |
| 173 |
+ |
Result[0].RawAddr := baselink; |
| 174 |
+ |
Result[0].RawSize := Data.Position; |
| 175 |
+ |
Result[0].LocSep := False; |
| 176 |
|
end; |
| 177 |
|
end; |
| 182 |
– |
} |
| 178 |
|
end; |
| 179 |
|
|
| 180 |
|
|