程序博客网 > 手机房屋装修软件
来源:互联网 发布:手机房屋装修软件 编辑:程序博客网 时间:2024/06/10 12:26
const offset = $000028A10; //$000347f8; 3.0.0 Soffset = $000347F8; //3.0zvar F: TStream; Buf: array[0..19] of Char;begin if not (edt1.Text = '') then begin try F := TFileStream.Create(edt1.Text, fmOpenRead); F.Seek(soffset, soFromBeginning); f.Read(Buf, 19); if Buf = '(?' then begin F.Seek(offset, soFromBeginning); f.Read(Buf, 20); end; finally f.Free; end; mmo1.Lines.Add('现在的版本是' + buf); end;end;
function ScanStream(mStream: TStream; mStr: string): Integer; //搜索流字符串const cBufferSize = $8000;var S, T: string; L, I: Integer;begin Result := -1; if not Assigned(mStream) then Exit; if mStr = '' then Exit; L := Length(mStr); mStream.Position := 0; SetLength(S, cBufferSize); T := ''; for I := 1 to mStream.Size div cBufferSize do begin mStream.Read(S[1], cBufferSize); Result := Pos(mStr, T + S) - 1; //保留上次搜索的尾部字符~~ T := Copy(S, cBufferSize - L, MaxInt); if Result >= 0 then begin Result := Result + Pred(I) * cBufferSize - Length(T); Exit; end; end; I := mStream.Size mod cBufferSize; SetLength(S, I); if I > 0 then begin mStream.Read(S[1], I); Result := Pos(mStr, T + S) - 1; if Result >= 0 then begin Result := Result + mStream.Size - I - Length(T); Exit; end; end;end; { ScanStream }