Permalänk
Medlem

C# hälp med fil hantering

Har fixa så att den skriver och laddar från en txt fil. Men om jag vill att det från txt filen skall komma upp i själva exe filen hur gör jag då?

vill bara att den skall skriva ut alla highscore

public static void WriteOutHighScore()
{
StreamReader readfile = new StreamReader("Highscore.txt");
foreach (string s in readfile.ReadLine)
{
Console.WriteLine(s);
readfile.Close;
}
//readfile.ReadToEnd();
//Console.WriteLine(readfile);
//readfile.Close();
}

Tacksam för svar

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av drjens
Har fixa så att den skriver och laddar från en txt fil. Men om jag vill att det från txt filen skall komma upp i själva exe filen hur gör jag då?

[...]

Tacksam för svar

Hur menar du med "Men om jag vill att det från txt filen skall komma upp i själva exe filen" ?

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Leedow
Hur menar du med "Men om jag vill att det från txt filen skall komma upp i själva exe filen" ?

menar att som det ser ut nu så sparar jag en highscore i en txt fil....
Men sedan vilja även kunna skriva ut det som finns i txt filen från det program jag utvecklar. så att användaren slipper gå till txt filen för att se över highscore

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

tex så här ser det ut nu

public static void SetScore()//Skapar en score
{
byte score = 0;
if (Story.bar == true) { score++; }
if (Story.ring == true) { score++; }
if (Story.kex == true) { score++; }
if (Story.humphred == true) { score++; }
if (Story.dirk) { score++; }
for (byte i = 0; i < 15; i++)
{
if (Story.s[i] == true) { score++; }
}
File.Delete("Character/" + Story.name + ".txt");
NewScore(Story.name, score);
}
private static void NewScore(string name, byte score)//Lägger in namnet score i fil
{
Highscore highscore = new Highscore();
StreamWriter hs = new StreamWriter("Highscore.txt", true);
hs.WriteLine(name + "\t" + score);
hs.Close();
}

Sedan är målet att skriva ut highscore men lyckas inte =(

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

s.Split('\t');

Så kan du plocka ut det du vill ha ut en array.

Permalänk
Medlem

hmm vad menar du har använt spilt och \t innan
men får något fel är inte riktigt med på varför det inte bara går att säga

public static void WriteOutHighScore()
{
StreamReader readfile = new StreamReader("Highscore.txt");
foreach (string s in readfile.ReadLine)
{
Console.WriteLine(s);
readfile.Close;
}

skall den inte här bara läsa allt från txt filen där den sedan säger foreach
string s i readfile så skall det skrivas ut sedan kan man lägga till \t om man vill i utskriften kanske

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

readline innehåller bara en sträng, så du lär bara få ut en rad av det.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Dalton Sleeper
readline innehåller bara en sträng, så du lär bara få ut en rad av det.

sant kan göra så här i stället

public static void WriteOutHighScore()
{
StreamReader readfile = new StreamReader("Highscore.txt");
foreach (string s in readfile.ReadToEnd)
{
Console.WriteLine(s);
readfile.Close;
}
}

men får följande fel på foreach loppen

Error 1 Foreach cannot operate on a 'method group'. Did you intend to invoke the 'method group'?

Error 2 Only assignment, call, increment, decrement, and new object expressions can be used as a statement

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

nae, tror du har missförstått lite, readtoend returnerar också en sträng, du kan spara dina resultat typ såhär:
*resultat1\nresultat2\n osv
*hämtar strängen med readtoend()
*sparar den i en sträng
*som du kan köra split på, split tecknet i detta fall blir '\n' dock får man kolla så det inte sparas ner något annat tecken för radbrytning... för att använda split måste du ha en array av strängar där du kan spara resultaten som kommer av split funktionen.

annars tror jag det finns nått som heter eof (inte säker i c# dock), end of file så man kan köra en while loop tex
while(!fil.eof){cout << fil.readline();}

edit, kanske heter Console.WriteLine, inte cout

Permalänk
Medlem

Hmm något åt detta hållet kanske?

public static void WriteOutScore()// Skriver ut en lista på profiler
{
Split.Small();
Console.WriteLine("Här en lista över Highscore.\n");
Split.Small();
foreach (string s in ScoreList())
{
Console.WriteLine(s);
}
Console.WriteLine();
Split.Big();
}

public static string[] ScoreList()//Returnerar en lista på namn
{
FileInfo[] ScoreList = ???????????????
string[] nameList = new string[ScoreList .Length];
int i = 0;
foreach (FileInfo fi in ScoreList )
{
StreamReader inFile = new StreamReader("Character/" + fi.Name);
nameList[i] = inFile.ReadLine();
inFile.Close();
i++;
}
return nameList;
}

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

StreamReader SR;
string S;
SR = File.OpenText("Highscore.txt");
S = SR.ReadLine();
while (S != null)
{
Console.WriteLine(S);
S = SR.ReadLine();
}
SR.Close();

Tror jag fungerar....inte provat det...

Visa signatur

schack rules, i don't...:-(

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av taimanov
StreamReader SR;
string S;
SR = File.OpenText("Highscore.txt");
S = SR.ReadLine();
while (S != null)
{
Console.WriteLine(S);
S = SR.ReadLine();
}
SR.Close();

Tror jag fungerar....inte provat det...

Tack vilka bra lösning jag har en tendens att göra det svårare än vad det är som du såg HAHAHAH har du några tips för hur man förbättrar detta , bara sitta o koda?

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

Mjae...inga speciella tips hur man kan förbättra det tyvärr...det beror väl på vad du vill göra för något. Annars är det bara sitta och koda och exprimentera.

Visa signatur

schack rules, i don't...:-(

Permalänk
Medlem

testar fråga här någon som vet hur man lägger till bilder i C# när det rör sig om console application . Som i mitt fall är programmet inte grafiskt utan i console application men jag vill att det skall komma upp en bild när man klarat spelet.

så hur gör man ????
Tacksam för svar

Visa signatur

xbox360 slim 250gb + ps3 Slim 100gb + wii

Permalänk
Medlem

Hmm...det finns inte något enkelt sätt att visa en bild i en console application vad jag vet...men jag har inte så bra kol på det tyvärr.

Visa signatur

schack rules, i don't...:-(

Permalänk
Medlem

man kan specifiera höjd/bredd på fönster, sen kan man använda något i stil med setcursor, då kan man skriva ut tecken med för/bakgrunds färg, tex kan man göra typ snake i console fönster.

Permalänk
Citat:

Ursprungligen inskrivet av taimanov
StreamReader SR;
string S;
SR = File.OpenText("Highscore.txt");
S = SR.ReadLine();
while (S != null)
{
Console.WriteLine(S);
S = SR.ReadLine();
}
SR.Close();

Tror jag fungerar....inte provat det...

Skriv snyggare:

string line; using (StreamReader reader = new StreamReader(@C:\impo.txt)) { while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); } }

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av drjens
testar fråga här någon som vet hur man lägger till bilder i C# när det rör sig om console application . Som i mitt fall är programmet inte grafiskt utan i console application men jag vill att det skall komma upp en bild när man klarat spelet.

så hur gör man ????
Tacksam för svar

Som besvarat i en annan tråd där du postat exakt samma så är inte konsollen avsedd för Grafik i form av bilder.

Då får du mecka med setcursor som nämnt men det blir ändå i ascii form och inte något du vill göra. Kan bli knepigt.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.