asort() reihenfolge [ERLEDIGT]

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

asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred »

Hi,
ich komme im Moment nicht weiter. Ich habe ein Array das sortiert wird, mit folgenden Inhalten
awerte[1] -> "Summe"
awerte[2] -> "øSaldo"

bisher war es so, wenn es mit asort(awerte) sortiert wurde, ergab es genau das Ergebnis, wie es oben steht. Jetzt ist es neuerdings andersherum. das "ø" wird zuerst einsortiert. Irgendwas habe ich wohl zwischendurch geändert, finde es aber nicht. In der Hilfe steht, das SET EXCACT SET LEXICAL und SET COLLATION eine Rolle spielen. Wie müssen die denn geschaltet sein damit das "S" wieder vor dem "ø" steht? Ich bin mir sehr sicher, das ich mit SET EXACT und LEXICAL nicht herumgespielt habe. Bei SET COLLATION bin ich mir im Moment nixcht mehr sicher. Ich habe zwischendurch von DBFNTX auf FOXCDX umgestellt. Kann das damit zusammhängen?
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: asort() reihenfolge

Beitrag von Jan »

Manfred,

ich hab Dein Beispiel mal eben bei mir durchgetestet. Das sieht genau so aus. Saldo komm vor øSaldo. Erscheint mir auch logisch.

Von den drei von SETs habe ich im Code nur eine, und das ist SET COLLATION TO GERMAN. SET CHARSET TO ist egal, was man da einstellt.

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: asort() reihenfolge

Beitrag von brandelh »

Ja was steht denn in der EXE zu den 3 Anweisungen ?

Laut ASC() müsste "S" immer vor "ø" (245) kommen, mit SYSTEM wäre die Sortierung nach ASCII Code, aber ich denke nicht, dass unter GERMAN das anders wäre ...
Könnte es sein, dass ein winziges Blank VOR dem ø steht ;-)
Gruß
Hubert
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: asort() reihenfolge

Beitrag von Manfred »

Hubert,
das war auch zuerst mein Verdacht, steht aber nicht. Kann auch nicht sein, weil es dann nach oben rutschen würde, oder? ;-)
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: asort() reihenfolge

Beitrag von Jan »

Manfred,

machst Du denn einfach ein ASort(aArray), oder ein ASort(aArray, {|x, y| ...})?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: asort() reihenfolge

Beitrag von Manfred »

nur ein asort().
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: asort() reihenfolge

Beitrag von Jan »

Manfred hat geschrieben: Fr, 22. Jun 2018 11:49Hubert,
das war auch zuerst mein Verdacht, steht aber nicht. Kann auch nicht sein, weil es dann nach oben rutschen würde, oder? ;-)
Aber ist denn nicht genau daß das Problem? Es soll unten sein, wie sich das gehört. Du aber hast es jetzt oben. Was durch ein Blank passieren würde.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: asort() reihenfolge

Beitrag von Manfred »

Mist, habe das Problem gefunden. Jetzt bin ich aber echt gekniffen...... Mal schauen wie ich das jetzt vernünftig geregelt kriege.....
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
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: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred »

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: asort() reihenfolge [ERLEDIGT]

Beitrag von Jan »

... ich bin irritiert. Das ø muß doch in jeder Collation nach dem S kommen. Oder nicht?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred »

es klappt jetzt wieder.
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
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: asort() reihenfolge [ERLEDIGT]

Beitrag von brandelh »

Beispielprogramm, denn ich kann nicht glauben was ich höre 8)

Xbase 2.00.951

Code: Alles auswählen

#include "Common.ch"
PROCEDURE Main
   LOCAL cSeltsam := "ø"
   LOCAL cS := "S"
   LOCAL aTest := { "x","s",cSeltsam,"a","A","S","Z" }
   /* we use the ansi charset by default */
   SET CHARSET TO ANSI
   SET COLLATION TO SYSTEM

   SET ALTERNATE TO test.txt
   SET ALTERNATE ON

   ? "ø = ASC() = ",asc(cSeltsam), cSeltsam+" > "+cS+" ? ",cSeltsam > cS
   ? "S = ASC() = ",asc(cS), cS+" > "+cSeltsam+" ? ",cS > cSeltsam
   ?
   ? "Sortiere das"
   ? aTest
   aSort(aTest)
   ? "ergibt das"
   ? aTest
   ?
   ? "Ende"

   SET ALTERNATE OFF

   inkey(40)
   /* $TODO: place your application code here */
RETURN
1. Feststellung

im Beispiel Projekt war die ANSI => OEM Umsetzung aktiv, daher seltsame unerwartete ASC() Werte, OEM Ergebnis mit SYSTEM

Code: Alles auswählen

ø = ASC() =         155 ø > S ?  N
S = ASC() =          83 S > ø ?  J

Sortiere das
{x, s,ø, a, A, S, Z}
ergibt das
{ø, a, A, s, S, x, Z}

Ende
nun zuerst ANSI => OEM Umsetzung deaktiviert und ANSI Ergebnis mit SYSTEM

Code: Alles auswählen

ø = ASC() =         248 ø > S ?  N
S = ASC() =          83 S > ø ?  J

Sortiere das
{x, s, ø, a, A, S, Z}
ergibt das
{a, A, ø, s, S, x, Z}

Ende
:arrow: das "ø" wird anders sortiert je nach Quellcode Umsetzung !

ANSI Ergebnis mit GERMAN

Code: Alles auswählen

ø = ASC() =         248 ø > S ?  J
S = ASC() =          83 S > ø ?  N

Sortiere das
{x, s, ø, a, A, S, Z}
ergibt das
{A, S, Z, a, s, x, ø}
sieh mal einer an, mit der Standardeinstellung eines deutschen Xbase++ wird es wieder richtig sortiert.

Mit DIN und ASCII hatte ich das gleiche Ergebnis, SYSTEM scheint nicht sinnvoll ... obwohl in der Hilfe nur steht, dass Groß-/Kleinschreibung nicht unterschieden wird.
Eventuell ist das "ø" aber auch ein Schriftzeichen, das dadurch nach vorne rückt.
Gruß
Hubert
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: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred »

Das ist Chr(245) wenn ich recht erinnere.
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
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: asort() reihenfolge [ERLEDIGT]

Beitrag von brandelh »

chr(245) = "§" // per ALT + 245 erzeugt ;-)
Gruß
Hubert
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: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred »

sorry, hast recht. 248 war gemeint
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: asort() reihenfolge [ERLEDIGT]

Beitrag von Jan »

OEM 157
ANSI 248

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von HaPe »

Eventuell ist das "ø" aber auch ein Schriftzeichen,
Das ist Chr(245) wenn ich recht erinnere.
Nö, CHR( 155 )

Getestet in der Xbase-Workbench, meinen Programmierer-Editoren, im CMD-Fenster, PowerShell, Visual Studio, usw.
--
Hans-Peter
Antworten