Strukur sortieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Strukur sortieren

Beitrag von CNESM »

Hi,

ich hätte noch eine kleine Frage, die hoffentlich nicht so komplex ist, wie manch andere Sachen.

Ich habe eine Strukur, die mehrere "Felder"hat:
Global Field1,Field2,Field3
Structure BasicStructure
Field0.w
Field1.s
Field2.s
Field3.s
Field4.s
EndStructure
NewList TestList.BasicStructure()
In die Felder werden geschrieben:

Field0=Harken(0) oder kein Harken(1)
Field1=Name
Field2=Teilpfad
Field3=Kompletter Pfad
Field4=Parameter

Nun wird das Verzeichnis eingelesen und die Felder mit den vorhandenen Dateien gefüllt. Leider ist das Field3 nicht der Reihe nach sortiert, weil die Procedur zum Auslesen des Verzeichnisses anders vorgeht: (Naütlrich könnte ich die Procedur zum Einlesen anpassen, aber ich müsste andere Strukturen auch nach anderen Kritieren sortieren, daher ist das sehr wichtig):

Programm\Bilder\Krafiken
Programm
Programm\Bilder\Hilfe
Programm\UpdateProgramm\Bilder\Krafiken
Programm\UpdateProgramm\Bilder\Krafiken
Programm
Programm\Bilder\Hilfe

Nun müsste das ganze aber so sortiert werden:

Programm
Programm
Programm\Bilder\Hilfe
Programm\Bilder\Hilfe
Programm\Bilder\Krafiken
Programm\UpdateProgramm\Bilder\Krafiken
Programm\UpdateProgramm\Bilder\Krafiken

Ich hab schon mal etwas rumgeschaut aber nichts gefunden, wo man LinkedList bzw. Strukturen sortieren kann:

http://robsite.de/php/pureboard-archiv/ ... =sortieren
horst
Beiträge: 70
Registriert: 08.09.2004 19:33
Wohnort: München
Kontaktdaten:

Re: Strukur sortieren

Beitrag von horst »

Auf meiner Homepage gibts QLSORT für Linked Lists mit Strukturen.
http://home.mnet-online.de/horst.muc/pb/
horst
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Hi,

danke, sieht schon mal nicht schlecht aus und werde es mir mal anschauen :)

Danke !
Monstalocke
Beiträge: 12
Registriert: 04.01.2005 14:38

Beitrag von Monstalocke »

Cool,das es so was fertig gibt!
Ich raffs zwar nicht ganz(bzw. bin zu faul mich reinzudenken :mrgreen:) aber es funktioniert einwandfrei!
Tier
Beiträge: 5
Registriert: 10.06.2005 12:35

Beitrag von Tier »

Ne, irgendwie gar nicht. Vielleicht verstehe ich es auch partout nicht. Ich habe mir versuchsweise mal das Beispiel aus dem Quelltext vorgenommen und herumprobiert. Der will bei mir irgendwie nichts sortieren, geschweige denn, auch nur einen einzelnen Wert der Struktur verändern. Schaut mal:

Code: Alles auswählen

; Include von QuickSortArray nicht vergessen!

Structure your
 name.s
 number.l 
EndStructure 

Dim Array.your(10) 

While x<=10
  Array(x)\Name=Str(x)
  Array(x)\number=(x+Random(100))*x/(x+1)
  x=x+1
Wend

While y<10
  Debug "Name: "+Array(y)\Name
  Debug "Nummer: "+Str(Array(y)\Number)
  y=y+1
Wend


Procedure ByNameAscending(*a.your,*b.your) 
  If *a\number <= *b\number : ProcedureReturn #True : EndIf 
EndProcedure 

Procedure ByNumberAndName(*a.your,*b.your) 
  If *a\number < *b\number : ProcedureReturn #True : EndIf 
  If *a\number = *b\number  
    If LCase(*a\name) <= LCase(*b\name) : ProcedureReturn #True : EndIf 
  EndIf 
EndProcedure 

QuickSortArray(@Array(0),number,SizeOf(your),@ByNameAscending())

y=0
While y<10
  Debug "Name: "+Array(y)\Name
  Debug "Nummer: "+Str(Array(y)\Number)
  y=y+1
Wend
Mir geht`s besser als ich auseh`.


http://tyr.myownmusic.de
Antworten