DataObjects im Array und Asort()

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DataObjects im Array und Asort()

Beitrag von Manfred »

ich habe mal wieder etwas entdeckt, was mal wieder so richtig Klasse ist. (hat sich auch mindestens einer hier aus dem Forum live angesehen und selbst ein wenig gestaunt).
Also folgendes Problem, ich durchlaufe eine Tabelle und schreibe die DAten in ein DataObject, welches ich dann nach jedem Satz in ein Array kopiere.

Code: Alles auswählen

local dob := dataObject():new()
         do while ! Eof()
         dob:name1 := field->name
         dob:zahl     := machestringdraus(field->zahl) // und aus . wird ein , gemacht
         aadd(aarray,dob:copy())
         skip
enddo
Das wird dann in einem Browser angezeigt.. Klappt alles prima, ohne Probleme.
jetzt gibt es die Möglichkeit jede Spalte zu sortieren. Rauf oder runter, egal, hauptsache sortieren. Hier nur knapp:

Code: Alles auswählen

Asort(aarray,,,{|x,y| x:name1 > y:name1})
Das klappt prima. Egal ob hoch oder runter
das hier aber:

Code: Alles auswählen

Asort(aarray,,,{|x,y| x:zahl > y:zahl})
ergibt Mist. Wenn negative Werte drin stehen, dann erscheinen die an total falscher Stelle, mittendrin sind leere Zeilen und dann erscheint irgendwann wieder ein Wert. Sprich, die Reihenfolge ist total falsch. In mir keimt der Verdacht, das DataObects mit solchen Inhalten nicht richtig sortiert (werden können) ?
egal, was ich versuche, direkte Zahlen schreiben, oder den Index auf Val() setzen, es bringt nichts.Irgendwie kommt bei jeder neuen Aktion auch neuer Mist an den Tag.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DataObjects im Array und Asort()

Beitrag von Tom »

Deine Zahlen sind ja Strings, Manfred. Und Zeichenfolgen sind anders sortiert als Zahlen - vor allem, wenn führende Leerzeichen fehlen:

1
10
11
12
2
20
usw.

Was macht Deine Funktion "macheStringdaraus" genau? Und was passiert, wenn Du direkt in ein Array schreibst und das dann sortierst? Ich vermute, das das gleiche passiert. Deine Formatierungsfunktion ist die Ursache.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DataObjects im Array und Asort()

Beitrag von Manfred »

Hi Tom,
ich habe egrade nochmal einen kleinen Tipp unter der hand erhalten und den noch etwas ausgefeilt erweitert. Ich vermute das auch ein riesengroßer Denkfehler von mir im Spiel war. Ich werde die Idee mal einbauen und schauen, ob so das Problem behoben wird/ist. Es hängt aber auch nur bedingt mit Deinem Vorschlag zusammen. Der String wird immer 10stellig zurückgegeben und am Anfang aufgefüllt mit Leerzeichen. Es war/ist aber doch etwas schwieriger als gedacht. Aber der Asort scheint doch zu klappen. Das war ein Schnellschuß, der falsch war.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: DataObjects im Array und Asort()

Beitrag von Jan »

Manfred,

ich arbeite da ja auch ständig mit. Ich habe da keinerlei Probleme mit Sortierungen von Arrays mit DOs, auch nicht bei numerischen Werten. Das muß irgendwo anders dran liegen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DataObjects im Array und Asort()

Beitrag von brandelh »

welcher Datentyp liegt genau vor ?
Sind alle Felder gefüllt ? Leere werden zu NIL oder ?
Wenn der Datentyp stimmt, dann werden Zahlen sauber sortiert, egal ob die in einem Array oder einem DataObjekt gelagert sind.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: DataObjects im Array und Asort()

Beitrag von Jan »

brandelh hat geschrieben: Mo, 01. Apr 2019 11:25Sind alle Felder gefüllt ? Leere werden zu NIL oder ?
Korrekt

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten