Bruno Mars Skrevet 17. april 2009 Del Skrevet 17. april 2009 Feilmelding: Prosessen får ikke tilgang til H:\Skole\IT-2\Resultatliste\resultater.exe.txt fordi den er i bruk i et annet program Default.aspx.cs using System;using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Collections; public partial class _Default : System.Web.UI.Page { private ArrayList LesDeltakere(string filsti) { ArrayList deltakerListe = new ArrayList(); FileStream fs = new FileStream(filsti, FileMode.OpenOrCreate, FileAccess.Read); StreamReader sr = new StreamReader(fs); while (sr.Peek() >= 0) { string linje = sr.ReadLine(); char[] deletegn = {';'}; string[] felter = linje.Split(deletegn); if (felter.Length != 3) { continue; } deltaker d = new deltaker (Convert.ToInt32(felter[0]), felter[1], Convert.ToInt32(felter[2])); deltakerListe.Add(d); } return deltakerListe; } private deltaker FinnBeste(ArrayList deltakere) { if (deltakere.Count == 0) { return null; } int beste = 0; for (int teller = 0; teller < deltakere.Count; teller++) { deltaker a = (deltaker)deltakere[teller]; deltaker b = (deltaker)deltakere[beste]; if (a.Poeng > b.Poeng) { beste = teller; } } return (deltaker)deltakere[beste]; } protected void Page_Load(object sender, EventArgs e) { string filsti = Server.MapPath(@"resultater.txt"); ArrayList deltakere = LesDeltakere(filsti); labResultater.Text = "Totalt var det med " + deltakere.Count + " deltakere:<br/><br/>"; foreach (deltaker d in deltakere) { labResultater.Text += d.Navn + " med " + d.Poeng + " poeng, og startnummer " + d.Startnummer + ".<br/>"; } deltaker beste = FinnBeste(deltakere); labResultater.Text += "<br/>Beste deltaker med hele " + beste.Poeng + " poeng var " + beste.Navn + " (starnummer: " + beste.Startnummer + ")."; } protected void btnSettInn_Click(object sender, EventArgs e) { if (txtNavn.Text != "" && txtPoeng.Text != "" && txtStartnummer.Text != "") { string filsti = Server.MapPath(@"resultater.txt"); FileStream fs = new FileStream(filsti, FileMode.Append, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(txtStartnummer.Text + ";" + txtNavn.Text + ";" + txtPoeng); sw.Close(); labFeilmelding.Text = ""; } else { labFeilmelding.Text = "Du må skrive i alle rutene for å med på listen."; } } } Koden funker helt til man skiver inn og bruker knappen. Feilkoden funker også. deltaker.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for deltaker /// </summary> public class deltaker { int _startnummer; string _navn; int _poeng; public deltaker(int startnr, string navn, int poeng) { _startnummer = startnr; _navn = navn; _poeng = poeng; } public int Startnummer { get { return _startnummer; } } public string Navn { get { return _navn; } } public int Poeng { get { return _poeng; } } } Er dette fordi page_load- koden i default.aspx.cs ikke lukker resultater.txt eller hva skyldes problemet? Lenke til kommentar
GeirGrusom Skrevet 18. april 2009 Del Skrevet 18. april 2009 Du må lukke alle streams når du er ferdig med den. Lenke til kommentar
Bruno Mars Skrevet 18. april 2009 Forfatter Del Skrevet 18. april 2009 har jo sw.Close(); men den kommer aldri så langt. Lenke til kommentar
GeirGrusom Skrevet 19. april 2009 Del Skrevet 19. april 2009 du lukker ikke fs i lesdeltakere. Hvis du skal bruke en streamreader er det ikke nødvendig å lage en filestream. using(var reader = new StreamReader("minfil.txt")) { while(reader.ReadLine() != null) { //... } } Bruk heller ikke ArrayList. Bruk List<T> istedet, List<string> for eksempel. Den er mer effektiv og enklere i bruk. Lenke til kommentar
Bruno Mars Skrevet 19. april 2009 Forfatter Del Skrevet 19. april 2009 La til en fs.Close(); før return deltakerListe; men de utgjorde ingen forskjell. Slkjønte forøvrig lite av det andre du sa fordi jeg kan så lite om datalagring. Lenke til kommentar
Bruno Mars Skrevet 27. april 2009 Forfatter Del Skrevet 27. april 2009 (endret) Problemet lå i Visual Web, ikke i koden. Hadde noen problemer men det løste seg ved å starte Vissual Web på nytt. Endret 27. april 2009 av mx1000 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå