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

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

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

Yunus Emre
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
- Namyelus
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  read ve wriete kullanımı hakkında alisahin 3 72 5 saat önce
Son Yorum: alisahin
  TpApro ApdComPort Terazi Okuma smyrna231802 8 272 10-05-2019, Saat: 10:04
Son Yorum: smyrna231802
  Enum da CustomAttribute erişimi hakkında kodamelesi 3 129 25-04-2019, Saat: 16:31
Son Yorum: kodamelesi
  SetForegroundWindow API'si hakkında yhackup 7 185 25-04-2019, Saat: 11:34
Son Yorum: yhackup
  WebDav ile Yandex Diskten Dosya İndirme Yükleme theSinan 2 122 24-04-2019, Saat: 16:56
Son Yorum: theSinan



Konuyu Okuyanlar: 1 Ziyaretçi