memorystream dan dosyaya yazma işlemi.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

memorystream dan dosyaya yazma işlemi.

Mesaj gönderen meron06 »

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.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: memorystream dan dosyaya yazma işlemi.

Mesaj gönderen Lost Soul »

mevcut kodu buraya yazın.
nerede ne yapmanız gerektiğini söyleyelim.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Re: memorystream dan dosyaya yazma işlemi.

Mesaj gönderen meron06 »

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.
Cevapla