2010-11-24 9 views
1

g'day Jungs,Speicher in C#, Visual Studio 2010, Fehler

ich habe einen kleinen Fehler mit meinem Programm-Datei, wo, wenn ich versuche, ein Fehler auftritt, die sagt, dass „ein erforderliches Recht nicht zu einer Datei zu speichern ist gehalten vom Kunden. " Ich bin mir nicht sicher, wie ich das beheben kann, da ich es von meinem Laptop starte, den ich nur benutze, und wenn ich den Administratorstatus nicht richtig eingerichtet habe, weiß ich nicht, was vor sich geht.

posted ich meinen Code unten, nur um sicher

Beifall sein.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.IO.Ports; 
using System.Threading; 

    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
namespace WindowsFormsApplication1 
{ 


    public partial class Form1 : Form 
    { 
     delegate void addlistitemcallback(string value); 
     public static string inputdata; 
     public static int MaximumSpeed, maximumRiderInput, RiderInput, Time, CurrentSpeed, DistanceTravelled, MaximumMotorOutput, MotorOutput, InputSpeed; 
     public static string SaveDataString; 
     public Thread Serial; 
     public static SerialPort SerialData; 
     public static string[] portlist = SerialPort.GetPortNames(); 
     public static string[] SaveData = new string[4]; 
     public static string directory = "C:\\"; 

     public Form1() 
     { 
      Serial = new Thread(ReadData); 
      InitializeComponent(); 
      int Count = 0; 
      for (Count = 0; Count < portlist.Length; Count++) 
      { 
       ComPortCombo.Items.Add(portlist[Count]); 
      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
     private void StartDataButton_Click(object sender, EventArgs e) 
     { 
      SerialData = new SerialPort(ComPortCombo.Text, 19200, Parity.None, 8, StopBits.One); 
      SerialData.Open(); 
      SerialData.WriteLine("P"); 
      Serial.Start(); 
      StartDataButton.Enabled = false; 
      EndDataButton.Enabled = true; 
      ComPortCombo.Enabled = false; 
      CurrentSpeed = 0; 
      MaximumSpeed = 0; 
      Time = 0; 
      DistanceTravelled = 0; 
      MotorOutput = 0; 
      RiderInput = 0; 
      SaveData[0] = ""; 
      SaveData[1] = ""; 
      SaveData[2] = ""; 
      SaveData[3] = ""; 
      SaveDataButton.Enabled = false; 
      if (SerialData.IsOpen) 
      { 
       ComPortStatusLabel.Text = "OPEN"; 
       SerialData.NewLine = "/n"; 
       SerialData.WriteLine("0"); 
       SerialData.WriteLine("/n"); 
      } 
     } 
     private void EndDataButton_Click(object sender, EventArgs e) 
     { 
      SerialData.Close(); 
      SaveDataButton.Enabled = true; 
      //SerialData.WriteLine("1"); 
      //SerialData.WriteLine("0"); 
      if (!SerialData.IsOpen) 
      { 
       ComPortStatusLabel.Text = "CLOSED"; 
      } 
      int i = 0; 
      for (i = 0; i < 4; i++) 
      { 
       if (i == 0) 
       { 
        SaveDataString = "MaximumSpeed during the Ride was = " + Convert.ToString(MaximumSpeed) + "m/h"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 1) 
       { 
        SaveDataString = "Total Distance Travelled = " + Convert.ToString(DistanceTravelled) + "m"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 2) 
       { 
        SaveDataString = "Maximum Rider Input Power = " + Convert.ToString(maximumRiderInput) + "Watts"; 
        SaveData[i] = SaveDataString; 
       } 
       if (i == 3) 
       { 
        SaveDataString = "Maximum Motor Output Power = " + Convert.ToString(MaximumMotorOutput) + "Watts"; 
        SaveData[i] = SaveDataString; 
       } 
      } 

     } 

     private void SaveDataButton_Click(object sender, EventArgs e) 
     { 
      //File.WriteAllBytes(directory + "image" + imageNO + ".txt",); //saves the file to Disk  
      File.WriteAllLines("C:\\" + "BikeData.txt", SaveData); 
     } 

     public void updateSpeedtextbox(string value) 
     { 
      if (SpeedTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateSpeedtextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       SpeedTextBox.Text = value; 
      } 


     } 
     public void updatePowertextbox(string value) 
     { 
      if (RiderInputTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updatePowertextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       RiderInputTextBox.Text = value; 
      } 


     } 
     public void updateDistancetextbox(string value) 
     { 
      if (DistanceTravelledTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateDistancetextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       DistanceTravelledTextBox.Text = value; 
      } 


     } 
     public void updateMotortextbox(string value) 
     { 
      if (MotorOutputTextBox.InvokeRequired) 
      { 
       addlistitemcallback d = new addlistitemcallback(updateMotortextbox); 
       Invoke(d, new object[] { value }); 
      } 
      else 
      { 
       MotorOutputTextBox.Text = value; 
      } 


     } 
     public void ReadData() 
     { 
      int counter = 0; 

      while (SerialData.IsOpen) 
      { 
       if (counter == 0) 
       { 
        try 
        { 
         InputSpeed = Convert.ToInt16(SerialData.ReadChar()); 

         if (CurrentSpeed > MaximumSpeed) 
         { 
          MaximumSpeed = CurrentSpeed; 
         } 
         updateSpeedtextbox("Current Wheel Speed = " + Convert.ToString(InputSpeed) + "Km/h"); 
         DistanceTravelled = DistanceTravelled + (Convert.ToInt16(InputSpeed) * Time); 
         updateDistancetextbox("Total Distance Travelled = " + Convert.ToString(DistanceTravelled) + "Km"); 
        } 
        catch (Exception) { } 
       } 
       if (counter == 1) 
       { 
        try 
        { 
         RiderInput = Convert.ToInt16(SerialData.ReadChar()); 
         if (RiderInput > maximumRiderInput) 
         { 
          maximumRiderInput = RiderInput; 
         } 
         updatePowertextbox("Current Rider Input Power =" + Convert.ToString(RiderInput) + "Watts"); 
        } 
        catch (Exception) { } 
       } 
       if (counter == 2) 
       { 
        try 
        { 
         MotorOutput = Convert.ToInt16(SerialData.ReadChar()); 
         if (MotorOutput > MaximumMotorOutput) 
         { 
          MaximumMotorOutput = MotorOutput; 
         } 

         updateMotortextbox("Current Motor Output = " + Convert.ToString(MotorOutput) + "Watts"); 
        } 
        catch (Exception) { } 
       } 
       counter++; 
       if (counter == 3) 
       { 
        counter = 0; 
       } 
      } 
     }  


     private void Form1_Closed(object sender, EventArgs e) 
     { 
      if (SerialData.IsOpen) 
      { 
       SerialData.Close(); 
      } 
     } 

     private void ComPortCombo_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      StartDataButton.Enabled = true; 
     } 

     private void DistanceTravelledTextBox_TextChanged(object sender, EventArgs e) 
     { 

     } 





    } 
} 

Antwort

2

Sie haben wahrscheinlich keinen Schreibzugriff auf C: \. Versuchen Sie stattdessen, den Speicherpfad zu "C: \ Users \ {YouName} \ Documents \ BikeData.txt" zu ändern.

oder Visual Studio mit Administratorrechten mit einem rechten Mausklick auf das entsprechende Symbol starten und "Ausführen als Administrator"

+0

Dies scheint am sinnvollsten sein ... – IAbstract

0

File.WriteAllLines ("C: \" + "BikeData.txt" Savedata) wählen;

File.WriteAllLine (string, string []), durch „Security“, wenn die Benutzerrechte in einem bestimmten directrory schreiben nicht haben oder mit dem Auto, so dass Sie Schreibrechte geben, siehe diesen Link File.WriteAllLines