Z
zhtiger126
Unregistered / Unconfirmed
GUEST, unregistred user!
// 1 压缩情况 if iLen=1 then begin p:=PByte(Integer(pLN.Data)+iCID); GetMem(pData,iCLen); fs.ReadBuffer(pData^,iCLen); SetLength(RowSize,pLN.Height*sizeof(Word)); nPos:=0; for k:=0 to pLN.Height-1 do begin RowSize[k]:=PByte(Integer(pData)+nPos+0)^*256+ PByte(Integer(pData)+nPos+1)^; inc(nPos,2); end; for k:=0 to pLN.Height-1 do begin nBPos:=nPos; while nPos<nBPos+RowSize[k] do begin iLen:=PByte(Integer(pData)+nPos)^; inc(nPos); if iLen<128 then begin inc(iLen); for m:=0 to iLen-1 do begin p^:=PByte(Integer(pData)+nPos)^; inc(p,pLN.ChannelCount); inc(nPos); end; end else if iLen>128 then begin iLen:=255-iLen+2; for m:=0 to iLen-1 do begin p^:=PByte(Integer(pData)+nPos)^; inc(p,pLN.ChannelCount); end; inc(nPos); end; end; end; SetLength(RowSize,0); FreeMem(pData); end; // 2 非压缩情况 if iLen=0 then begin showmessage('非压缩情况!'); end;