Can not write text to a file [closed] - c#

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 1 year ago.
Improve this question
So, basically, I am trying to make a save point in my text rpg. I wanted to do it by using a .txt file and jumping to each method that way. However, when I try and put in the path of the file and the string contents, it returns a CS0029 error and states that it can not convert a void to a string.
public void PickingUpScroll()
{
savePoint = "PickingUpScroll";
saveData = File.WriteAllText(savePath, savePoint);
hasFireMagic = true;
Console.WriteLine("You approach the strange scroll in your room and pick it up. A strange light eminates from the foreign symbols on the paper. You feel a warmth in your hands.\nLooking down, you notice they are glowing with a strange light, almost like fire.");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("You have accquired 'Fire Magic'");
Console.ForegroundColor = ConsoleColor.White;
if (hasWeapons == false)
{
Console.WriteLine("Do you approach the weapons?\n[1] Yes [2] No");
int scrollToSwordCheck = Convert.ToInt32(Console.ReadLine());
if (scrollToSwordCheck == 1)
{
PickingUpSword();
}
}
else
{
LeavingRoom();
}
}

The File.WriteAllText method is a void (it doesn't return any value)
https://learn.microsoft.com/en-us/dotnet/api/system.io.file.writealltext?view=net-5.0
You can get rid of the variable saveData in the line:
saveData = File.WriteAllText(savePath, savePoint);
and just use the method:
File.WriteAllText(savePath, savePoint);
(and keep in mind that you will need to instantiate and assign the variable savePath somewhere prior its usage)

Related

Problems with Unity Random Function [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 1 year ago.
Improve this question
Good evening, I was working on a graphic adventure and I want to make a random function with a 4 digit code, turns out that as I am a very novice programmer, I crashed with an inconvenient
private void CheckResults()
{
if (codeSequence = RandomCode.RanCode.ToString())
{
SoundManager.PlaySound("nice");
}
else
{
SoundManager.PlaySound("wrong");
}
"RandomCode.RanCode" is a int void, and adding "ToString" will shot an error saying
"RanCode is a method which is not valid in the given context"
This is the RandomCode void:
public void RanCode()
{
Code = Random.Range(1111, 9999);
}
If anyone out there has any ideas or solves, I will be eternally grateful
There's no such thing as an "int void". A method either returns nothing (void) or returns a value (in your case you seem to expect int).
// Returns nothing
// |
// v
public void RanCode()
{
// assigns result of `Range` to `Code` property/field
Code = Random.Range(1111, 9999);
}
If you want to also return the value, you need to rewrite your method like this:
public int RanCode()
{
Code = Random.Range(1111, 9999);
return Code;
}
You do have another issue here:
RandomCode.RanCode.ToString()
To call a method you need (), so it should be this:
RandomCode.RanCode().ToString()
Also, for equality checks you want == not = (which is assignment).
I do wonder why you're assigning a value to Code here. If we use your existing code (without my fix above), I guess that perhaps you intended something like this instead?:
private void CheckResults()
{
RandomCode.RanCode();
if (codeSequence == RandomCode.Code.ToString())
{
SoundManager.PlaySound("nice");
}
else
{
SoundManager.PlaySound("wrong");
}
}

I'm a beginner and I can't solve some errors within C# code [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
I'm new to C# and I'm currently learning it step by step and I also exercise at every chapter. I'm trying to make a small mad lipz game with what I learned so far but it's not working, something is missing and I think it has to be with the functions.
I'm getting these errors :
CS0103 The name 'color' does not exist in the current context
CS0103 The name 'noun' does not exist in the current context
CS0103 The name 'person' does not exist in the current context
My code:
using System;
namespace Tutorial
{
class Program
{
static void Main(string[] args)
{
Words();
Game();
Console.ReadLine();
}
static void Words()
{
Console.Write(" Write a color: ");
string color = Console.ReadLine();
Console.Write(" Write a noun: ");
string noun = Console.ReadLine();
Console.Write(" Write a person: ");
string person = Console.ReadLine();
}
static void Game()
{
Console.WriteLine("Roses are " + color);
Console.WriteLine( noun + " is dead ");
Console.WriteLine("I should vote " + person);
}
}
}
Thanks a lot!
color, noun and person are local variables in the Words method, and cannot be used outside of it. One way to solve this problem is to declare them as (static) members instead of local variables.
The problem is the scope of the program. The function Words() does not know of the variables, as they are defined in the function Game(). One possible solution would be to add the three variables as parameters to the function Words().
static void Game(string person, string color, string noun) {}

C# - How do I put the Function Regex working? [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
Good morning,
I am doing a page for my intership and I found this function but it isn't working, can someone help?
Thank you in advance.
string _id = this.txtIdGrupo.Text;
if (!Regex.IsMatch(_id, #"^\d+$"))
return false;
The output says this:
error CS0103: The name 'Regex' does not exist in the current context
this is not an issue with the bit of code you showed.
This is a namespace issue at the very top of your file.
The solution should be https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/namespaces/
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main ()
{
var isNumeric1 = IsNumeric("1");
Console.WriteLine(isNumeric1);
var isNumeric2 = IsNumeric("HelloWorld");
Console.WriteLine(isNumeric2);
//call IsNumeric with the value of this.txtIdGrupo.Text like this
//var isNumeric = IsNumeric(this.txtIdGrupo.Text);
}
private static bool IsNumeric(string str)
{
string id = str;
if (!Regex.IsMatch(id, #"^\d+$"))
return false;
return true;
}
}
See it in action:
https://dotnetfiddle.net/I7cAKs
notice the "using System.Text.RegularExpressions"
Using tools like Resharper and similar will definitely give you hints and will improve your day to day !
Make sure you have the System.Text.RegularExpressions
is imported

String comparison with StartsWith or Substring does not work [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
I need to find what attachment i downloaded from email message, but im not able to compare the attachment filename with string, what im doing wrong ? Script should return "in in" but it returns "out out"
FileAttachment fileAttachment = item.Attachments[0] as FileAttachment;
Console.WriteLine(fileAttachment.Name);
if (fileAttachment.FileName.StartsWith("OpenOrders")) {
Console.WriteLine("in");
}
else {
Console.WriteLine("out");
}
if (fileAttachment.FileName.Substring(0, 10) == "OpenOrders") {
Console.WriteLine("in");
} else {
Console.WriteLine("out");
}
Output:
OpenOrders some text with spaces.xlsx
out
out
You are outputting fileAttachment.Name but using fileAttachment.FileName in the StartsWith. Use the correct version and it should work.
FileAttachment fileAttachment = item.Attachments[0] as FileAttachment;
Console.WriteLine(fileAttachment.Name);
if (fileAttachment.Name.StartsWith("OpenOrders")) {
Console.WriteLine("in");
}
else {
Console.WriteLine("out");
}
if (fileAttachment.Name.Substring(0, 10) == "OpenOrders") {
Console.WriteLine("in");
} else {
Console.WriteLine("out");
}
You're outputting the Name property:
Console.WriteLine(fileAttachment.Name);
But your StartsWith and Substring calls are against theFileName property. I suspect you'll find that Name is returning something different to FileName.

Possibly mistaken empty statement warning [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 9 years ago.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Improve this question
I'm getting a “Possibly mistaken empty statement” warning when I compile this code:
class Lab6
{
static void Main(string[] args)
{
Program fileOperation = new Program();
Console.WriteLine("Enter a name for the file:");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
Console.WriteLine("The file name exists. Do you want to continue appendng ? (Y/N)");
string persmission = Console.ReadLine();
if (persmission.Equals("Y") || persmission.Equals("y"))
{
fileOperation.appendFile(fileName);
}
}
else
{
using (StreamWriter sw = new StreamWriter(fileName)) ;
fileOperation.appendFile(fileName);
}
}
public void appendFile(String fileName)
{
Console.WriteLine("Please enter new content for the file - type Done and press enter to finish editing:");
string newContent = Console.ReadLine();
while (newContent != "Done")
{
File.AppendAllText(fileName, (newContent + Environment.NewLine));
newContent = Console.ReadLine();
}
}
}
I tried to fix it, but I couldn't. What does this warning mean and where's the problem?
A “Possibly mistaken empty statement” warning means there's a statement in your code, would should be compound (i.e. contain a “body” like this: statement { ... more statement ... }), but instead of the body there a semicolon ; which terminates the statement. You should immediately know what and where's wrong, just by double-clicking on the warning a navigating to the respective line of code.
Common mistakes like this look like:
if (some condition) ; // mistakenly terminated
do_something(); // this is always executed
if (some condition); // mistakenly terminated
{
// this is always executed
... statement supposed to be the 'then' part, but in fact not ...
}
using (mySuperLock.AcquiredWriterLock()); // mistakenly terminated
{
... no, no, no, this not going to be executed under a lock ...
}
Specifically, in your code in this statement:
using (StreamWriter sw = new StreamWriter(fileName)) ;
there's a ; at the end, making the using empty (=useless). The immediately following line of code:
fileOperation.appendFile(fileName);
has nothing to do with any StreamWriter whatsoever, so there's apparently something missing in your code (or something left over — the using, probably?).

Categories