C# Dosyadan Okuma

Çünkü lines değişkeni boş.

Button1_Click fonksiyonunu komple atabilir misiniz?

C#:
 {
if (openFile.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(openFile.FileName);
while (line != null)
{
line = sr.ReadLine();
if (line != null)
{

foreach (string line in line)
{
line.Split(new string[] { " " }, StringSplitOptions.None);

string[] coords = line.Split(new string[] { " " }, StringSplitOptions.None);
listBox1.Items.Add(coords[0]);
listBox2.Items.Add(coords[1]);
listBox3.Items.Add(coords[2]);
}
}

}
}
 
C#:
 {
if (openFile.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(openFile.FileName);
while (line != null)
{
line = sr.ReadLine();
if (line != null)
{

foreach (string line in line)
{
line.Split(new string[] { " " }, StringSplitOptions.None);

string[] coords = line.Split(new string[] { " " }, StringSplitOptions.None);
listBox1.Items.Add(coords[0]);
listBox2.Items.Add(coords[1]);
listBox3.Items.Add(coords[2]);
}
}

}
}
Kodda büyük ölçüde sıkıntı var. Neden bir metin dosyası için StreamReader kullandınız ki?

[CODE lang="csharp" title="C#"]if (openFile.ShowDialog() == DialogResult.OK) {
string[] lines = File.ReadLines(openFile.FileName);
foreach(string line in lines) {
if (string.IsNullOrEmpty(line.Trim())) continue; //Satır boşsa döngünün şu anki aşamasını geçer.
string[] coords = line.Split(new string[] { " " }, StringSplitOptions.None);
listBox1.Items.Add(coords[0]);
listBox2.Items.Add(coords[1]);
listBox3.Items.Add(coords[2]);
}
}[/CODE]
 
Kodda büyük ölçüde sıkıntı var. Neden bir metin dosyası için StreamReader kullandınız ki?

[CODE lang="csharp" title="C#"]if (openFile.ShowDialog() == DialogResult.OK) {
string[] lines = File.ReadLines(openFile.FileName);
foreach(string line in lines) {
if (string.IsNullOrEmpty(line.Trim())) continue; //Satır boşsa döngünün şu anki aşamasını geçer.
string[] coords = line.Split(new string[] { " " }, StringSplitOptions.None);
listBox1.Items.Add(coords[0]);
listBox2.Items.Add(coords[1]);
listBox3.Items.Add(coords[2]);
}
}[/CODE]

Hata CS0266 'System.Collections.Generic.IEnumerable<string>' türü örtülü olarak 'string[]' türüne dönüştürülemez. Açık bir dönüştürme var (eksik atamanız mı var?)
Bu hatayı almamın sebebi nedir? using komutu altında bir şey mi tanımlamam gerekirdi?

C#:
OpenFileDialog openFile = new OpenFileDialog();
        string line = "";
        private IEnumerable<string> lines;

Bu kodu da tanımlamıştım
 
Hata CS0266 'System.Collections.Generic.IEnumerable<string>' türü örtülü olarak 'string[]' türüne dönüştürülemez. Açık bir dönüştürme var (eksik atamanız mı var?)
Bu hatayı almamın sebebi nedir? using komutu altında bir şey mi tanımlamam gerekirdi?

C#:
OpenFileDialog openFile = new OpenFileDialog();
        string line = "";
        private IEnumerable<string> lines;

Bu kodu da tanımlamıştım
ReadLines'ın sonuna .ToArray() eklemeyi deneyin.
 
ReadLines'ın sonuna .ToArray() eklemeyi deneyin.

Eklediğim kodla bir alakası olabilir mi?
Önem Derecesi Kod Açıklama Proje Dosya Çizgi Gizleme Durumu
Hata CS0119 'File. ReadLines(string)' verilen bağlamda geçerli olmayan bir yöntem öğesidir
Şu şekilde bir hata aldım yine :D
 
Eklediğim kodla bir alakası olabilir mi?
Önem Derecesi Kod Açıklama Proje Dosya Çizgi Gizleme Durumu
Hata CS0119 'File. ReadLines(string)' verilen bağlamda geçerli olmayan bir yöntem öğesidir
Şu şekilde bir hata aldım yine :D
Kütüphane olarak System.IO kütüphanesini ekleyin. :D

Eğer başka bir fonksiyonda bu kütüphaneyi kullanmayacaksanız File yerine System.IO.File yazın.
 
Kütüphane olarak System.IO kütüphanesini ekleyin. :D

Eğer başka bir fonksiyonda bu kütüphaneyi kullanmayacaksanız File yerine System.IO.File yazın.
Peki bazı satırlarda boşluklar farklı ise burada hata vermesini nasıl önleyebilirim, o satırı yok saydırma şansımız olabilir mi?
System.IndexOutOfRangeException
HResult=0x80131508
İleti=Dizin, dizi sınırlarının dışındaydı.

Bu hatayı alıyorum sürekli çünkü hangi .txt dosyasını seçsem
 
Peki bazı satırlarda boşluklar farklı ise burada hata vermesini nasıl önleyebilirim, o satırı yok saydırma şansımız olabilir mi?
İsterseniz boşluk sayısını 1'e indirin. Listeye eklerken eklediğiniz değişkene .Trim() ekleyin. Bu, boşlukları kaldıracaktır.

Bu arada önceden tanımladığınız line ve lines değişkenlerini silin.
 
System.IndexOutOfRangeException
HResult=0x80131508
İleti=Dizin, dizi sınırlarının dışındaydı. bu hatanın çözümü müdür bu?
Evet, farklı boşluk sayıları olduğu için bölme işlemi yapamıyor ve tüm olarak satırı veriyor. Bu yüzden 1 ve 2 indisleri oluşmuyor.

Dediğim gibi yaparsanız boşluk sayısı 1000 de olsa sorunsuz çalışacaktır.
 
Uyarı! Bu konu 5 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.

Technopat Haberler

Yeni konular

Geri
Yukarı