[c#] filewriter

Pagina: 1
Acties:

Onderwerpen


  • Bint
  • Registratie: Juli 2002
  • Laatst online: 23:38
Voor de contest wil ik mijn output naar een output.txt schrijven, maar dat lukt maar gedeeltelijk :(

ik heb de volgende code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
        public void OpenOutputFile()
        {
            fs = new FileStream(@"output.txt", FileMode.Create, FileAccess.Write, FileShare.Read);
            sw = new StreamWriter(fs);
        }

        public void CloseOutputFile()
        {
            sw.Close();
            fs.Close();
        }

        private void WriteListResults()
        {
            this.OpenOutputFile();
            foreach(MoveData mb in blockMoveData)
            {
                WriteResults(mb.Rotation, mb.Translation);
            }
        }

        private void WriteResults(int rotations, int translation)
        {
            sw.WriteLine("NEW BLOCK");
            switch (rotations)
            {
                case 1:
                    sw.WriteLine("ROTATE CW");
                    break;
                case 2:
                    sw.WriteLine("ROTATE CW");
                    sw.WriteLine("ROTATE CW");
                    break;
                case 3:
                    sw.WriteLine("ROTATE CCW");
                    break;
            }

            if (translation > 0)
            {
                for (int i = 0; i < translation; i++ )
                {
                    sw.WriteLine("MOVE RIGHT");
                }
            }

            if (translation < 0)
            {
                for (int i = translation; i < 0; i++)
                {
                    sw.WriteLine("MOVE LEFT");
                }
            }

            sw.WriteLine("DROP");
        }


het schrijven gaat allemaal goed, tot rond blok 180-190, dan kapt hij het schrijven gewoon opeens af:
NEW BLOCK
ROTATE CW
MOVE RIGHT
MOVE RIGHT
MOVE RIGHT
MOVE RIGHT
MOVE RIGHT
DROP
NEW BLOCK
ROTATE CW
MOVE RIGHT
MOVE RIGHT
MOV
heeft iemand enig idee waar dat aan kan liggen? Ik in iedergeval niet :(

edit:
en nee, ik doe niet aan discards ;)

Memories of yesterday, will grow, but never die


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Zet eens een breakpoint op je write - code en hang er een condition aan, zodanig dat je enkel breekt als blok 180 bereikt is.
Ben je zeker dat hij stopt met schrijven ? De StreamWriter schrijft niet automatisch direct alles weg, pas als een bepaald buffer vol is, flushed hij z'n results.
Je kan eens proberen om zelf expliciet Flush aan te roepen als hij daadwerkelijk moet schrijven, of AutoFlush op true zetten.

https://fgheysels.github.io/


  • Bint
  • Registratie: Juli 2002
  • Laatst online: 23:38
whoami schreef op donderdag 23 november 2006 @ 11:36:
Zet eens een breakpoint op je write - code en hang er een condition aan, zodanig dat je enkel breekt als blok 180 bereikt is.
Ben je zeker dat hij stopt met schrijven ? De StreamWriter schrijft niet automatisch direct alles weg, pas als een bepaald buffer vol is, flushed hij z'n results.
Je kan eens proberen om zelf expliciet Flush aan te roepen als hij daadwerkelijk moet schrijven, of AutoFlush op true zetten.
aargh! waarom wist ik dat niet ;(
een sw.Flush() toevoegen aan het einde van de WriteResults() , en het werk perfect! bedankt!

Memories of yesterday, will grow, but never die


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Normaal wordt er ook geflushed als je je Writer sluit. (En dat doe je blijkbaar niet. :P)

[ Voor 24% gewijzigd door whoami op 23-11-2006 11:44 ]

https://fgheysels.github.io/


  • Bint
  • Registratie: Juli 2002
  • Laatst online: 23:38
Oh ja! nu zie ik het .. ik had de functie ervoor wel gemaakt, maar die had ik niet aangeroepen..

Toch stom dat je op zo'n klein dingetje zo lang kunt zitten...

Memories of yesterday, will grow, but never die