none
Veri okuma RRS feed

  • Soru

  • Elimde şu şekilde  değerlerim var ve gelen değerler sabit değil değişken 

    LA  && 28843.9467135093  29746.975207579   M  2.69959855079651 0.00 0 D_YAZI PARSEL NO 0
    LA  && 28870.4895727519  29746.9881608212  M  2.69959855079651 0.00 0 D_YAZI A-B 0
    LA  && 28920.4377456985  29785.0975569567  M  4 0.00 0 D_YAZI HALİ HARİTASI 0
    LA  && 28912.8447872731  29524.5405293299  M  1.5349999666214 0.00 0 D_YAZI İMZA 0
    LA  && 28912.7497872731  29539.7925293302  M  1.5349999666214 0.00 0 D_YAZI ADI SOYADI 0
    LA  && 28954.6757872731  29552.8486647788  M  1.5349999666214 0.00 0 D_YAZI BELEDİYE/ÖZEL İDARE 0
    LA  && 28955.8527872731  29547.5616647793  M  1.5349999666214 0.00 0 D_YAZI KONTROL EDEN 0
    LA  && 28928.2267872731  29540.3887178745  M  1.5349999666214 0.00 0 D_YAZI ALİ ÇETİN 0
    LA  && 28996.7366852731  29555.4064236717  M  1.5349999666214 0.00 0 D_YAZI UYGUNDUR 0
    LA  && 28991.0176852731  29552.6824236713  M  1.5349999666214 0.00 0 D_YAZI BELEDİYE/ÖZEL İDARE 0
    LA  && 28992.194685273   29547.3954236718  M  1.5349999666214 0.00 0 D_YAZI KONTROL EDEN 0
    LA  && 28999.3890020523  29750.0215557857  L  2.19518280029297 0.00 0 D_YAZI B 0
    LA  && 29028.1213808477  29750.3209280321  L  2.19518280029297 0.00 0 D_YAZI D 0
     

    şu şekilde verileri okumayı denedim ve istediklerimi aldım fakat Txt değerleri eksik olmaya başladı burada nasıl

                string inputLine = "";
                List<YAItem> YaItem = new List<YAItem>();
                List<CenterA> CizpenA = new List<CenterA>();
                List<CenterB> CizpenB = new List<CenterB>();
                List<CenterC> CizpenC = new List<CenterC>();
                Encoding tr = Encoding.GetEncoding("iso-8859-9");
                FileStream fstrm = new FileStream("E:\\APLK_Haritası.BLK",FileMode.Open);
                StreamReader reader = new StreamReader(fstrm,tr);
                while ((inputLine = reader.ReadLine()) != null)
                {
                    string[] inputArray = inputLine.Split(new char[] { ' '},StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < inputArray.Length - 1; i++)
                    {
                        switch (inputArray[i].ToString())
                        {
                            case "LA":
                                YaItem.Add(new YAItem()
                                {
                                    Y1 = inputArray[2],
                                    X1 =inputArray[3],
                                    Just = inputArray[4],
                                    Size = inputArray[5],
                                    Angle = inputArray[6],
                                    Flags = inputArray[7],
                                    Tabaka =inputArray[8],
                                    Txt = inputArray[9]// Txt1 = inputArray[10]
                                });
                                break;
                            case "TL":
                                CizpenA.Add(new CenterA()
                                {
                                    PN = inputArray[0],
                                    Y1 = inputArray[2],
                                    X1 = inputArray[3]
                                });
                                break;
                            case "UR":
                                CizpenB.Add(new CenterB()
                                {
                                    PN = inputArray[0],
                                    Y2 = inputArray[2],
                                    X2 = inputArray[3]
                                });
                                break;
                            case "RL":
                                CizpenC.Add(new CenterC()
                                {
                                    PN = inputArray[0],
                                    Y3 = inputArray[2],
                                    X3 = inputArray[3]
                                });
                                break;
                            default:
                                break;
                        }
                    }
                }
    bir yol izlemeliyim teşekkürler;


    25 Mayıs 2016 Çarşamba 03:15

Yanıtlar

  • Ben .BLK ne demek bilmem de, kotu tasarlanmis, ne SDF, ne de delimited dataya uymuyor. Ozel olarak RegExp ile parcalayabilirsin. Senin yaptigin gibi array ile yapacaksan (donguyu duzelttigini dusunursek), o zaman 9 ve sonrasini birlestirirsin. Ornek:

    void Main()
    {
    	var filename = @"c:\temp\kenandata.txt";
    
    	var data = from line in File.ReadAllLines(filename, Encoding.Default)
    		   .Where(l => l.StartsWith("LA"))
    		   .Select(l => l.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
    			   let txt = string.Join(" ", line.Skip(9))
    			   select new YAItem
    			   {
    				   Y1 = line[2],
    				   X1 = line[3],
    				   Just = line[4],
    				   Size = line[5],
    				   Angle = line[6],
    				   Flags = line[7],
    				   Tabaka = line[8],
    				   Txt = txt
    			   };
    
    	// linqPAd
    	//data.Dump();
    }
    
    public class YAItem
    {
    	public string Y1 { get; set; }
    	public string X1 { get; set; }
    	public string Z1 { get; set; }
    	public string Txt { get; set; }
    	public string Flags { get; set; }
    	public string Font { get; set; }
    	public string Size { get; set; }
    	public string Angle { get; set; }
    	public string Just { get; set; }
    	public string Tabaka { get; set; }
    }

    25 Mayıs 2016 Çarşamba 14:48
    Yanıtlayıcı

Tüm Yanıtlar

  • Select içerisinde kullanacaksanız aşağıdaki gibi yapabilirsiniz

    SELECT *
        CASE ID=1 THEN 'ID var. Getir' ELSE 'Tum listeyi getir'    END AS [KOSUL]
    FROM <datatable> 
    ve ayrica

    ve google da case statement diye de aratabilir.


    Birinin cevabı size yardımcı oldu ise, lütfen &quot;Yanıt Olarak Öner&quot; veya &quot;Yanıt Olarak İşaretle&quot; olarak isaretlemeyi ve Oy vermeyi unutmayınız. Burada sağlanan tüm görüşler, kişiseldir ve Microsoft'un konumunu temsil etmemektedir. Tüm bilgiler hazır olarak temin edilmektedir ve herhangi bir garanti vermemektedir.

    25 Mayıs 2016 Çarşamba 12:38
    Moderatör
  • Kenan,

    Ne yazik ki sorun anlasilmiyor. YAItem, CenterA, CenterB, CenterC tanimlari yok ortada ve Txt degerleri eksik olmaya basladi ne demek?

    Dongudeki sartin da pek belli degil "LA" ile baslayan degil mesela. Icerisinde LA olsa gene uyacak. Garip bir dongu yapmissin. Neden tum elemanlari dolasiyorsun ki. Ne yapmak istedigini ornekleyebilirsen iyi olur.

    25 Mayıs 2016 Çarşamba 13:00
    Yanıtlayıcı
  • Merhaba Hocam;

    yapmak istediğim *.BLK uzantılı bir dosyadan benim istediğim değerleri çekmek Örnek : 

    LA  && 28991.0176852731  29552.6824236713  M  1.5349999666214 0.00 0 D_YAZI BELEDİYEZEL İDARE

    LA  && hariç son satıra  İDARE 'ye kadar veriyi almak ben yazdığım kodda BELEDİYE/ÖZEL kısmına kadar veriyi alıyorum,şu şekilde Txt=inputArray[9]  fakat bu kısım yetersiz oluyor çünkü almam gereken veriler daha oluyor Txt=inputArray[10] yaparsam dizi dışında hatası veriyor yani LA && ya karşılık gelen değerler 5 değer de olabilir n tane de,bir çözüm üretemedim hocam;

       public class CenterA
        {
            public string Y1 { get; set; }
            public string X1 { get; set; } 
            public string Z1 { get; set; }     
            public string PN { get; set; }
        }

    ve

      public class CenterB
        {
            public string Y2 { get; set; }
            public string X2 { get; set; }
            public string Z2 { get; set; }
            public string PN { get; set; }
        }

    ve

     public class CenterC
        {
            public string Y3 { get; set; }
            public string X3 { get; set; }
            public string Z3 { get; set; }
            public string PN { get; set; }
        }
     public class YAItem
        {
            public string Y1 { get; set; }
            public string X1 { get; set; }
            public string Z1 { get; set; }
            public string Txt { get; set; }
            public string Flags { get; set; }
            public string Font { get; set; }
            public string Size { get; set; }
            public string Angle { get; set; }
            public string Just { get; set; }
            public string Tabaka { get; set; }
        }

    hocam bu şekilde


    25 Mayıs 2016 Çarşamba 13:30
  • Ben .BLK ne demek bilmem de, kotu tasarlanmis, ne SDF, ne de delimited dataya uymuyor. Ozel olarak RegExp ile parcalayabilirsin. Senin yaptigin gibi array ile yapacaksan (donguyu duzelttigini dusunursek), o zaman 9 ve sonrasini birlestirirsin. Ornek:

    void Main()
    {
    	var filename = @"c:\temp\kenandata.txt";
    
    	var data = from line in File.ReadAllLines(filename, Encoding.Default)
    		   .Where(l => l.StartsWith("LA"))
    		   .Select(l => l.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
    			   let txt = string.Join(" ", line.Skip(9))
    			   select new YAItem
    			   {
    				   Y1 = line[2],
    				   X1 = line[3],
    				   Just = line[4],
    				   Size = line[5],
    				   Angle = line[6],
    				   Flags = line[7],
    				   Tabaka = line[8],
    				   Txt = txt
    			   };
    
    	// linqPAd
    	//data.Dump();
    }
    
    public class YAItem
    {
    	public string Y1 { get; set; }
    	public string X1 { get; set; }
    	public string Z1 { get; set; }
    	public string Txt { get; set; }
    	public string Flags { get; set; }
    	public string Font { get; set; }
    	public string Size { get; set; }
    	public string Angle { get; set; }
    	public string Just { get; set; }
    	public string Tabaka { get; set; }
    }

    25 Mayıs 2016 Çarşamba 14:48
    Yanıtlayıcı
  • Hocam Değerli cevabınız için teşekkür ederim.

    Yazdığınız gibi kodları düzenledim fakat bu seferde hiç bir veri aktarılamadı.tekrar teşekkürler.

    25 Mayıs 2016 Çarşamba 17:16
  • Niye yapamadigini bilmiyorum, senin verdigin veriyle ben hepsini dogru aldim.

    Sanirim "duzenledim" derken benim yazdiklarimi degistirdin.

    25 Mayıs 2016 Çarşamba 17:45
    Yanıtlayıcı
  • Hocam tekrar yazdığınız gibi denedim çalıştı,Teşekkürler
    26 Mayıs 2016 Perşembe 10:49