Avatar billede Slettet bruger
07. oktober 2005 - 13:15 Der er 14 kommentarer og
1 løsning

Fra fil til array, derefter sortering og udlæsning

Hej Eksperter,
Jeg har et spørgsmål ang håndtering af arrays.

Jeg læser tekst strenge ud fra en fil, for hver linie deler den linien op og udlæser dem i nogle variabler.

De variabler skal jeg have indi et array, og derefter sortere arrayet.

Min data kan se sådan ud:
123456;abcd;123
132322;bcde;423
142311;fsgd;244

Det læser jeg ind i nogle variabler linie for linie, læser eks linie1;
Var1 = "12345";
Var2 = "abcd";
Var3 = "123";

dem skal jeg så tilføje til et array, som skal fungere som en database, altså med rækker og kolonner.

Nr    tekst  antal
12345  abcd    123
132322 bcde    423
142311 fsgd    244

Når det er gjort skal arayet sorteres efter antal.

Nr    tekst  antal
12345  abcd    123
142311 fsgd    244
132322 bcde    423


Er der nogle der kan hjælpe mig på vej til en løsning, eksempler er velkomne.
Avatar billede Slettet bruger
07. oktober 2005 - 13:16 #1
Alt hvad ang fillæsningen skal i ikke tænke på, har jeg styr på, det er kun arrayet.
Avatar billede arne_v Ekspert
07. oktober 2005 - 13:21 #2
stik ord:

StreamReader
while løkke med ReadLine
Split på ;
constructor af en custom klasse
ArrayList Add
Avatar billede arne_v Ekspert
07. oktober 2005 - 13:21 #3
ArrayList er bedre en array da du jo ikke ved hvor mange elementer der er
Avatar billede Slettet bruger
07. oktober 2005 - 13:26 #4
constructor af en custom klasse
ArrayList Add

Må du gerne difinere det andet har jeg styr på.

Og har Listen mulighed for sortering efter "antal"?
Avatar billede Slettet bruger
07. oktober 2005 - 13:29 #5
Forresten så det den kommer til at sortere på kommer til at se sådan her ud: 05-10-2005 12:34:40
Avatar billede arne_v Ekspert
07. oktober 2005 - 13:29 #6
public class Data
{
  private int nr;
  private string tekst;
  private int antal;
  public Data() : this(0,"",0)
  {
  }
  public Data(int nr, string tekst, int antal)
  {
      this.nr = nr;
      this.tekst = tekst;
      this.antal = antal;
  }
  // tilføj properties med både get og set
  // tilføj ToString
}

ArrayList al = new ArrayList();

al.Add(new Data(var1,var2,var3);
Avatar billede arne_v Ekspert
07. oktober 2005 - 13:30 #7
du kan nemt sortere din ArrayList hvis din Data klasse implementerer
IComparable
Avatar billede Slettet bruger
07. oktober 2005 - 13:31 #8
Tak, jeg kigger på det her i weekenden eller mandag, så vender jeg tilbage
Avatar billede arne_v Ekspert
07. oktober 2005 - 13:35 #9
komplet eksempel på andre data:

using System;
using System.Collections;

public class MitObjekt : IComparable
{
    private int etNummer;
    private string etNavn;
    public MitObjekt(int etNummer, string etNavn)
    {
        this.etNummer = etNummer;
        this.etNavn = etNavn;
    }
    public int EtNummer
    {
        get
        {
            return etNummer;
        }
    }
    public string EtNavn
    {
        get
        {
            return etNavn;
        }
    }
    public int CompareTo(object o)
    {
        MitObjekt mo = (MitObjekt)o;
        if(etNummer == mo.etNummer)
        {
            return etNavn.CompareTo(mo.etNavn);
        }
        else
        {
            return etNummer - mo.etNummer;
        }
    }
    public override string ToString()
    {
        return (etNummer + " " + etNavn);
    }
}
class MainClass
{
    public static void Main(string[] args)
    {
        ArrayList list = new ArrayList();
        list.Add(new MitObjekt(3, "TRE"));
        list.Add(new MitObjekt(2, "TO-A"));
        list.Add(new MitObjekt(2, "TO-C"));
        list.Add(new MitObjekt(2, "TO-B"));
        list.Add(new MitObjekt(1, "ET"));
        Console.WriteLine("Før sortering:");
        for(int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(list[i]);
        }
        list.Sort();
        Console.WriteLine("Efter sortering:");
        for(int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(list[i]);
        }
    }
}
Avatar billede Slettet bruger
09. oktober 2005 - 19:05 #10
Tak der, det virker - smid svar
Avatar billede arne_v Ekspert
09. oktober 2005 - 19:07 #11
svar
Avatar billede Slettet bruger
09. oktober 2005 - 19:34 #12
Here
Avatar billede Slettet bruger
09. oktober 2005 - 19:35 #13
Tilllægsspørgsmål, kan man tvinge focus nederst af en tekstboks? altså som om man scroller helt i bund, blot ved en textbox.command ?
Avatar billede arne_v Ekspert
09. oktober 2005 - 19:44 #14
beklager - jeg er ikke GUI ekspert
Avatar billede Slettet bruger
09. oktober 2005 - 19:53 #15
Helt ok :o)
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