Aktuelle Zeit: 29.09.2020 20:07

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 07.04.2017 16:20 
Offline

Registriert: 10.06.2011 17:23
Hallo,

ich wollte mal ein etwas aelteres Projekt mit der aktuellsten PB 5.60 versuchen... allerdings scheitert es an dem Befehl 'SortStructuredArray()'. Im Gegensatz zu 4.61 & 5.31 scheint dieser nun nicht mehr mit multidimensionalen Feldern umgehen zu koennen.

[15:34:19] [ERROR] SortStructuredArray(): Multi-dimensioned Array is Not support by SortArray().

Die Fehlermeldung im LOG bezieht sicher auf 'SortArray()' und da steht auch in der Hilfe 'Multi-dimensioned arrays are not supported'. Dieser Hinweiss findet sich allerdings nicht unter 'SortStructuredArray()' und hat auch bisher mit multidimensionalen Feldern bestens funktioniert.

Hat sich hier was geaendert? Wurde der Befehl 'SortStructuredArray()' geaendert und die Funktion duch einen anderen Befehl ersetzt?
Wenn das so gewollt ist... gibt es einen Ersatz/Workaround?

Dieser (aus der Hilfe) erweiterte Code laeuft unter 4.61 & 5.31 ohne Probleme:
Code:
Structure Animal
    Name$
    Speed.l
  EndStructure

  Dim Animals.Animal(2, 2)

  Animals(0,0)\Name$ = "Tiger"
  Animals(0,0)\Speed = 10

  Animals(1,1)\Name$ = "Jaguar"
  Animals(1,1)\Speed = 40

  Animals(2,2)\Name$ = "Zebra"
  Animals(2,2)\Speed = 30
 
  Debug "***************"
  Debug "Sorted by Name"
  Debug "***************"
 
  SortStructuredArray(Animals(), 0, OffsetOf(Animal\Name$), #PB_String)
 
  For l= 0 To 2
    For k=0 To 2
      Debug Animals(k,l)\Name$+" - Speed: "+Str(Animals(k,l)\Speed)
    Next
  Next     
 
  Debug "***************"
  Debug "Sorted by Speed"
  Debug "***************"
 
  SortStructuredArray(Animals(), 0, OffsetOf(Animal\Speed), #PB_Long)

  For l= 0 To 2
    For k=0 To 2
      Debug Animals(k,l)\Name$+" - Speed: "+Str(Animals(k,l)\Speed)
    Next
  Next     


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 07.04.2017 21:25 
Offline

Registriert: 29.08.2004 13:18
Das es funktioniert hat, war vermutlich ein Bug. Wie genau will man auch ein Multi-Array sortieren? Darf man sie aus der zweiten Dimension in die erste reinsortieren etc?

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 01:59 
Offline

Registriert: 10.06.2011 17:23
Ich weiss gar nicht mehr wie ich darauf gekommen bin aber SortStructuredArray() griff bisher linear auf ein 2D-Array zu. Ueber die Angaben START & END (kann man z.B. ueber COLUMN & ArraySize(Animals(), 2) errechnen) konnte man gezielt einzelne Spalten sortiere. Bei der Nutzung eines INDEX-Wertes in der Struktur konnte man anschliessend die restlichen Spalten entsprechend sortieren. Schade das das nicht mehr geht....

Falls das ein BUG war, ich will den wiederhaben! 8)

hier mal eine besserer Code dazu:
Code:
Structure Animal
    Name.s
    Speed.l
  EndStructure

  Dim Animals.Animal(2, 2)
 
  ; zu Land
  Animals(0,0)\Name = "Gepard"
  Animals(0,0)\Speed = 122
  Animals(0,1)\Name = "Antilope"
  Animals(0,1)\Speed = 90
  Animals(0,2)\Name = "Strauß"
  Animals(0,2)\Speed = 70
 
  ; zu Wasser
  Animals(1,0)\Name = "Schwertwal"
  Animals(1,0)\Speed = 70
  Animals(1,1)\Name = "Barrakuda"
  Animals(1,1)\Speed = 150
  Animals(1,2)\Name = "Feuerqualle"
  Animals(1,2)\Speed = 2
 
  ; zu Luft
  Animals(2,0)\Name = "Wanderfalke"
  Animals(2,0)\Speed = 320
  Animals(2,1)\Name = "Moorente"
  Animals(2,1)\Speed = 106
  Animals(2,2)\Name = "Kiebitz"
  Animals(2,2)\Speed = 150 
 
  Debug "**********************"
  Debug " # Orginal"
  Debug "**********************"
  For x = 0 To 2
    For y = 0 To 2
      Debug Animals(x,y)\Name+" - Speed: "+Str(Animals(x,y)\Speed)
    Next   
    Debug "*" 
  Next     

  SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Name), #PB_String, 0, 2)
  Debug "**********************"
  Debug " # Land sorted by Name"
  Debug "**********************"
  For x = 0 To 2
    For y = 0 To 2
      Debug Animals(x,y)\Name+" - Speed: "+Str(Animals(x,y)\Speed)
    Next   
    Debug "*" 
  Next     
 
  SortStructuredArray(Animals(), #PB_Sort_Descending, OffsetOf(Animal\Speed), #PB_Long, 3, 5)
  Debug "**********************"
  Debug " # Wasser sorted by Speed"
  Debug "**********************"
  For x = 0 To 2
    For y = 0 To 2
      Debug Animals(x,y)\Name+" - Speed: "+Str(Animals(x,y)\Speed)
    Next   
    Debug "*" 
  Next     
 
  SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\name), #PB_String, 6, 8)
  Debug "**********************"
  Debug " # Luft sorted by Name"
  Debug "**********************"
  For x = 0 To 2
    For y = 0 To 2
      Debug Animals(x,y)\Name+" - Speed: "+Str(Animals(x,y)\Speed)
    Next   
    Debug "*" 
  Next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 12:59 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hi blastar,

das ist JETZT ein BUG von PureBasic beim Debugger.

Probiere deinen Code mal ohne Debugger-Ausgabe und mit "DisableDebugger".

Es sollte funktionieren.

Also der Bug liegt eindeutig bei Pure-Basic.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 15:34 
Offline

Registriert: 10.06.2011 17:23
Ok, wo geht es jetzt zum hochdotiertem Purebasic-Bug-Bounty-Programm! 8)
Aber stimmt, ohne Debugger laeuft das ganze... hmm, das ist natuerlich keine Option weil beim schreiben der Debugger immer eingeschaltet ist. :|

Hier nochmal ein Code zum testen ohne DEBUG-Output:
Code:
Structure Animal
  Name.s
  Speed.l
EndStructure

Global Dim Animals.Animal(2, 2)

; zu Land
Animals(0,0)\Name = "Gepard"
Animals(0,0)\Speed = 122
Animals(0,1)\Name = "Antilope"
Animals(0,1)\Speed = 90
Animals(0,2)\Name = "Strauß"
Animals(0,2)\Speed = 70

; zu Wasser
Animals(1,0)\Name = "Schwertwal"
Animals(1,0)\Speed = 70
Animals(1,1)\Name = "Barrakuda"
Animals(1,1)\Speed = 150
Animals(1,2)\Name = "Feuerqualle"
Animals(1,2)\Speed = 2

; zu Luft
Animals(2,0)\Name = "Wanderfalke"
Animals(2,0)\Speed = 320
Animals(2,1)\Name = "Moorente"
Animals(2,1)\Speed = 106
Animals(2,2)\Name = "Kiebitz"
Animals(2,2)\Speed = 150 

If OpenWindow(0, 0, 0, 484, 180, "SortStructuredArray() Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  ListIconGadget(0,  0,  0, 490, 160, "Animal", 80)
  AddGadgetColumn(0, 1, "Speed", 80)
  AddGadgetColumn(0, 2, "Animal", 80)
  AddGadgetColumn(0, 3, "Speed", 80)
  AddGadgetColumn(0, 4, "Animal", 80)
  AddGadgetColumn(0, 5, "Speed", 80)
  ButtonGadget(10,   0, 160, 80, 20, "Sort Name")
  ButtonGadget(11,  80, 160, 80, 20, "Sort Speed")
  ButtonGadget(12, 160, 160, 80, 20, "Sort Name")
  ButtonGadget(13, 240, 160, 80, 20, "Sort Speed")
  ButtonGadget(14, 320, 160, 80, 20, "Sort Name")
  ButtonGadget(15, 400, 160, 80, 20, "Sort Speed")
 
  For x.w = 0 To 2
    AddGadgetItem(0,-1,Animals(0,x)\Name+Chr(10)+Animals(0,x)\Speed+Chr(10)+Animals(1,x)\Name+Chr(10)+Animals(1,x)\Speed+Chr(10)+Animals(2,x)\Name+Chr(10)+Animals(2,x)\Speed)
  Next

  Repeat
   
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget 
        Select EventGadget()
          Case 10
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Name), #PB_String, 0, 2)
          Case 11
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Speed), #PB_Long, 0, 2)
          Case 12
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Name), #PB_String, 3, 5)
          Case 13
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Speed), #PB_Long, 3, 5)
          Case 14
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Name), #PB_String, 6, 8)
          Case 15
            SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Speed), #PB_Long, 6, 8)
        EndSelect
       
      ClearGadgetItems(0)
      For x.w = 0 To 2
        AddGadgetItem(0,-1,Animals(0,x)\Name+Chr(10)+Animals(0,x)\Speed+Chr(10)+Animals(1,x)\Name+Chr(10)+Animals(1,x)\Speed+Chr(10)+Animals(2,x)\Name+Chr(10)+Animals(2,x)\Speed)
      Next
       
    EndSelect     
  ForEver
 
EndIf


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 21:42 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Naja dann schreibe halt erstmal immer vor so einem Code...

z.Bsp.:
Code:
DisableDebugger
;SortStructuredArray(Animals(), #PB_Sort_Ascending, OffsetOf(Animal\Name), #PB_String, 0, 2)


...und wenn du mit solchen Sachen fertig bist schreibe wieder:

Code:
EnableDebugger


Außerdem solltest du eben eine andere Debug-Ausgabe-Möglichkeit wählen (z.B. PrintN oder MessageRequester,...)

Ansonsten sollte das eben bald möglichst mal gefixt werden.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 21:56 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Jetzt nochmal zum Mitschreiben:
Der Code wird so nicht unterstützt! Ob eine Ausführung mit oder ohne Debugger möglich ist, ist dabei unerheblich.
Ein "scheinbares" funktionieren macht den Code auch nicht richtiger. Die Debugger-Meldung wird schon korrekt sein,
Abschaltung des Debuggers und ignorieren macht das ganze nicht besser.

Entweder FeatureRequest im engl. Forum oder auf eigenes Risiko, mit dem Debugger entsprechende Codestellen aussparen,
und das Problem ignorieren, was aber in keinem Falle ratsam wäre!

Es ist kein Bug und muß nichts gefixed werden!

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 22:19 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
Der Code wird so nicht unterstützt!


Der Code wird aber so unterstützt.

Sonst würde es doch nicht gehen, oder?

Wo liegt den der Fehler? Der Code läuft doch absolut stabil.

Die Hilfe und die Funktion im Allgemeinen verbieten doch so etwas nicht!

....
Dieses Statement lasse ich jetzt einfach mal so stehen.

Egal ob BUG, oder nicht!

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 23:25 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
ccode_new hat geschrieben:
Zitat:
Der Code wird so nicht unterstützt!


Der Code wird aber so unterstützt.

Sonst würde es doch nicht gehen, oder?
Hat damit nichts zu tun!

Wenn eine Funktion dokumentiert ist, als funktionierend, dann kann sie bei nichtfunktion ein Bug sein. Ansonsten handelt es sich lediglich um ein undokumentiertes Feature, was keinen Anspruch darauf erheben kann, zu funktionieren.
Zitat:
Wo liegt den der Fehler? Der Code läuft doch absolut stabil.

Sicher? Unter allen unterstützten OS Versionen, also MacOS, Linux, Windows und deren Revisionen getested?
Auch 32- und 64-Bit Version?
Ich glaube eher weniger das Du zur Aussage: Absolut Stabil, qualifiziert bist, weil Du kannst ja nur testen unter den
Bedingungen, die Dir zur Verfügung stehen.

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SortStructuredArray() - Aenderung oder Bug?
BeitragVerfasst: 08.04.2017 23:35 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Wo liegt den der Fehler? Der Code läuft doch absolut stabil.
Zitat:
Sicher? Unter allen unterstützten OS Versionen, also MacOS, Linux, Windows und deren Revisionen getested?
Auch 32- und 64-Bit Version?
Ich glaube eher weniger das Du zur Aussage: Absolut Stabil, qualifiziert bist, weil Du kannst ja nur testen unter den
Bedingungen, die Dir zur Verfügung stehen.


Da hast du natürlich vollkommen Recht!

Also z.B. unter Windows PB 5.60 x86 und x64 funktioniert es perfekt und unter Linux Mate 16.04 PB 5.60 x64 auch.

Außerdem gibt es wohl einige Dokumentierte PB-Funktionen die weniger stabil als diese Funktion laufen.

Diese Funktion hat schon mal eine größere Stabilität als so manche PB-Zeichenfunktion mit diversen Zeigerzugriff-Fehlern unter Linux.

Außerdem hättest du dir die Fehlermeldung mal genau ansehen sollen.

Diese Fehlermeldung ist nämlich schon ein einziger Bug.

Dort steht doch wortwörtlich schon "SortArray()":
[ERROR] SortStructuredArray(): Multi-dimensioned array is not support by SortArray().

An dieser Stelle müsste ja sonst SortStructuredArray() stehen, oder?

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye