Ustalarım merhaba. Garip bir sorunla karşılaşıyorum. Parse etmek istediğim bir veri var. Bu veriyi parse etmek için alttaki foksiyonu yazdım. Lakin hızlı okumaya başladığım zaman alttaki hatayı alıyorum. Bunun sebebi nedir ? Atladığım ve yanlış yaptığım bir yermi var ?
Verdiği hata.
function ParseData(MainBuf: TMyByteArray; var XmlData: TXmlData): Integer; var Fs: TStringStream; I: Integer; TmpStr: String; TmpBuf: TMyByteArray; FirstPos: Integer; begin Result := -1; Fs := TStringStream.Create; try Fs.Clear; Fs.Write(MainBuf[0], Length(MainBuf)); Finalize(MainBuf); Fs.Position := 0; while Fs.Position <> Fs.Size do begin Application.ProcessMessages; FirstPos := Fs.Position; TmpStr := Fs.ReadString(5); if Uppercase(TmpStr) = Uppercase('bak') then begin Fs.Position := FirstPos; I := PosEx(Uppercase('bitti'), Uppercase(Fs.DataString), FirstPos + 1) + 7; XmlData.XmlList.Add(Fs.ReadString((I - 1) - FirstPos)); Inc(Result); end else begin Fs.Position := FirstPos; I := PosEx(Uppercase('gör'), Uppercase(Fs.DataString), FirstPos + 1) - 1; SetLength(TmpBuf, I - FirstPos); GetMem(@TmpBuf); Fs.Read(TmpBuf[0], Length(TmpBuf)); XmlData.DataList.Write(TmpBuf[0], Length(TmpBuf)); Inc(Result); end; end; finally Fs.Free; end; end;
Verdiği hata.