En iyi yanıtlayıcılar
Veri okuma

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;
- Düzenleyen Kenan YILMAZ 25 Mayıs 2016 Çarşamba 03:16
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; } }
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 26 Mayıs 2016 Perşembe 09:01
- Yanıt İşaretini Geri Alan Kenan YILMAZ 26 Mayıs 2016 Perşembe 10:49
- Yanıt Olarak İşaretleyen Kenan YILMAZ 26 Mayıs 2016 Perşembe 10:50
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 "Yanıt Olarak Öner" veya "Yanıt Olarak İşaretle" 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.
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 25 Mayıs 2016 Çarşamba 12:38
- Yanıt İşaretini Geri Alan CetinBasozEditor 25 Mayıs 2016 Çarşamba 12:54
-
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.
-
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İYE/ÖZEL İ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
-
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; } }
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 26 Mayıs 2016 Perşembe 09:01
- Yanıt İşaretini Geri Alan Kenan YILMAZ 26 Mayıs 2016 Perşembe 10:49
- Yanıt Olarak İşaretleyen Kenan YILMAZ 26 Mayıs 2016 Perşembe 10:50
-
-
Niye yapamadigini bilmiyorum, senin verdigin veriyle ben hepsini dogru aldim.
Sanirim "duzenledim" derken benim yazdiklarimi degistirdin.
- Düzenleyen CetinBasozEditor 25 Mayıs 2016 Çarşamba 17:46
-