2012-05-08 4 views
0

주제 클레임 같이 프로그램 타이머를 실행할 때마다 값을 저장해야합니다.타이머를 사용할 때 int 값을 저장하는 TEMP 파일을 만드는 방법

여기 코드와 프로그램이 있습니다.

using (StreamReader r = new StreamReader("counter.txt")) 
{ 
    String line; 


    while ((line = r.ReadLine()) != null) 
    { 
     Double coilVerdi = Convert.ToInt32(line); 
     Int32 breddePlate = Convert.ToInt32(PlateBredde.Text); 


     Double plateVekt = (breddePlate * 0.0016); 
     Double svar = plateVekt += coilVerdi; 
     coil.Text = svar.ToString(); 
     coil.Refresh(); 
    } 


    r.Close(); 
} 

Double t = Convert.ToDouble(coil.Text); 
using (StreamWriter writer = new StreamWriter("counter.txt")) 
{ 
    writer.Write(t); 
    writer.Close(); 

} 

이 코드가 프로그램에 추가되면이 코드가 실행됩니다. int 값을 계산하는 것입니다. 하지만 코드를 실행할 때마다 모든 값이 손실됩니다 .i 따라서 파일에 값을 저장하고 타이머가 다음 시간에 파일을 가져오고 이전 값으로 새 값을 추가하면 정확한 값을 얻습니다. .

+1

문제가 정확히 무엇입니까? – nakiya

+0

내 코드가 처음 실행되면 vale이되고, 1을 말하면 값이 file..next에 저장됩니다.이 값을 사용하고, 파일을 열고, 값을 가져오고, file.makes의 값에 1을 더하고 싶습니다. 그것 2, 다음 파일에 값 2 저장하고 그것을 추가 할 수 있습니다. 등 ..하지만 작동하지 않습니다. ( – 1244

답변

0

값을 이진 데이터로 저장할 수 있으므로 텍스트와 텍스트로 변환 할 필요가 없습니다.

enter image description here

및 코드에서 사용보다 :

using System; 
using System.Collections; 
using System.Runtime.Remoting; 
using System.Runtime.Remoting.Channels; 
using System.Runtime.Remoting.Channels.Tcp; 
using System.IO; 



class Program 
{ 
    static void Main(string[] args) 
    { 
    AddCounter(5); 
    Console.WriteLine(GetCounter()); 
    AddCounter(3); 
    Console.WriteLine(GetCounter()); 
    AddCounter(7); 
    Console.WriteLine(GetCounter()); 
    } 


static void AddCounter(int nCounter) 
{ 
    SetCounter(GetCounter() + nCounter); 
} 


static void SetCounter(int nValue) 
{ 
    using (FileStream fs = new FileStream("counter.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) 
    { 
     using (BinaryWriter bw = new BinaryWriter(fs)) 
     { 
      bw.Write(nValue); 
     } 
    } 
} 

static int GetCounter() 
{ 
    int nRes = 0; 
    using (FileStream fs = new FileStream("counter.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) 
    { 
     using (BinaryReader br = new BinaryReader(fs)) 
     { 
      if (br.PeekChar() != -1) 
      { 
       nRes = br.ReadInt32(); 
      } 
     } 
    } 
    return nRes; 
} 
} 
3

당신은 당신의 프로젝트의 설정에서 정수 값을 선언 할 수 있습니다

private void btn1_Click(object sender, RoutedEventArgs e) 
    { 
     Settings.Default.Counter = 123; 
     Settings.Default.Save(); 
    } 
0

"하지만 난 실행할 때마다 코드, 모든 값이 손실됩니다. "

당신이 당신의 원래 값을 유지하기 위해, 기존 파일에 추가해야 할 경우

using (StreamWriter writer = new StreamWriter("counter.txt", true)) { 
    writer.Write(t); 
    writer.Close(); 
    } 
+0

이것은 te 코드가 – 1244

+0

있습니다. 귀하의 코드는'StreamWriter ("counter.txt")'있습니다. 'StreamWriter ("counter.txt", true)'를 시도해야합니다. [마지막에 'true' 오버로드가 있음을주의하십시오] – jp2code

관련 문제