C# Txt dosyasının içinde veri arama

Merhaba arkadaşlar

Şöyle bir ekranım var;

Gördüğünüz üzere yukarıdaki search textbox ile hangi kitabı aramak istiyorsam karşıma getirsin istiyorum keyPress eventini kullanıyorum
Kod biraz kötü olduğu için atmak istemedim

Veritabanı olarak txt dosyasını kullanıyorum. Okuma,Yazma işlemi için
Fakat aramaya gelince biraz zorlandım. Substring olmuyor vs.

Veritabanı;

Arkadaşlar nasıl yapabilirim?

Aramayi dosyanin icinde degil, hafizadaki yapili kopyasinda yapmaniz lazim. (kitaplar array’inde mesela)

Bu ne demek bilmiyorum ama arama string’ini tum kitap isimlerinde substring olarak aramak iyi bir baslangic.

Bu resim veritabaninin varligini gosteriyor. Var olduguna inanmistik zaten :slight_smile:

Aramayi dosyanin icinde degil, hafizadaki yapili kopyasinda yapmaniz lazim. (kitaplar array’inde mesela)

üstad 10 adet kitabım var bu kitapları array içine saklayıp öyle ara mı diyorsun?
Peki txt dosyasını okusam onun içini arama gibi bir şansım olamaz değil mi?

Birde aradıkdan sonra otomatik karşıma getirsin istiyorum windowsforumda böyle bir özellik varmı bilmiyorum:(

Bir çok yoldan yapabilirsin. Birini örnekleyelim.

Öncelikle bir dosyada yada bir bir bellekte tutman çok farklı bir sonuç getirmez.

Hatta eğer pdf dosyalarının isimlendirmesini doğru yaparsan bir text dosyasına dahi ihtiyaç duymazsın.

Mesela:

Directory.EnumerateFiles Method (System.IO) | Microsoft Learn

Bir hedef klasör içerisindeki dosya isimlerini almanı sağlayacak bir api.

Bu şekilde klasörde bulunan tüm pdf dosylarının isimlerinde bir bilgi listesi oluşturabilirsin.

İkinci aşamada sanırım asıl bu kısımda soruların var.

Searching in C# array (tutorialsteacher.com)

Mesela bir listedeki B ile başlayan kitapların listesini almak istersen:

string[] names = { "Steve", "Bill", "James", "Mohan", "Salman", "Boski" };

string[]  result = Array.FindAll(names, element => element.StartsWith("B")); // return Bill, Boski

Yani string dizileri ile ilgili arama işlemlerinin tüm varyasyonlarını kullanabileceğin bir yöntem mevcut.

Kod olmasa da sorun olacak bir soru değil. Hanggi event’ı kullanmak istediğin sana kalmış. On mouse move ile üzerinden geçerken bile arama yapabilirsin istediğin event sana kalmış. OnChange gibi bir olayı olduğunu düşünüyorum. Yani textbox’ına her harf girdiğinde değiştirmiş olacağından ilave bir işlem gerekmeye bilir.

Yani textbox’a B yazdığında B ile başlayanlar listelenir, ardından B nin yanına a yazdığın an, Ba ile başlayan kitaplar listelenebilir.

farklı bir örnek görme istersen:

c# - Simple display with OnChange event on textbox - Stack Overflow

Doğru demiş, bir arama listeleme yapacaksan, kitap isimlerini bir string listesine alman üzerinde yapacağın arama işlemlerinde kolaylık sağlar, yukarıda bir klasör içindeki pdf isimlerinde bunu nasıl alacağını bulabilirsin.

Evet bir txt dosyasından alacağın verileri de bir listeye koyup arama yapabilirsin. Ama daha sonra bu kitap isimleri ile pdf in dosya yolunu ve adını eşleştirmek zorunda kalırsın ki bu yapılabilir ama esnek bir programlama tekniği değildir.

Karışına getirmesinden kastın nedir? Simgelerini mi kapak sayfalarını mı? Nasıl bir arayüz kullanıyorsun nerede gösteriyorsun konusuna göre farklılık gösterir.

Aslına bakarsan daha kolay bir yolu var.

Windows Explorer in C# (c-sharpcorner.com)

Aslında yapman gereken şey bir dosya kaşifi / file explorer oluşturmak. Burada hiç bir şey göstermeyip, arama kriteri girdiğinde sadece aradığın dosyaları listeler ve böylece sen ilave kod yazmak zorunda kalmazsın.

Dosyaları da büyük simge şeklinde göster şeklinde ayarlarsan zaten kapak sayfaları da görünecektir.

Ama kendi arayüzm kendi simgelerim dersen onları ayrıca kodlaman gerekir. Tercih senin.

Kolay gelsin.

Zaten liste gibi bir seyde sakli degiller mi? Yoksa nasil gosteriyorsun?

TXT dosyasinin icerigini bilmedigim icin bir sey soyleyemeyecegim. Ama dosyayi okumak = hafizaya almak. Duzensiz bir sekilde, string veya byte array olarak mi tutuyorsun veritabanini? Bulsan buldugun seyi sonuca nasil ceviricen?

eyvllah üstadım sag olasın :slight_smile:

liste şeklinde geliyor veriler üstad