Avatar billede swamboo Seniormester
22. marts 2006 - 23:07 Der er 5 kommentarer og
1 løsning

Fejl i string-tjek

Jeg har forsøgt med dette:

if (notVisit.HouseNo.Length > 2)
{
for (int i = 0; i < notVisit.HouseNo.Length; i++)
{
TextTest = MainForm.TheMid(notVisit.HouseNo, 1, i);
if (TextTest == " ")
{
if (i == 1) no = "¤¤" + notVisit.HouseNo;
if (i == 2) no = "¤" + notVisit.HouseNo;
if (i > 2) no = notVisit.HouseNo;
}
no += "(" + i + ")";
}
}
Count += 1;
arbejdstekst[Count] = notVisit.Road + " " + no + " - " + notVisit.Name + notVisit.DateInserted.ToString("MM/yyyy");
}
Array.Sort(arbejdstekst);

        public static string TheMid(string param, int startIndex, int length)
        {
            string result = param.Substring(startIndex, length);
            return result;
        }

Men det virker ikke...
Mit problem/opgave:
Jeg skal sortere nogle adresser. HouseNo er selvfølgelig husnummer. Dette kan indeholde f.eks.:
10 st.th.
3 st.tv.
14 1.th.

Jeg forsøger så at indsætte et ¤ foran tallet:
¤10 st.th.
¤¤3 st.tv.
¤14 1.th.
så jeg kan sortere dem. Men den vil ikke som jeg vil - hvad gør jeg forkert??
Avatar billede swamboo Seniormester
22. marts 2006 - 23:27 #1
Tror selv jeg har fundet fejlen - jeg har byttet om på denne linie:
TextTest = MainForm.TheMid(notVisit.HouseNo, 1, i);
Skal hedde:
TextTest = MainForm.TheMid(notVisit.HouseNo, i, 1);
tror jeg... 

Tester lige...
Avatar billede swamboo Seniormester
22. marts 2006 - 23:49 #2
Så virker det efter drømmen - ovenstående fejl+ følgende rettelser:
TextTest = MainForm.TheMid(notVisit.HouseNo,i, 1);
if (TextTest == " ")
{
if (i == 1)
{
no = "**" + notVisit.HouseNo;
break;
}
if (i == 2)
{
no = "*" + notVisit.HouseNo;
break;
}
if (i > 2) no = notVisit.HouseNo;

Men derfor kunne det måske laves smartere/bedre/lettere - så jeg lader spørgsmålet stå åbent...  Skyd endelig løs - jeg er stadig ret ny...  :o)
Avatar billede arne_v Ekspert
23. marts 2006 - 05:26 #3
det kan efter min mening laves noget smartere

prøv og studer dette eksempel for inspiration:

using System;
using System.Collections;

namespace E
{
    public class Address
    {
        private string road;
        private string no;
        public Address() : this("", "")
        {
        }
        public Address(string road, string no)
        {
            this.Road = road;
            this.no = no;
        }
        public string Road
        {
            get
            {
                return road;
            }
            set
            {
                road = value;
            }
        }
        public string No
        {
            get
            {
                return no;
            }
            set
            {
                no = value;
            }
        }
        public override string ToString()
        {
            return (road + " " + no);
        }
    }
    public class RoadNoSorter : IComparer
    {
        public int Compare(object x, object y)
        {
            Address ax = (Address)x;
            Address ay = (Address)y;
            if(ax.Road == ay.Road)
            {
                int nox = int.Parse(ax.No.Split(" ".ToCharArray())[0]);
                int noy = int.Parse(ay.No.Split(" ".ToCharArray())[0]);
                return (nox - noy);
            }
            else
            {
                return String.Compare(ax.Road, ay.Road);
            }
        }
    }
    public class MainClass
    {
        public static void Main(string[] args)
        {
            Address[] adr = new Address[4];
            adr[0] = new Address("xxx", "10 st.th.");
            adr[1] = new Address("xxx", "3 st.tv.");
            adr[2] = new Address("xxx", "14 1.th.");
            adr[3] = new Address("x", "1");
            Console.WriteLine("Usorteret:");
            foreach(Address a in adr)
            {
                Console.WriteLine(a);
            }
            Array.Sort(adr, new RoadNoSorter());
            Console.WriteLine("Sorteret:");
            foreach(Address a in adr)
            {
                Console.WriteLine(a);
            }
        }
    }
}
Avatar billede swamboo Seniormester
23. marts 2006 - 22:39 #4
Hej - jeg har uden held forsøgt at få dit eksempel til at køre - men uden held. Når jeg åbner en ny aplikation ser den sådan ud:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Sortering_testFile
{
    public partial class Form1 : Form
    {
        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
Hvad skal jeg gøre for at få dit eks. til at køre??
Avatar billede arne_v Ekspert
23. marts 2006 - 22:46 #5
min kode er en console app ikke en windows app
Avatar billede swamboo Seniormester
03. februar 2010 - 21:13 #6
lukker
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