Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dosya okuma ve yazma hakkında
#1
Question 
Merhaba, 

Ben delphi de bir dosyayı buffera alıp bazı değerleri değiştirip, bufferi dosya olarak kaydettikten sonra dosya boyutu çok büyük çıkıyor, nerede yanlış yapıyorum ? 
dosya 500 KB ama 185 MB ollarak çıkıyor Smile

if OpenDialog1.Execute then
   fsi:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead + fmShareDenyNone);
  fsi.Position:=0;
  SetLength(TmpBuf, fsi.Size);
  ZeroMemory(TmpBuf,fsi.Size);
  L := Length(tmpbuf);
  while fsi.Position < fsi.Size do begin
   fsi.Read(TmpBuf[0], fsi.Size);
  end;
 fsi.Free;

// bufferda değişiklik 

 fsi:=TFileStream.Create('C:\new.dat', fmCreate + fmShareDenyNone);
   fsi.Position :=0;
      try
    if tmpbuf <> nil then
    fsi.Write(tmpbuf[0], Length(tmpbuf));
  finally
    fsi.Free
 end;
 end;



Sorun Çözüldü, Teşekkürler.

Smile

Cevapla
#2
Sorun Nasıl Çözüldü?
Girdim İlim Meclisine, 
Eyledim Kıldım Talep, 

Dediler İlim Geride, 
İlla Edep İlla Edep.

Yunus Emre
WWW
Cevapla
#3
(06-02-2019, Saat: 15:11)idealist Adlı Kullanıcıdan Alıntı: Sorun Nasıl Çözüldü?

Merhaba,

Kesinlikle bu sorunuza katılıyorum(!)

Destek için kullanılan forumda sonraki katılımcılar ve bizler içinde örnek
teşkil etmesi adına "çözümlerinde mutlaka paylaşılması" gerekiyor.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#4
Sorudan yola çıkarak problemi öngörebiliriz aslında; hadi beyin fırtınası...

- Ben ilk aklıma gelen ihtimali yazayım; Temp buffer position (0)'lanmıyordu, dolayısıyla yedeğe her eklenen mevcudun sonuna ulanacağından sürekli balon gibi şişen bir temp buffer ürün FileStream'e ekleniyordu .  Wink
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
(06-02-2019, Saat: 16:27)mrmarman Adlı Kullanıcıdan Alıntı: Sorudan yola çıkarak problemi öngörebiliriz aslında; hadi beyin fırtınası...

- Ben ilk aklıma gelen ihtimali yazayım; Temp buffer position (0)'lanmıyordu, dolayısıyla yedeğe her eklenen mevcudun sonuna ulanacağından sürekli balon gibi şişen bir temp buffer ürün FileStream'e ekleniyordu .  Wink

@mrmarman, boşuna uğraşmayın. @dicle_gsm soruda değişiklik yapmış Smile
İlk halinde; 
SetLength(TmpBuf, fsi.Size * 512);
gibi bir şey vardı yanlış hatırlamıyorsam. Yani zaten mevcut boyutu 512 ile çarparak yeni bir buffer oluşturuluyordu. İş yoğunluğumdan cevap yazamamıştım. Şimdi cevaplamak istediğimde değiştiğini gördüm Smile
There's no place like 127.0.0.1
WWW
Cevapla
#6
@SimaWB eyvallah, sorunun silinmediğine dua edelim  Smile

Teşekkürler.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(06-02-2019, Saat: 16:51)SimaWB Adlı Kullanıcıdan Alıntı:
(06-02-2019, Saat: 16:27)mrmarman Adlı Kullanıcıdan Alıntı: Sorudan yola çıkarak problemi öngörebiliriz aslında; hadi beyin fırtınası...

- Ben ilk aklıma gelen ihtimali yazayım; Temp buffer position (0)'lanmıyordu, dolayısıyla yedeğe her eklenen mevcudun sonuna ulanacağından sürekli balon gibi şişen bir temp buffer ürün FileStream'e ekleniyordu .  Wink

@mrmarman, boşuna uğraşmayın. @dicle_gsm soruda değişiklik yapmış Smile
İlk halinde; 
SetLength(TmpBuf, fsi.Size * 512);
gibi bir şey vardı yanlış hatırlamıyorsam. Yani zaten mevcut boyutu 512 ile çarparak yeni bir buffer oluşturuluyordu. İş yoğunluğumdan cevap yazamamıştım. Şimdi cevaplamak istediğimde değiştiğini gördüm Smile


Ewet, Gözümden kaçmıştı hocam orası Big Grin
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Logo Go3 de döviz tablosunda Date_ alanına veri yazma cinarbil 3 54 9 saat önce
Son Yorum: hi_selamlar
  or komutu hakkinda sadikacar60 1 120 12-04-2024, Saat: 17:17
Son Yorum: sso
  Kod yazma kolaylığı varmı? tuna 12 1.077 31-03-2024, Saat: 13:58
Son Yorum: frmman
Lightbulb Delphi 7zip Password lü Dosya Sıkıştırma ve Açma + Bonus RAR5 Desteği frmman 6 318 16-03-2024, Saat: 17:55
Son Yorum: delphi.developer
  net.tcp web servis clienti yazma erkankurtaga 3 357 27-02-2024, Saat: 00:01
Son Yorum: mkysoft



Konuyu Okuyanlar: 1 Ziyaretçi