.txt dosyasına veri yazma ve okuma

  • Konuyu başlatan Ragnar Lothbrok
  • Başlangıç Tarihi
  • Mesaj 5
  • Görüntüleme 4B
R

Ragnar Lothbrok

Ziyaretçi
Merhaba arkadaşlar. Staj ödevlerimden birini yapamıyorum bu konuda sizden yardım bekliyorum. Bir notepad tasarımı yapılacak menustripler falan ayarlanacak Windows'un dahili notepadi gibi olacak yani. Richtextbox'a yazılanları .txt olarak kaydedecek. Ben buraya kadar her şeyini yaptım yazı tipi, bold, italic, farklı kaydet vs. tüm komutlar tamam buraya kadar. Şimdi dananın kuyruğunun koptuğu yere geldim. Richtextbox'a yazılanlar kaydedilecek fakat bu kaydedilen notlar açılmak istendiğinde Windows'un notepadinde değil benim tasarladığım notepadde açılacak. Bunu nasıl yapabilirim arkadaşlar?
 
Tam ne anlatmak istediğini anlamadım. Ama, hangi dili kullanıyorsan kullandığın dilin adı yanınada fileio diğerek google aratırsan detaylı bilgi elde etmiş olursun. Örnegin C++ fileio
 
Tam ne anlatmak istediğini anlamadım. Ama, hangi dili kullanıyorsan kullandığın dilin adı yanınada fileio diğerek google aratırsan detaylı bilgi elde etmiş olursun. Örnegin C++ fileio
Daha basit yazmaya çalışayım. Şimdi ben yaptığım uygulamada birşeyler yazıyorum kaydediyorum masaüstüne fakat açtığımda windowsun notepad programında açılıyor. Böyle açılınca da mesela fontunu değiştirdiysem veya yazının rengini değiştirdiysem kaydetmeden önce fontun kodları falan çıkıyor karma karışık bir hal alıyor. Benim yaptığım notepad üzerinde açılsa fontların veya yazı renginin kodları çıkmayacak yazıyı mavi olarak kayıtladıysam mavi olarak görünecek açtığımda. Daha da basit bir şekilde anlatmam gerekirse benim bu kaydettiğim dosyaya Birlikte Aç komutu gibi birşey vermem gerekiyor ki benim tasarladığım programda açılsın yazılanlar. Umarım daha basit bir şekilde anlatabilmişimdir.
 
Txt dosyanın sağ tuş klikle birlikte aç , sonra diğer programlardan gözatı seç istediğin hangisi ile açılacaksa o programı seç ve default olarak ata.

yada
Windows Dosya Türü İşlemleri
sabanakman » 21 Kas 2008 09:46

Bir ara dosya tipleri ile ilgili (Dosya Tipi, Dosya Uzantısı, File Type arayan arama kutusuna ne yazmışsa artık , müdahele yapmak istedim ve karşıma çıkan bilgiler hep dağınıktı. Kendimce ihtiyaç duyduğum ve öğrendiğim kadarı ile tekrar derleyerek kolay bir kaynak olması açısından paylaşmak gerekir diyerek ancak bu bilgileri derledim. Aslında bilgi olarak pek fazla bir külfeti yok ama birde kütüphane olarak kodlayıp paylaşmak istedim.

Aslında bütün iş windows registry kayıtlarında dönüyor ve tüm işlemler HKEY_CLASSES_ROOT kök dizini altından gerçekleşiyor. Ayrıca registry için varsayılan anahtar (dizin) değeri olarak belirttiğim değerler isimsiz değelerdir ve @ karakteri kullandım. Örnek olarak akm uzantısı kaydı yapalım.

İlk iş uzantının solunda nokta '.' olacak şekilde bir dizin oluşturmak ve varsayılan değer olarak bir isim yazmak olacak.
HKEY_CLASSES_ROOT\.akm dizini oluşturulur ve varsayılan değer olarak bir isim yazılır. Bu isim asıl bilgilerin yazılacağı registry dizin ismidir.
.........|->@='akmDosyasi' -> yazalım. Artık .akm uzantısına ait bilgiler akmDosyasi registry dizini içerisindedir.

HKEY_CLASSES_ROOT\akmDosyasi .akm uzantısına ilişkin bilgiler bu dizindedir
.........|->@='akm Dosya Arşiv Türü' -> yazarsak, windows bize o dosyaya ait tür açıklasında bu bilgiyi gösterir.

HKEY_CLASSES_ROOT\akmDosyasi\DefaultIcon anahtar dizininde yazan değer ise o dosya türüne ait simgeyi belirler
.........|->@='c:\deneme\program.exe,0' -> .exe içinde bulunan simgelerden ilkini kullan
veya
.........|->@='c:\deneme\simge.ico' -> değeri ile o türden dosya artık yazdığımız simgeyi gösterir

Gelelim dosya türüne ait programı ilişkilendirmeye. Bu değerler ise HKEY_CLASSES_ROOT\akmDosyasi\shell altında bulunur ve yine burada bulunan open anahtarındaki varsayılan değer dolu ise o dosya sağ tıklanınca Aç seçeneği yerinde bu değer yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\open
.........|->@='Akm Dosyası Açılıyor' Bu değer boşsa menüde Aç görünür (dile göre değişir). Bu değer dolu ise Aç yerine bu değer yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\open\command
.........|->@='"c:\deneme\program.exe" "%1"'
Not..:Burada bulunan %1 bilgisi ilgili dosyayı 1. parametre olarak programa gönderir. Program içinden bu bilgi ParamStr(1) fonksiyonu ile elde edilir. Bknz..:paramCount, ParamStr.

Eğer bu dosya türüne sağ tuş menüsü olarak ek seçenekler eklenmek isterse shell dizini altına kendi tanımlarımızı yapıp ek yapabiliriz. Mesela menüden Yeni Seçenek olarak görünen bir Deneme işlevi ekleyelim.
HKEY_CLASSES_ROOT\akmDosyasi\shell\Deneme
.........|->@='Akm &Deneme Menüsü' -> O türden dosyaya sağ tıklayınca bu menü seçeneği eklenir. Eğer boşsa bu menü seçeneğinde Deneme yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\Deneme\command
.........|->@='"c:\deneme\program.exe" "%1" "/yazdir"' ->O dosyaya ait sağ tuş menüsünden seçim yapılınca çalışacak işlev tanımı. 1. parametre dosya adı, 2. parametre ise /yazdir'dır. Tabi parametreye göre işlem yapmak programa kalmış. Bknz..:paramCount, ParamStr.

Bu konuda bir kaç kod karalamadan da paylaşım yapmak istemedim, Aşağıda verdiğim unit'le dosya türü kaydı yapılabilir, tür silinebilir, simge değiştirilebilir, o dosya türüne ait popup menü seçeneği eklenip, menü seçeneği silinebilir. Tabi burada sadece ekleme dışındaki tüm işlemler dosya türü kayıtlı ise çalışmaktadır. Ayrıca sadece registry bilgisi ile işlem yapıldığında dosya türüne ait görüntü değişimi oturum kapanmadan veya bir şekilde windows ekran görüntüsü tazelenmeden sağlanamamaktadır. Bununla ilgili simge görüntü tazeleme kodu da RefreshDesktop prosedüründe mevcut ve gerekli olduğunda çalışmaktadır. DosyaTurleri.pas dosyası..:
 
Txt dosyanın sağ tuş klikle birlikte aç , sonra diğer programlardan gözatı seç istediğin hangisi ile açılacaksa o programı seç ve default olarak ata.

yada
Windows Dosya Türü İşlemleri
sabanakman » 21 Kas 2008 09:46

Bir ara dosya tipleri ile ilgili (Dosya Tipi, Dosya Uzantısı, File Type arayan arama kutusuna ne yazmışsa artık , müdahele yapmak istedim ve karşıma çıkan bilgiler hep dağınıktı. Kendimce ihtiyaç duyduğum ve öğrendiğim kadarı ile tekrar derleyerek kolay bir kaynak olması açısından paylaşmak gerekir diyerek ancak bu bilgileri derledim. Aslında bilgi olarak pek fazla bir külfeti yok ama birde kütüphane olarak kodlayıp paylaşmak istedim.

Aslında bütün iş windows registry kayıtlarında dönüyor ve tüm işlemler HKEY_CLASSES_ROOT kök dizini altından gerçekleşiyor. Ayrıca registry için varsayılan anahtar (dizin) değeri olarak belirttiğim değerler isimsiz değelerdir ve @ karakteri kullandım. Örnek olarak akm uzantısı kaydı yapalım.

İlk iş uzantının solunda nokta '.' olacak şekilde bir dizin oluşturmak ve varsayılan değer olarak bir isim yazmak olacak.
HKEY_CLASSES_ROOT\.akm dizini oluşturulur ve varsayılan değer olarak bir isim yazılır. Bu isim asıl bilgilerin yazılacağı registry dizin ismidir.
.........|->@='akmDosyasi' -> yazalım. Artık .akm uzantısına ait bilgiler akmDosyasi registry dizini içerisindedir.

HKEY_CLASSES_ROOT\akmDosyasi .akm uzantısına ilişkin bilgiler bu dizindedir
.........|->@='akm Dosya Arşiv Türü' -> yazarsak, windows bize o dosyaya ait tür açıklasında bu bilgiyi gösterir.

HKEY_CLASSES_ROOT\akmDosyasi\DefaultIcon anahtar dizininde yazan değer ise o dosya türüne ait simgeyi belirler
.........|->@='c:\deneme\program.exe,0' -> .exe içinde bulunan simgelerden ilkini kullan
veya
.........|->@='c:\deneme\simge.ico' -> değeri ile o türden dosya artık yazdığımız simgeyi gösterir

Gelelim dosya türüne ait programı ilişkilendirmeye. Bu değerler ise HKEY_CLASSES_ROOT\akmDosyasi\shell altında bulunur ve yine burada bulunan open anahtarındaki varsayılan değer dolu ise o dosya sağ tıklanınca Aç seçeneği yerinde bu değer yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\open
.........|->@='Akm Dosyası Açılıyor' Bu değer boşsa menüde Aç görünür (dile göre değişir). Bu değer dolu ise Aç yerine bu değer yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\open\command
.........|->@='"c:\deneme\program.exe" "%1"'
Not..:Burada bulunan %1 bilgisi ilgili dosyayı 1. parametre olarak programa gönderir. Program içinden bu bilgi ParamStr(1) fonksiyonu ile elde edilir. Bknz..:paramCount, ParamStr.

Eğer bu dosya türüne sağ tuş menüsü olarak ek seçenekler eklenmek isterse shell dizini altına kendi tanımlarımızı yapıp ek yapabiliriz. Mesela menüden Yeni Seçenek olarak görünen bir Deneme işlevi ekleyelim.
HKEY_CLASSES_ROOT\akmDosyasi\shell\Deneme
.........|->@='Akm &Deneme Menüsü' -> O türden dosyaya sağ tıklayınca bu menü seçeneği eklenir. Eğer boşsa bu menü seçeneğinde Deneme yazar.
HKEY_CLASSES_ROOT\akmDosyasi\shell\Deneme\command
.........|->@='"c:\deneme\program.exe" "%1" "/yazdir"' ->O dosyaya ait sağ tuş menüsünden seçim yapılınca çalışacak işlev tanımı. 1. parametre dosya adı, 2. parametre ise /yazdir'dır. Tabi parametreye göre işlem yapmak programa kalmış. Bknz..:paramCount, ParamStr.

Bu konuda bir kaç kod karalamadan da paylaşım yapmak istemedim, Aşağıda verdiğim unit'le dosya türü kaydı yapılabilir, tür silinebilir, simge değiştirilebilir, o dosya türüne ait popup menü seçeneği eklenip, menü seçeneği silinebilir. Tabi burada sadece ekleme dışındaki tüm işlemler dosya türü kayıtlı ise çalışmaktadır. Ayrıca sadece registry bilgisi ile işlem yapıldığında dosya türüne ait görüntü değişimi oturum kapanmadan veya bir şekilde windows ekran görüntüsü tazelenmeden sağlanamamaktadır. Bununla ilgili simge görüntü tazeleme kodu da RefreshDesktop prosedüründe mevcut ve gerekli olduğunda çalışmaktadır. DosyaTurleri.pas dosyası..:
İlk önerinizi denedim işe yaramadı açmıyor o şekilde. Diğer yazılanlardan birşey anlamadım. Hala çözüme kavuşturamadım yardım lütfen :confused:
 
kendi dosya uzantini kullanman daha mantiklo olabilir mesela ".ctext" sonra bunu acmaya calisinca varsayilan program soracak gozat diyip programini sececeksin. Ìlle de text olsun diyosan birlikte ac diyip altta varsayilan program olarak kullan secenegini sec ve kendi programini sec.Umarim dogru anlamisimdir
 
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı