Toon posts:

[C#] Struct sorteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal

Ben bezig om een mp3 playlist te maken met sorteer functie. Nu wil ik die playlist gaan sorteren. Alleen ik kan geen methode vinden om een struct te sorteren.
Weet iemand een manier hoe ik dit doe?
Ik heb al op MSDN gekeken en de tweakers search gebruikt.

De struct ziet er als volgt uit. Deze heb ik uit een andere mp3 player gehaalt die geen sorteer mogelijkheden had.
code:
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
struct MP3 
    {
        public string  filePath;
        public string  fileFileName;
        public string  fileComplete;
        public bool    hasID3Tag;
        public string  id3Title;
        public string  id3Artist;
        public string  id3Album;
        public string  id3Year;
        public string  id3Comment;
        public byte    id3TrackNumber;
        public byte    id3Genre;
    
        // Required struct constructor
        public MP3(string path, string name) 
        {
            this.filePath     = path;
            this.fileFileName = name;
            this.fileComplete = path + "\\" + name;
            this.hasID3Tag    = false;
            this.id3Title   = null;
            this.id3Artist    = null;
            this.id3Album   = null;
            this.id3Year    = null;
            this.id3Comment   = null;
            this.id3TrackNumber = 0;
            this.id3Genre   = 0;
        }
    }


Alvast bedankt

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Kijk eens naar de IComparable interface oid.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Geen struct gebruiken maar een class. Een struct is alleen bedoeld voor kleine value types, niet zoiets als jij gebruikt.

Wanneer je een struct gebruikt kun je bv geen instances wisselen in een arraylist, want het zijn value types. Dus weg ermee.

Daarna kun je een van de vele sort algo's implementeren door ze te copieren van het net, bv quicksort, bv hiervandaan: http://www.publicjoe.f9.co.uk/csharp/sort00.html

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

EfBe schreef op 02 november 2004 @ 14:56:
Daarna kun je een van de vele sort algo's implementeren door ze te copieren van het net, bv quicksort, bv hiervandaan: http://www.publicjoe.f9.co.uk/csharp/sort00.html
Er zal toch ook wel een sort functie bestaan in een collection interface oid?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
.oisyn schreef op 02 november 2004 @ 15:34:
[...]


Er zal toch ook wel een sort functie bestaan in een collection interface oid?
De ArrayList heeft idd een Sort method, maar dan verwacht die arraylist wel dat de objecten in die arraylist de IComparable interface implementeren.
Je kan echter ook de Sort aanspreken door zelf een IComparer mee te geven aan die Sort method.

Als je echt lui bent, kan je misschien ook de SortedList gaan misbruiken voor dit doeleinde.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dus jullie raden mij aan om een array te gebruiken.
Dan zal dat wel een multidimensionale array zijn. Dan moet ik dat wel even uitzoeken.
Maarja die struct is me aangeraden omdat je er meer mee kan dan met een array. Handig zo'n IT leraar.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19-05 20:34

Gerco

Professional Newbie

Verwijderd schreef op 02 november 2004 @ 17:37:
Dus jullie raden mij aan om een array te gebruiken.
Dan zal dat wel een multidimensionale array zijn. Dan moet ik dat wel even uitzoeken.
Maarja die struct is me aangeraden omdat je er meer mee kan dan met een array. Handig zo'n IT leraar.
Nee, je moet een Array van Objects gebruiken, zoiets misschien:
C#:
1
2
3
4
5
6
7
class MP3 {
  private String _member;
}

class Program {
  private MP3[] _songs;
}

Dan heb je een array van MP3 objecten. Daar kun je vervolgens van alles mee, bijvoorbeeld sorteren volgens de tips hierboven.

[ Voor 13% gewijzigd door Gerco op 02-11-2004 18:16 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Gerco schreef op 02 november 2004 @ 18:13:
[...]
C#:
1
2
3
class Program {
  private MP3() _songs;
}

.
dat wordt dat wel

C#:
1
private MP3[] _songs;

anders gaat het niet werken

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19-05 20:34

Gerco

Professional Newbie

rwb schreef op 02 november 2004 @ 18:15:
C#:
1
private MP3[] _songs;

anders gaat het niet werken
Oh well, foutje, bedankt :) Teveel ge-VB.net, dan krijg je dat soort dingen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • EfBe
  • Registratie: Januari 2000
  • Niet online
whoami schreef op 02 november 2004 @ 15:43:
De ArrayList heeft idd een Sort method, maar dan verwacht die arraylist wel dat de objecten in die arraylist de IComparable interface implementeren.
Je kan echter ook de Sort aanspreken door zelf een IComparer mee te geven aan die Sort method.
Kan ook inderdaad, je hebt dan zo'n beetje de qsort van C :) (Sort van arraylist doet ook gewoon qsort)
Als je echt lui bent, kan je misschien ook de SortedList gaan misbruiken voor dit doeleinde.
Dat gaat niet altijd want de key moet uniek zijn.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Verwijderd schreef op 02 november 2004 @ 17:37:
Dus jullie raden mij aan om een array te gebruiken.
Er heeft hier niemand over een array gesproken ? :?

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Het makkelijkst in dit geval, en ik neem ff aan dat je je mp3'tjes op verschillende dingen wilt kunnen sorteren, is een aantal van IComparer afgeleide klassen maken en die vervolgens mee te geven aan ArrayList.Sort().

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Verwijderd

Topicstarter
Ik weet geen andere manier om alle gegevens van een mp3 te bewaren.
Zo kan ik me niet voorstellen hoe je gegevens in een class bewaart :?
Handig he als je tijdens een project de programmeertaal nog moet leren.
Heeft iemand hier nog voorbeelden van?

[ Voor 10% gewijzigd door Verwijderd op 03-11-2004 14:04 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Hmm, je weet niet hoe je het in een class bewaart, maar wel in een struct ?
Een class is syntactisch gezien vergelijkbaar met een struct. Het grote verschil is dat een class in C# een reference type is, en een struct een value-type.

Neem de C# documentatie er eens bij en zoek eens op 'class'

https://fgheysels.github.io/


  • lier
  • Registratie: Januari 2004
  • Laatst online: 06:28

lier

MikroTik nerd

Misschien vraagt FerRory zich well af hoe je een object/struct moet persisteren, of praten we hier over een app die continue en volledig alle objecten in het geheugen bewaard...

Eerst het probleem, dan de oplossing


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
In dat geval, dan kan hij eens kijken naar Serialization (Serializable attribute en de ISerializable interface). Zo kan hij de objecten naar een file saven.
Echter, ik denk dat een database voor zoiets meer functionaliteit biedt. (Kijk dan eens naar ADO.NET)

[ Voor 7% gewijzigd door whoami op 03-11-2004 15:17 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
De applicatie wordt voor een pda dus ik denk niet dat er een DB bij komt. Maar ik zal het nog eens na vragen aan de leraar.
Pagina: 1