Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SetLength sorunu
#1
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 ? 

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.

XbNRLj.png
Cevapla
#2
@seci20 koda baktığımda bir sorun göremedim yada gözümden kaçtı
fakat aldığın hatanın oluşum nedenlerini incelediğimde ortak olan bilgi
gelen verinin belirli aralıklar dışında yada null olduğu ifade ediliyor
Bu yönden bir kez daha bakmakta fayda olabilir
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#3
(13-09-2019, Saat: 10:14)adelphiforumz Adlı Kullanıcıdan Alıntı: @seci20  koda baktığımda bir sorun göremedim yada gözümden kaçtı
fakat aldığın hatanın oluşum nedenlerini incelediğimde ortak olan bilgi
gelen verinin belirli aralıklar dışında yada null olduğu ifade ediliyor
Bu yönden bir kez daha bakmakta fayda olabilir

Zaten kodda normalde yavaş okuduğu zaman hiç bir problem yok. Mesela aralarına showmessage koyayım sorunsuz okuyor. Ama hızlı okumaya başladığında hata veriyor çözemedim bir türlü.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Vcl.ActnCtrls Sorunu MuhammedYasir 7 173 12-08-2020, Saat: 11:29
Son Yorum: MuhammedYasir
  Port kapatma sorunu. seci20 0 81 10-08-2020, Saat: 15:28
Son Yorum: seci20
  Locate ve Lookup TR Karakter sorunu narkotik 3 1.519 15-06-2020, Saat: 16:49
Son Yorum: samsaros@gmail.com
  Delphi 10.3 Rest Debugger sorunu varyemez 4 572 31-05-2020, Saat: 01:36
Son Yorum: varyemez
  OrangeUI çoklu dil sorunu nguzeller 0 298 17-05-2020, Saat: 12:15
Son Yorum: nguzeller



Konuyu Okuyanlar: 1 Ziyaretçi