iyi çalışmalar arkadaşlar.bir memorystream ımız var ve download işlemi sırasında bu memorystream in içi doluyor.formumuzda birde timerımız var her 5 saniyede bir filestream la memorystream içerisindeki bytler ı dosyaya yazmak istiyorum aslında bu işlemi yaptım.
memorystream.savetostream(filestream);
bu kod çalışıyor güzel güzelde dosyaya yazıyor.ama burda şöyle bi sıkıntı var diyelimki indirilen dosya 50 ve memorystreamda 30 mb ı download edilmiş ve download edilmeye devam ediyor(örn.200 k ile download devam etsin).şimdi bu kod memorystream içersindeki bilgilerin tamamını her seferinde dosyaya kaydediyor.ben ise şunu istiyorum örn.5sn önce memorystremda 30 mb dosya var önce bu dosyayı kaydetti aradan 5 sn geçti memorystreamda 32 mb bilgi var burda önceki 30 mb ın üzerine 2 mb ı eklesin istiyorum.bu işlemi bi turlu başaramadım bu konuda yardımcı olursanız sevinirim arkadaşlar.
memorystream dan dosyaya yazma işlemi.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: memorystream dan dosyaya yazma işlemi.
mevcut kodu buraya yazın.
nerede ne yapmanız gerektiğini söyleyelim.
nerede ne yapmanız gerektiğini söyleyelim.
Re: memorystream dan dosyaya yazma işlemi.
kopyalanacakboyut:=MemStream.Position-MemStream2.Position;
MemStream.Position:=MemStream2.Position;//downloadın yapıldığı memorystream
MemStream2.CopyFrom(MemStream,kopyalanacakboyut);//yapılan downloadtlar her 5 saniye diğer bi memorystream a aktarılıyor.(burda bi sıkıntı yok)
memstream2pozisyon:=MemStream2.Position;
if filestreamolustumu=0 then begin
DestinationFile:='c:\BBC_R4_-_Through_The_Looking_Glass.part2.rar';
FileStream := TFileStream.Create(DestinationFile,fmCreate or fmOpenWrite);
filestreamolustumu:=1;
filestreampozisyon:=0;
end;
if filestreampozisyon=0 then begin
MemStream2.Position:=0;//eğer hiç dosyaya yazma işlemi yapılmamışsa memstream2 nin pozisyonu 0 a alınıyor.
end;
FileStream.Write(MemStream2,memstream2pozisyon-FileStream.Position); //burda bu kodun çalışması lazım aslında.ama çalışmıyor.dosyaya ekleme işlemi yapmıyor.
MemStream2.Position:=memstream2pozisyon;
filestreampozisyon:=FileStream.Position;
timerstart:=false;
arkadaşlar timer da çalışan kodlar bunlar.
MemStream.Position:=MemStream2.Position;//downloadın yapıldığı memorystream
MemStream2.CopyFrom(MemStream,kopyalanacakboyut);//yapılan downloadtlar her 5 saniye diğer bi memorystream a aktarılıyor.(burda bi sıkıntı yok)
memstream2pozisyon:=MemStream2.Position;
if filestreamolustumu=0 then begin
DestinationFile:='c:\BBC_R4_-_Through_The_Looking_Glass.part2.rar';
FileStream := TFileStream.Create(DestinationFile,fmCreate or fmOpenWrite);
filestreamolustumu:=1;
filestreampozisyon:=0;
end;
if filestreampozisyon=0 then begin
MemStream2.Position:=0;//eğer hiç dosyaya yazma işlemi yapılmamışsa memstream2 nin pozisyonu 0 a alınıyor.
end;
FileStream.Write(MemStream2,memstream2pozisyon-FileStream.Position); //burda bu kodun çalışması lazım aslında.ama çalışmıyor.dosyaya ekleme işlemi yapmıyor.
MemStream2.Position:=memstream2pozisyon;
filestreampozisyon:=FileStream.Position;
timerstart:=false;
arkadaşlar timer da çalışan kodlar bunlar.