Avatar billede chrolle Nybegynder
24. maj 2010 - 14:05 Der er 8 kommentarer og
1 løsning

læse/skrive fra en liste

Hej jeg er ved at lave et program som skal skrive nogle ting til en liste. Der skal så ske noget hver gang der bliver tilføjet en string til listen.

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Neurotec.Samples.WizardPages
{
    class Points
    {

        List<string> names;

        public Points()
        {
            names = new List<string>();
        }
                   
       
        public string getPoints()
        {

            int point = 0;
            point = names.Count;
            Console.Out.WriteLine(point + "antal points");
            return Convert.ToString(point);
           
        }


        public void postToPoints(string navn)
        {
           
            Console.Out.WriteLine(navn);

            if (names.Contains(navn))
            {
                Console.Out.WriteLine("hand already in the list");
            }
            else
            {
                Console.Out.WriteLine("skriver til listen");
                names.Add(navn);
                System.Media.SoundPlayer startSoundPlayer = new System.Media.SoundPlayer(@"C:\Documents and Settings\computer\Dokumenter\My Dropbox\ITPDP\Lyde til Washy\Arcade Chirp Descend 01.wav");
                System.Media.SoundPlayer finishSoundPlayer = new System.Media.SoundPlayer(@"C:\Documents and Settings\computer\Dokumenter\My Dropbox\ITPDP\Lyde til Washy\Arcade Chirp Descend 02.wav");
                finishSoundPlayer.Play();
            }
   
        }
        public void resetPoints()
        {
            names.Clear();
        }

    }
}

Det virker som om den ikke skriver til listen overhovedet. I hvert fald er if (names.Contains(navn)) aldrig true.

Nogen der kan hjælpe mig med at finde ud af hvorfor?

På forhånd tak
Avatar billede arne_v Ekspert
24. maj 2010 - 15:24 #1
Anden gang du gemmer burde den vaere der.

Hvordan tester du at den ikke matcher ??
Avatar billede chrolle Nybegynder
24. maj 2010 - 15:42 #2
Hvis jeg giver det samme navn til den flere gange i træk bliver den ved med at printe "skriver til listen" ud i konsollen som om den ikke kan forstå løkken. Desuden returnerer Convert.ToString(point) altid 0.
Avatar billede arne_v Ekspert
24. maj 2010 - 16:05 #3
Er du sikker paa at det er samme Points objekt du bruger hver gang?
Avatar billede chrolle Nybegynder
24. maj 2010 - 16:39 #4
jeg kalder den fra nedenstående metode;

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;


namespace Neurotec.Samples.Web
{
    public class WebRequestPostExample
    {
       

        public static void PostScore()
        {
            WizardPages.Points point = new WizardPages.Points();
            // Create a request using a URL that can receive a post.
            WebRequest request = WebRequest.Create("http://localhost:8080/Washy/WashyServer");
            // Set the Method property of the request to POST.
            request.Method = "POST";
            // Create POST data and convert it to a byte array.
            string postData = point.getPoints();
            point.resetPoints();
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            // Set the ContentType property of the WebRequest.
            request.ContentType = "application/x-www-form-urlencoded";
            // Set the ContentLength property of the WebRequest.
            request.ContentLength = byteArray.Length;
            // Get the request stream.
            Stream dataStream = request.GetRequestStream();
            // Write the data to the request stream.
            dataStream.Write(byteArray, 0, byteArray.Length);
            // Close the Stream object.
            dataStream.Close();
            // Get the response.
            WebResponse response = request.GetResponse();
            // Display the status.
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            // Get the stream containing content returned by the server.
            dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();
            // Display the content.
            Console.WriteLine(responseFromServer);
            // Clean up the streams.
            reader.Close();
            dataStream.Close();
            response.Close();
        }
    }
}
Avatar billede arne_v Ekspert
24. maj 2010 - 16:52 #5
WizardPages.Points point = new WizardPages.Points();
// ingen kald af postToPoints
string postData = point.getPoints();

skal returnere nul da du bruger et nyt objekt
Avatar billede chrolle Nybegynder
24. maj 2010 - 17:02 #6
hmmm det må være denne del af koden der giver problemet så;

foreach (SERecognitionDetails details in engine.Recognition.RecognitionDetails)
                {
                    Points points = new Points();
                    string name = (string)details.ModelId;
                    PointD point = details.GetShape(SERecTransformType.Auto).Center;
                    log += string.Format("  {0} - Similarity: {1}, X: {2}, Y: {3}\r\n", name, details.Score, (int)point.X, (int)point.Y);
                    SizeF textSize = g.MeasureString(name, font, Int32.MaxValue, StringFormat.GenericTypographic);
                    g.FillRectangle(new SolidBrush(Color.Black), (float)point.X, (float)point.Y - (textSize.Height / 2 + 2), textSize.Width + 20, textSize.Height + 4);
                    g.FillEllipse(new SolidBrush(Color.Black), (float)point.X - (textSize.Height / 2 + 2), (float)point.Y - (textSize.Height / 2 + 2), (float)(textSize.Height + 4), (float)(textSize.Height + 4));
                    g.FillEllipse(new SolidBrush(Color.White), (float)point.X - 5, (float)point.Y - 5, (float)10, (float)10);
                    g.DrawString(name, font, new SolidBrush(Color.White), (float)point.X + 9, (float)point.Y - (font.Height / 2));
                    points.postToPoints(name);

                }

hvordan gør vi det uden at kalde den?
Avatar billede arne_v Ekspert
24. maj 2010 - 19:03 #7
Tja.

Du opretter en hel masse objekter af typen Points og gemmer ikke nogen af dem, saa data gaar tabt.
Avatar billede chrolle Nybegynder
26. maj 2010 - 10:56 #8
det var lige det, lavede den om til en feltvariable også virkede det :) takker mange gange for hjælpen smider du et svar ?
Avatar billede arne_v Ekspert
26. maj 2010 - 15:00 #9
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester