2013-04-25 2 views
0

나는 텍스트 파일을 읽고 각 항목에 대한 텍스트를 블록으로 구성하는 작업을하고 있습니다. 프로그램을 사용하는 동안 데이터를 저장하고 호출 할 수있는 방법을 파악하는 데 도움이 필요합니다. 출력을 데이터 격자보기로 사용하려고합니다. 나는 이것에 접근하는 방법을 확신하지 못한다. 나는 각각의 새로운 블록에 대한 데이터 테이블을 만들 수 있다고 생각하지만, 어떻게 해야할지 모르겠다. 지금까지나중에 호출 할 수있는 형식으로 데이터를 저장하는 방법

내 코드 :

모든 모든 도움이 될 것이다 ..

[item1] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item1] 
[item2] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item2] 
[item3] 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
2550 coins 995 200000 7 
[/item3] 

등 :

public void findBlocks() 
    { 
     String fileName = "Drops.de"; 
     StreamReader streamReader = new StreamReader(fileName); 
     String npcName; 
     string npcID; 
     string itemID; 
     string itemAmount; 
     string itemRarity; 
     string itemName; 

     while(!streamReader.EndOfStream){ 
      string line = streamReader.ReadLine(); 
      //start of block 
      if(line.StartsWith("[")){ 
       npcName = line.TrimStart('['); 
       npcName = npcName.TrimEnd(']'); 
       while(!line.StartsWith("[/")){ 
        line = streamReader.ReadLine(); 
        String[] s = line.Split(' '); 
        npcID = (s[0]); 
        itemName = (s[1]); 
        itemID = (s[2]); 
        itemAmount = (s[3]); 
        itemRarity = (s[4]); 
        DataTable dt = new DataTable(); 
        DataGridViewRow dgv = new DataGridViewRow(); 

        DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
        row.Cells[0].Value = itemName; 
        row.Cells[1].Value = itemID; 
        row.Cells[2].Value = itemAmount; 
        row.Cells[3].Value = itemRarity; 
        dataGridView1.Rows.Add(row); 
        dataGridView1.Refresh(); 
        line = streamReader.ReadLine(); 
       //MessageBox.Show(npcName); 
       } 
      } 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     search(); 
    } 

    public void loadItemList(string file) 
    { 
     String fileName = file; 
     StreamReader streamReader = new StreamReader(fileName); 

     while (!streamReader.EndOfStream) 
     { 
      string currentLine = streamReader.ReadLine(); 
      string s; 
      String id; 
      String itemName = ""; 

      if (currentLine.Contains("item")) 
      { 
       s = currentLine.TrimStart('i', 't', 'e', 'm', ' ', '=', ' '); 
       id = s.Split('.')[0]; 
       itemName = id.Split('\t')[1]; 
       id = id.Split('\t')[0]; 

       listBox1.Items.Add(itemName + " " + id); 

      } 
      else 
      { 
       streamReader.ReadLine(); 
      } 

     } 
     streamReader.Close(); 
    } 

이것은 내가 정렬을 시도하고있는 텍스트 파일의 예입니다 대단히 감사하겠습니다 :)

답변

1

게시물의 예는 here이며 개요가 나와 있습니다. 그리드보기에 결박

  • 다음 목록에 데이터를 XML에서
  • 읽기 데이터를 저장하는

    1. 사용 XML : 아래의 주요 단계입니다.

    예제 코드는 다음과 같을 수 있습니다

    [Serializable] 
    class SomeProperty 
    { 
        public int Count1 {get;set;} //2550 
        public int Count2 {get;set;} //995 
        public int Count3 {get;set;} //200000 
        public int Count4 {get;set;} //7 
    } 
    
    List<SomeProperty> objects=new List<SomeProperty>(); 
    objects.Add(...) 
    
    //Saving 
    XmlSerializer x = new XmlSerializer(objects.GetType()); 
    using (FileStream stream = System.IO.File.Create(FilePath)) 
    { 
        XmlWriter writer = XmlWriter.Create(stream); 
        x.Serialize(writer, objects); 
    } 
    
    //Reading 
    XmlSerializer x = new XmlSerializer(typeof(List<SomeProperty>)); 
    using (FileStream fs = new FileStream(FilePath, FileMode.Open)) 
    { 
        XmlReader reader = new XmlTextReader(fs); 
        var objects= (List<SomeProperty>)x.Deserialize(reader); 
    } 
    
  • +0

    는 흠, 흥미로운 보인다. 나는 더 자세히 살펴볼 것이다. 고맙습니다. 놀라운 예제 코드 및 참조 주셔서 감사합니다 :) –

    관련 문제