0

トピックの主張のように、プログラムタイマーが実行されるたびに値を保存する必要があります。

これがコードと私のプログラムです。

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 値を計算することです。しかし、コードを実行するたびに、すべての値が失われます。したがって、値をファイルに保存します。次にタイマーが実行されると、ファイルから値を取得し、新しい値を古い値に追加します。しばらくすると、正しいカウンター値が得られます。

4

3 に答える 3

3

プロジェクトの設定で整数値を宣言できます。

ここに画像の説明を入力

コードで使用するよりも:

private void btn1_Click(object sender, RoutedEventArgs e)
    {
        Settings.Default.Counter = 123;
        Settings.Default.Save();
    }
于 2012-05-08T11:08:33.253 に答える
0

「しかし、コードを実行するたびに、すべての値が失われます。」

元の値を保持したい場合は、既存のファイルを追加する必要があります。

  using (StreamWriter writer = new StreamWriter("counter.txt", true)) {
    writer.Write(t);
    writer.Close();
  }
于 2012-05-08T15:09:51.600 に答える
0

値をバイナリ データとして保存できるため、テキストに変換して戻す必要はありません。

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;
}
 }
于 2012-05-08T10:58:49.900 に答える