Delphi Not defteri icindeki yazıyı değitirmek istiyorum yrdm

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
fabyanenst
Üye
Mesajlar: 25
Kayıt: 12 Mar 2014 09:26

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen fabyanenst »

Niye yardım eden yok madem bukadar mesgul forum niye foruma giriyorlar :(
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen mrmarman »

Merhaba.

- Sadece bir aydır Delphi ile kod yazdığın değerlendirilince, aslında temelden başlaman gerektiğini aksi halde bu konuda gelecek planın olmadığı kanaatine varabiliriz. Bu doğaldır.

- Aşağıda örnek ve bu mesaj ekinde örnek proje / kaynak kodlarını da koydum. Kodları eksiksiz olarak okumaya, Google ve/veya Delphi kaynaklarından karşılaştırma yaparak öğrenmeye gayret et.

- Bir çok noktada tekrara girdim. Aslında bir kaç satır ile halledilebilecek bir koddur. Bilerek uzattım. Eskisinin üzerinde değil, sonuna YENI ifadesi ekleyip kaydediyor..

Başarılar.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  OpenDialog1.Filter      := 'Metin Dosyaları *.TXT|*.TXT|XML Dosyaları *.XML|*.XML|Tüm Dosyalar *.*|*.*';
  OpenDialog1.FilterIndex := 2;
  if OpenDialog1.Execute then
  begin
     Edit1.Text := OpenDialog1.FileName;
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
Var
  Metin           : TStringList;
  strGelen,
  strSonuc,
  strKaynakDosya,
  strHedefDosya,
  strDosyaUzantisi   : String;
begin
  strKaynakDosya   := Edit1.Text;
  strDosyaUzantisi := ExtractFileExt( strKaynakDosya);
  if FileExists( strKaynakDosya ) then
  begin
    strHedefDosya := ChangeFileExt( strKaynakDosya, '_YENI' + strDosyaUzantisi );
    Metin      := TStringList.Create;
    Metin.LoadFromFile( Edit1.Text );
    strGelen   := Metin.Text;
    strSonuc   := StringReplace( strGelen,  Edit2.Text, Edit3.Text, [rfReplaceAll]) ;
    Metin.Text := strSonuc;
    Metin.SaveToFile( strHedefDosya );
    MessageDlg('İşlem başarıyla tamamlandı', mtInformation, [mbOk], 0);
    Metin.Free;
  end
  else MessageDlg( '"'+strKaynakDosya +'" isimli dosya yerinde yok...!', mtError, [mbOk], 0);
end;

Dosya ekleri
Dosya_BulDegistir.rar
Dosya içinden Bul Değiştir.
(207.47 KiB) 67 kere indirildi
Resim
Resim ....Resim
fabyanenst
Üye
Mesajlar: 25
Kayıt: 12 Mar 2014 09:26

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen fabyanenst »

mrmarman yazdı:Merhaba.

- Sadece bir aydır Delphi ile kod yazdığın değerlendirilince, aslında temelden başlaman gerektiğini aksi halde bu konuda gelecek planın olmadığı kanaatine varabiliriz. Bu doğaldır.

- Aşağıda örnek ve bu mesaj ekinde örnek proje / kaynak kodlarını da koydum. Kodları eksiksiz olarak okumaya, Google ve/veya Delphi kaynaklarından karşılaştırma yaparak öğrenmeye gayret et.

- Bir çok noktada tekrara girdim. Aslında bir kaç satır ile halledilebilecek bir koddur. Bilerek uzattım. Eskisinin üzerinde değil, sonuna YENI ifadesi ekleyip kaydediyor..

Başarılar.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  OpenDialog1.Filter      := 'Metin Dosyaları *.TXT|*.TXT|XML Dosyaları *.XML|*.XML|Tüm Dosyalar *.*|*.*';
  OpenDialog1.FilterIndex := 2;
  if OpenDialog1.Execute then
  begin
     Edit1.Text := OpenDialog1.FileName;
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
Var
  Metin           : TStringList;
  strGelen,
  strSonuc,
  strKaynakDosya,
  strHedefDosya,
  strDosyaUzantisi   : String;
begin
  strKaynakDosya   := Edit1.Text;
  strDosyaUzantisi := ExtractFileExt( strKaynakDosya);
  if FileExists( strKaynakDosya ) then
  begin
    strHedefDosya := ChangeFileExt( strKaynakDosya, '_YENI' + strDosyaUzantisi );
    Metin      := TStringList.Create;
    Metin.LoadFromFile( Edit1.Text );
    strGelen   := Metin.Text;
    strSonuc   := StringReplace( strGelen,  Edit2.Text, Edit3.Text, [rfReplaceAll]) ;
    Metin.Text := strSonuc;
    Metin.SaveToFile( strHedefDosya );
    MessageDlg('İşlem başarıyla tamamlandı', mtInformation, [mbOk], 0);
    Metin.Free;
  end
  else MessageDlg( '"'+strKaynakDosya +'" isimli dosya yerinde yok...!', mtError, [mbOk], 0);
end;

OHA SEN ADAMIN DİBİSİN YA ADAMIN KARE KÖKÜSÜN SAOLASIN VALLA HOCAM OKADAR COK SEVİNDİMKİ SUAN TAM İSTEDİGİM TARZ BİRŞEY YA MÜTHİS BİRŞEY VALLAHİ
COK TEŞEKKÜR EDERİM HELAL OLSUN YA KİMSE SENİN GİBİ YARDIM ETMEDİ VALLA HELAL OLSUN BE BU ADAMI YÖNETİCİ YAPSINLAR VALLA HELAL OLSUN KRAL ADAM !!!
fabyanenst
Üye
Mesajlar: 25
Kayıt: 12 Mar 2014 09:26

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen fabyanenst »

peki eskisi üzerine kaydetmesi icin ne yapmam gerek _YENİ ifadesini sildim ancak değiştirmedi bana tam olarak o lazımdı sizide yordum değiştirilcek olan kodu söylerseniz sevinirim yada ben bi programı daha gezeyim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen mrmarman »

:lol:

Kod: Tümünü seç

    strHedefDosya := ChangeFileExt( strKaynakDosya, '_YENI' + strDosyaUzantisi );
yerine

Kod: Tümünü seç

    strHedefDosya := strKaynakDosya;
yazman yeterli. Biraz daha gezersen bulacaktın ama yazayım. :idea:
Resim
Resim ....Resim
fabyanenst
Üye
Mesajlar: 25
Kayıt: 12 Mar 2014 09:26

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen fabyanenst »

valla saolasın sen beni anladın hic bilgim yok die artık bunu arat bunu değiştir diyosun :) biraz komik bi durum ama insan bilgisi olsun istiyor böyle kafasına göre yazsın istiyor ama hic yakınımdan surdan başlla burdan basla diyen yok yani c#visual basic hepsini denedim sökemedim bi türlü bi söksem keske :) neler yapardım die düşünüyorum bazen

şey diyecegim seni kacırmadan son bir soru :) ben 3 xml dosyasını düzenliyecegim ya bu projeyi 3 ünü kopylayıroum alt alta yani 3 tane değiştirme islemi icin bütün hepsini kopyalyıp
yapıstırıyorum onlarada aynı kodu giricemde openfile dialog die bi dosyada eklemem gerek sanırsam 1 tane kullanılıyor cünkü bunu da yaptımmı tamamdır adamsın be ! :) berki sanıyorsun seni gaza getiroyurm bilgi alıyorum böyle düşünenler olacaktır hayır tam tersi sen bana yardım ettin ilk basta zaten ben aldım mesajı sen yazınca diğerleri direk bana dedi ordan basla surdan basla bazen berki yanlıs ama . :)
fabyanenst
Üye
Mesajlar: 25
Kayıt: 12 Mar 2014 09:26

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen fabyanenst »

mrmarman yazdı::lol:

Kod: Tümünü seç

    strHedefDosya := ChangeFileExt( strKaynakDosya, '_YENI' + strDosyaUzantisi );
yerine

Kod: Tümünü seç

    strHedefDosya := strKaynakDosya;
yazman yeterli. Biraz daha gezersen bulacaktın ama yazayım. :idea:
Resim
yanlız buildlerken böyle bi hata aldım sebebi nedir orda işlem yapmadım ama ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen mrmarman »

Sondan başlayalım.

(1) Resmini verdiğin hata Delphi sürüm farklılığından doğuyor. Ben Delphi 2007 ile kodlayıp derledim. O satırı sen silebilirsin. Sorun ortadan kalkar.

(2) Şu haliyle her değiştirme işlemi için sonuç çıkış sonucu içeren strSonuc değişkenini giriş bilgi yani strGelen içine geri yollayarak tekrar işleme sokarsın. Böylece sonuç içindeki gelen halini alır ve diğer her defasında yeni değişiklikten her defasında nasbini alır. Nihai olarak bunu kaydedersin.

Örnek :

Eskisi :

Kod: Tümünü seç

    strGelen   := Metin.Text;
    strSonuc   := StringReplace( strGelen,  Edit2.Text, Edit3.Text, [rfReplaceAll]) ;
    Metin.Text := strSonuc;
Yenisi :

Kod: Tümünü seç

    strGelen   := Metin.Text;
    strSonuc   := StringReplace( strGelen,  Edit2.Text, Edit3.Text, [rfReplaceAll]) ;

    strGelen   := strSonuc;
    strSonuc   := StringReplace( strGelen,  Edit4.Text, Edit5.Text, [rfReplaceAll]) ;

    strGelen   := strSonuc;
    strSonuc   := StringReplace( strGelen,  Edit6.Text, Edit7.Text, [rfReplaceAll]) ;

    Metin.Text := strSonuc;
Ne yaptığımı anladın değil mi ? Her defasında strSonuc bizim değişmiş haliydi ya, onu değişecek kaynak haline dönüştürüp yeniden işleme alıyoruz. Sonra yeniden. En sonunda nihai olarak kaydetmek üzere Metin.Text'e atıp kaydediyoruz.

Örnekte 6 adet EditBox dediğin edit'lerden Edit2'dekini Edit3'teki ile, Edit4'dekini Edit5'teki ile, Edit6'dakini Edit7'deki ile değiştirecek şekilde bir yapı kurduk.

Programcılığı ilerlettiğinde bu kısmı bir fonksiyon haline dönüştürüp tek daha az satırlık işlemler halinde yazabilirsin. Başlangıç seviyesinde mantığı kavrayabilmen için biraz sağ kulağı soldan gösterdim.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi Not defteri icindeki yazıyı değitirmek istiyorum

Mesaj gönderen mrmarman »

Sorunu yanlış anlamışım. 3 tane XML'yi aynı değiştirme parametreleri ile kullanmak istiyorsun...

- O zaman öncelikle değiştirilecek dosyaları bir listeye alıp ondan sonra yapman lazım. Ama bu defa da aynı şekilde dosya seç listeye al, dosya seç listeye al üç kere diyeceksin. Sen EDİT'lerdeki ayarlara dokunmadan dosya seç, uygula de, dosya seç, uygula de aynı kapıya çıkar.
Resim
Resim ....Resim
Cevapla