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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred » Fr, 22. Jun 2018 11:32

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13135
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: asort() reihenfolge

Beitrag von Jan » Fr, 22. Jun 2018 11:42

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: 14588
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: asort() reihenfolge

Beitrag von brandelh » Fr, 22. Jun 2018 11:45

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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge

Beitrag von Manfred » Fr, 22. Jun 2018 11:49

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13135
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: asort() reihenfolge

Beitrag von Jan » Fr, 22. Jun 2018 12:12

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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge

Beitrag von Manfred » Fr, 22. Jun 2018 12:13

nur ein asort().
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13135
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: asort() reihenfolge

Beitrag von Jan » Fr, 22. Jun 2018 12:16

Manfred hat geschrieben:
Fr, 22. Jun 2018 11:49
Hubert,
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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge

Beitrag von Manfred » Fr, 22. Jun 2018 12:16

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred » Fr, 22. Jun 2018 12:20

Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13135
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Jan » Fr, 22. Jun 2018 12:33

... 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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred » Fr, 22. Jun 2018 13:02

es klappt jetzt wieder.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14588
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von brandelh » Fr, 22. Jun 2018 13:40

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: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred » Fr, 22. Jun 2018 13:50

Das ist Chr(245) wenn ich recht erinnere.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14588
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von brandelh » Fr, 22. Jun 2018 15:01

chr(245) = "§" // per ALT + 245 erzeugt ;-)
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18140
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Manfred » Fr, 22. Jun 2018 15:09

sorry, hast recht. 248 war gemeint
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13135
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von Jan » Fr, 22. Jun 2018 15:10

OEM 157
ANSI 248

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

Benutzeravatar
HaPe
Foren-Moderator
Foren-Moderator
Beiträge: 544
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: asort() reihenfolge [ERLEDIGT]

Beitrag von HaPe » Fr, 22. Jun 2018 15:11

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

Organisator der XUG Stuttgart
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Antworten