StructuredList()

Anfängerfragen zum Programmieren mit PureBasic.
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

StructuredList()

Beitrag von Martin66119 »

Hallo und guten Morgen!

Ich habe da ein kleines Problem als Anfänger.
Zwei Dinge funktionieren nicht.

1). In der ersten For-Schleife sollen nacheinander alle Listenelemente
ausgegeben werden. Es wir aber 4 mal nur das letzte angezeigt.

2). Die Sortierung geht nicht.

Was mache ich falsch! Bitte um HILFE! Gruß Martin


Hier der Code.

Code: Alles auswählen

Structure File
  eMail$
  Datum$
  Gesamt$
EndStructure

NewList Liste.File()

Anzahl.w
i.b

AddElement(Liste.File())    
Liste.File\eMail$ = "d@web.de"
Liste.File\Datum$ = "01.03.05"

AddElement(Liste.File())   
Liste.File\email$ = "b@web.de"
Liste.File\Datum$ = "11.05.05"

AddElement(Liste.File())   
Liste.File\email$ = "a@web.de"
Liste.File\Datum$ = "28.01.04"

AddElement(Liste.File())   
Liste.File\email$ = "c@web.de"
Liste.File\Datum$ = "14.03.05"

Anzahl = CountList(Liste.File())
Ausgabe$ = StrU(Anzahl, #Word)
MessageRequester("Anzahl", Ausgabe$,#PB_MessageRequester_Ok ) 

For i = 0 To Anzahl -1 Step 1
  SelectElement(Liste.File(), i)
  Liste.File\Gesamt$ = Liste.File\email$ + " " + Liste.File\Datum$
  MessageRequester("Anzahl", Liste.File\Gesamt$,#PB_MessageRequester_Ok ) 
Next i


SortStructuredList(Liste(), 0, OffsetOf(File\eMail$), #PB_Sort_String)
  
MessageRequester("Anzahl", "Ausgabe der Liste sortiert" ,#PB_MessageRequester_Ok ) 

For i = 0 To Anzahl -1 Step 1
  SelectElement(Liste.File(), i)
  Liste.File\Gesamt$ = Liste.File\email$ + " " + Liste.File\Datum$
  MessageRequester("Anzahl", Liste.File\Gesamt$,#PB_MessageRequester_Ok ) 
Next i
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

StructuredList

Beitrag von Martin66119 »

Habe die Lösung selbst gefunden!

Liste()\email = "b@web.de" anstatt Liste.File\eMail

Code: Alles auswählen

Structure File
  eMail.s
  Datum.s
  Gesamt.s
EndStructure

NewList Liste.File()

Anzahl.w
i.b

AddElement(Liste.File())    
Liste()\eMail = "d@web.de"
Liste()\Datum = "01.03.05"

AddElement(Liste.File())   
Liste()\email = "b@web.de"
Liste()\Datum = "11.05.05"

AddElement(Liste.File())   
Liste()\email = "a@web.de"
Liste()\Datum = "28.01.04"

AddElement(Liste.File())   
Liste()\email = "c@web.de"
Liste()\Datum = "14.03.05"

Anzahl = CountList(Liste())
Ausgabe$ = StrU(Anzahl, #Word)
MessageRequester("Anzahl", Ausgabe$,#PB_MessageRequester_Ok ) 

For i = 0 To Anzahl -1 Step 1
  SelectElement(Liste(), i)
  Liste()\Gesamt = Liste()\email + " " + Liste.File\Datum
  MessageRequester("Anzahl", Liste()\Gesamt,#PB_MessageRequester_Ok ) 
Next i


SortStructuredList(Liste(), 0, OffsetOf(File\eMail), #PB_Sort_String)
  
MessageRequester("Anzahl", "Ausgabe der Liste sortiert" ,#PB_MessageRequester_Ok ) 

For i = 0 To Anzahl -1 Step 1
  SelectElement(Liste(), i)
  Liste()\Gesamt = Liste()\email + " " + Liste()\Datum
  MessageRequester("Anzahl", Liste()\Gesamt,#PB_MessageRequester_Ok ) 
Next i
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag von nicolaus »

Hallo

Als erstes hast du ja die liste mit

Code: Alles auswählen

NewListListe.File()
schon declariert also brauchst du wenn du sie füllst nicht immer das ".File" mit schreiben sondern nur

Code: Alles auswählen

Liste()\eMail$ = ....
Zu deinem ersten Prob:
Ruf mal vor der FOR Schleife ein

Code: Alles auswählen

FirstElement(Liste())
auf dann siehst du auch alle einträge die du sehen willst.

Mit dem Sort kann ich dir gerade nich helfen da ich das selber noch nie verwendet habe und mir erst mal anschauen muß.

Gruß Nico
Zuletzt geändert von nicolaus am 21.10.2005 09:23, insgesamt 1-mal geändert.
Benutzeravatar
Eckhard
Beiträge: 10
Registriert: 29.08.2004 20:58
Wohnort: Löhne

Beitrag von Eckhard »

Hallo,

mach das mal so, dann geht's.

Code: Alles auswählen

Structure File
eMail$
Datum$
Gesamt$
EndStructure

NewList Liste.File()

Anzahl.w
i.b

AddElement(Liste())
Liste()\eMail$ = "d@web.de"
Liste()\Datum$ = "01.03.05"

AddElement(Liste())
Liste()\email$ = "b@web.de"
Liste()\Datum$ = "11.05.05"

AddElement(Liste())
Liste()\email$ = "a@web.de"
Liste()\Datum$ = "28.01.04"

AddElement(Liste())
Liste()\email$ = "c@web.de"
Liste()\Datum$ = "14.03.05"

Anzahl = CountList(Liste())
Ausgabe$ = StrU(Anzahl, #Word)
MessageRequester("Anzahl", Ausgabe$,#PB_MessageRequester_Ok )

For i = 0 To Anzahl -1 ;Step 1
SelectElement(Liste(), i)
Liste()\Gesamt$ = Liste()\email$ + " " + Liste()\Datum$
MessageRequester("Anzahl", Liste()\Gesamt$,#PB_MessageRequester_Ok )
Next i


SortStructuredList(Liste(), 0, OffsetOf(File\eMail$), #PB_Sort_String)

MessageRequester("Anzahl", "Ausgabe der Liste sortiert" ,#PB_MessageRequester_Ok )

For i = 0 To Anzahl -1 Step 1
SelectElement(Liste(), i)
Liste()\Gesamt$ = Liste()\email$ + " " + Liste()\Datum$
MessageRequester("Anzahl", Liste()\Gesamt$,#PB_MessageRequester_Ok )
Next i
Gruss
Eckhard!
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

StructuredList

Beitrag von Martin66119 »

Danke an alle die geholfen Haben
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Nächstes Mal bitte Code-Tags nicht vergessen, danke :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Das hier kann man noch vereinfachern:

Code: Alles auswählen

For i = 0 To Anzahl -1 ;Step 1 
SelectElement(Liste(), i) 
Liste()\Gesamt$ = Liste()\email$ + " " + Liste()\Datum$ 
MessageRequester("Anzahl", Liste()\Gesamt$,#PB_MessageRequester_Ok ) 
Next i 
Und zwar so:

Code: Alles auswählen

ForEach Liste()
Liste()\Gesamt$ = Liste()\email$ + " " + Liste()\Datum$ 
MessageRequester("Anzahl", Liste()\Gesamt$,#PB_MessageRequester_Ok ) 
Next
Antworten