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
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.300 08-11-2023, Saat: 00:06
Son Yorum: berkan
  TCMB Kur Almada Explorer Sertifika Sorunu Adem Kurt 3 580 24-10-2023, Saat: 15:14
Son Yorum: RAD Coder
  program exe icon sorunu cvheneburi 9 2.726 19-10-2023, Saat: 15:04
Son Yorum: harunyl
  TThread.Synchronize çalışmama sorunu muratmutlu 3 587 10-10-2023, Saat: 12:16
Son Yorum: Tuğrul HELVACI
  FastReport detail tablo gösterim sorunu Frrst 12 1.730 14-07-2023, Saat: 17:10
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi