Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

Selamlar herkese,
Aşağıdaki kod parçasında görüleceği üzere iki farklı RTF dosyasını bir dosya
içinde birleştirmek istiyorum.Bu kod txt uzantılı dosyalarda birleştirme işlemini
yapıyor ancak rtf uzantılı dosyalarda işe yaramıyor.
Bu işlemi nasıl gerçekleştirebilirim?
Yardımlarınız için şimdiden teşekkürler.
procedure TForm1.Button1Click(Sender: TObject);
var
stream1,stream2,stream3:TFileStream;
file1,file2,file3:string;
begin
file1:='C:\a.rtf';
file2:='C:\b.rtf';
file3:='C:\Yeni.rtf';
stream1:=TFileStream.Create(file1,fmopenread or fmShareDenyWrite);
stream2:=TFileStream.Create(file2,fmopenread or fmShareDenyWrite);
stream3:=TFileStream.Create(file3, fmCreate or fmShareExclusive);

stream3.CopyFrom(stream1,0);
stream3.CopyFrom(stream2,0);
stream1.Free;
stream2.Free;
stream3.Free;
//Not:yeni oluşan file3 dosyasında sadece file1 in içeriği gözükmektedir.
//file2 nin içeriği gözükmüyor.
//File3 dosya boyutu artmış durumuda
end;
En son mahsuni tarafından 17 Eyl 2008 10:18 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen unicorn64 »

kopyalamak yerine kaynak dosyalardan okuyup, hedef dosyaya yazsan....
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

Sayın unicorn dediğiniz yönteme bir örnek verebilir misiniz?
Aynı kodu aşağıdaki şekilde de denedim ama yine işe yaramadı.
procedure TForm1.Button1Click(Sender: TObject);
var
stream1,stream2,stream3:TFileStream;
s,file1,file2,file3:string;
begin
file1:='C:\a.rtf';
file2:='C:\b.rtf';
file3:='C:\Yeni.rtf';
stream1:=TFileStream.Create(file1,fmopenread or fmShareDenyWrite);
stream2:=TFileStream.Create(file2,fmopenread or fmShareDenyWrite);
stream3:=TFileStream.Create(file3, fmCreate or fmShareExclusive);

SetLength(s,Stream1.size);
Stream1.Read(s[1],length(s));
Stream3.Write(s[1],length(s));

SetLength(s,Stream2.size);
Stream2.Read(s[1],length(s));
Stream3.Write(s[1],length(s));

stream1.Free;
stream2.Free;
stream3.Free;
end;
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen sabanakman »

Test etmedim ama denemende fayda var.

Kod: Tümünü seç

RichEdit1.Lİnes.LoadFromFile('C:\a.rtf');
RichEdit2.Lİnes.LoadFromFile('C:\b.rtf');
RichEdit1.Lines.AddStrings(RichEdit2.Lines);
RichEdit2.Lİnes.LoadFromFile('C:\yeni.rtf');
RichEdit1.Lines.AddStrings(RichEdit2.Lines);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen unicorn64 »

@sabanakman hocam yanlışsam düzeltin ama bu kodla text içerikli dosyada problem olmaz ama resim vs varsa sıkıntı olacaktır hatta textin de formatı kaybolabilir. çünkü lines ve addstrings sadece stringlerle çalışıyor bildiğim kadarıyla...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen sabanakman »

Yazılar biçimli olarak eklenebiliyor sanırım, elimin altında şu anda çalışır delphim yok deneyemiyorum. Denemek gerek.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

unicorn64 yazdı:@sabanakman hocam yanlışsam düzeltin ama bu kodla text içerikli dosyada problem olmaz ama resim vs varsa sıkıntı olacaktır hatta textin de formatı kaybolabilir. çünkü lines ve addstrings sadece stringlerle çalışıyor bildiğim kadarıyla...
Arkadaşımız haklı,
1. resimlerde çalışmıyor
2. ilk dosyadaki son kelimenin formatı kendinden
sonra gelen tüm kelimelerin biçimini etkiliyor.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen Battosai »

http://www.swissdelphicenter.ch/torry/s ... hp?id=1075 Dosya parçalama ve bölem örneği verilmiş. Burdaki fonsiyonlarla çözebilirsin sanırım meseleyi...
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

bottasi ilgine teşekkür ederim.

Bu da derman olmadı malesef.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen veliadiguzel »

Fazla deneme şansım olmadı ama şöyle bir kodla oluyo

button1 de a.rtf yi yukluyorsunuz ve clipboarda kopyalıyosunuz button2 ilede onu yapıştıra biliyorsunuz yani clipboardı kullanarak bi yöntem uygulanabilir.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.LoadFromFile('c:\a.rtf');
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.PasteFromClipboard;
end;

Veli ADIGÜZEL
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

veliadıguzel ilginize teşekkür ederim.
Benzer bir yöntemi sabanakman hocamız önermişti.
Ancak bu tür yöntemlerde format kaybolmakta ve de
richedit nesnesi resimleri desteklememektedir.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen veliadiguzel »

mahsuni yazdı:veliadıguzel ilginize teşekkür ederim.
Benzer bir yöntemi sabanakman hocamız önermişti.
Ancak bu tür yöntemlerde format kaybolmakta ve de
richedit nesnesi resimleri desteklememektedir.
biraz dikkat ederseniz yontem biraz farklı denedim ve resim dahil alıp sonuna ekliyor

Kod: Tümünü seç

RichEdit1.Lİnes.LoadFromFile('C:\a.rtf');
RichEdit2.Lİnes.LoadFromFile('C:\b.rtf');
RichEdit1.Lines.AddStrings(RichEdit2.Lines);
RichEdit2.Lİnes.LoadFromFile('C:\yeni.rtf');
RichEdit1.Lines.AddStrings(RichEdit2.Lines);
burada string olarak ekliyorsunuz. ama benim dediğim de hepsini clipboarda kopyalıyorsunuz ve sonra diğer dosyayı yukleyip paste( ekleme) yapıyorsunuz. yinede sizbilirsiniz.
Veli ADIGÜZEL
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen mahsuni »

merhaba veli bey

Kod: Tümünü seç

RichEdit1.Lines.LoadFromFile('c:\a.rtf');
bu satırda RichEdit1 nesnesine yüklerken
bmb gibi resim formatlar yüklenemiyor.

İlginize tekrar teşekkür ederim.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen veliadiguzel »

evet haklısınız :( fazla denemeden olunca boole oluyo
Veli ADIGÜZEL
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: Birden fazla dosyayı tek bir dosya içine nasıl alabilirim?

Mesaj gönderen veliadiguzel »

Yapabileceğim son şey bedava bir bileşen buldum ama denemedim dene belki işini görür.
http://www.trichview.com/download/
http://www.trichview.com/rvfiles/richview.zip
Veli ADIGÜZEL
Cevapla