मैं स्कूल के लिए एक कार्यक्रम लिख रहा हूँ नहीं लिख तो मैं नहीं है एकमुश्त किसी को मेरे लिए यह तय करने के लिए चाहते हैं, लेकिन अगर किसी को बाहर बिंदु सकता है, जहां वे त्रुटि देखते हैं, जो वास्तव में मददगार होगा ! : डीपोल आवेदन: StreamWriter
कार्यक्रम को टेक्स्ट बॉक्स में संख्याओं की एक श्रृंखला में ले जाना चाहिए, उपयोगकर्ता प्रत्येक पूर्णांक प्रविष्टि के बाद एंटर दबाकर, जब वे एंटर दबाते हैं, तो संख्या फ़ाइल को लिखती है, ताकि प्रत्येक नंबर अलग हो एक अल्पविराम से। जब उपयोगकर्ता पूर्ण बटन हिट करता है, तो बटन और टेक्स्टबॉक्स अक्षम हो जाता है, फिर एक नया बटन और एक सूची बॉक्स सक्षम हो जाता है। उपयोगकर्ता सूची बॉक्स में टेक्स्ट बॉक्स में दर्ज की गई संख्याओं की आवृत्ति को देखने के लिए परिणाम बटन का चयन कर सकते हैं।
मुझे लगता है कि इसमें से अधिकांश सिवाय इसके कि यह वास्तव में फ़ाइल में नहीं लिखा है ठीक से काम कर रहा है। यह केवल मेरा पहला साल है इसलिए मैं इस पर बिल्कुल नया हूं, लेकिन मेरे पास कौन सी जानकारी है, यह सब सही दिखता है।
किसी का कहना है सकता है जहां मैं एक त्रुटि की तलाश में किया जाना चाहिए, फिर से, मैं वास्तव में इसकी सराहना होगी! यहां मेरा कोड है:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace StudentPoll1
{
public partial class Form1 : Form
{
const string FILENAME = "numbers.txt";
FileStream file = new FileStream(FILENAME,
FileMode.Create, FileAccess.ReadWrite);
public Form1()
{
InitializeComponent();
btnResult.Enabled = false;
}
private void tbInput_KeyDown(object sender, KeyEventArgs e)
{
const char DELIM = ',';
int input;
const int MIN = 1;
const int MAX = 10;
int.TryParse(tbInput.Text, out input);
if (e.KeyCode == Keys.Enter)
{
try
{
if (input < MIN || input > MAX)
{
MessageBox.Show("Please enter an integer between 1 and 10");
}
else
{
StreamWriter writer = new StreamWriter(file);
writer.WriteLine(input + DELIM + " ");
}
}
catch (IOException)
{
MessageBox.Show("Error with input");
}
finally
{
tbInput.Clear();
}
}
}
private void btnDone_Click(object sender, EventArgs e)
{
file.Close();
btnDone.Enabled = false;
btnResult.Enabled = true;
lbOutput.SelectionMode = SelectionMode.None;
}
private void btnResult_Click(object sender, EventArgs e)
{
int[] ratings = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] results = new int[10];
int entry;
const char DELIM = ',';
FileStream fs = new FileStream(FILENAME,
FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fs);
string record;
string[] fields;
record = reader.ReadLine();
while (record != null)
{
fields = record.Split(DELIM);
entry = Convert.ToInt32(fields[0]);
foreach (int x in ratings)
{
if (entry == ratings[x])
{
++results[x];
}
}
}
for (int num = 0; num < ratings.Length; ++num)
{
lbOutput.Items.Add(ratings[num] + " " + results[num]);
}
fs.Close();
reader.Close();
}
}
}
धारा –
पर लिखने के बाद 'लेखक.फ्लश()' जोड़ने का प्रयास करें, इसके अलावा 'लेखक.क्लोज़()' क्योंकि आप पहले से मौजूद फ़ाइल को रोकने के लिए I/O स्ट्रीम को बंद करने के लिए 'उपयोग' ब्लॉक का उपयोग नहीं कर रहे हैं अगली कॉल पर 'का उपयोग करें। – Franck
आप ऑटोफ्लश = सत्य भी सेट कर सकते हैं। –