Hi,
Ich will ein Array sortieren. Das Problem ist nun, dass _ArraySort das Zeichenweise macht, also liegt zb 51 vor 509, weil 1 > 0 - was kann man da machen, ausser ne Sortierfunktion komplett selbst zu schreiben?!
danke
Hi,
Ich will ein Array sortieren. Das Problem ist nun, dass _ArraySort das Zeichenweise macht, also liegt zb 51 vor 509, weil 1 > 0 - was kann man da machen, ausser ne Sortierfunktion komplett selbst zu schreiben?!
danke
Schau dir _ArraySort nochmal an.
Du kannst Ascending/Descending angeben.
ja, das ist aber nur die Reihenfolge - hier geht es ja um das Problem, dass zB
26
256
25
bei der Sortierung herauskommt.
Also ich weiß nicht womit du sortierst aber wenn ich die werte 25,26 und 256 nehme bekomm ich entweder
25
26
256
oder
256
26
25
Vieleicht besteht das Problem nur beim Sortieren eines 2D-Array oder deswegen, weil das ganze als Zeichenkette (as ner .htm) eingelesen wird (auch wenn AutoIt da eigentlich keinen Unterschied macht/machen sollte?!)
Ich hab das Problem gefunden.
Ich nehme mal schwer an du hast die Zahlen als Strings ins Array geschrieben denn dann sortiert er so wie du es gezeigt hast, was dann auch logisch ist.
Also entweder als Zahlen ins Array schreiben, die inhalte im Array zu integer konvertieren oder eigene Funktion schreiben welche die Strings so sortiert wie du es möchtest.
Dann setzt ein Int() davor. Dass er den String in ein Integer umwandelt.
Der Unterschied ist einfach das du keine richtigen Zahlen im Array stehen hast sondern Strings welche Zahlen darstellen.
Aber Strings werden nunmal wie Strings sortiert - nämlich zeichenweise.
Also musst du die Stringzahlen in richtige Zahlen ändern.
Mal als Beispiel zur Verdeutlichung:
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $aTest1[3] = ["256", "25", "26"]
Global $aTest2[3] = [256, 25, 26]
Global $aTest3[3] = [Number("256"), Number("25"), Number("26")]
_ArraySort($aTest1)
_ArrayDisplay($aTest1)
_ArraySort($aTest2)
_ArrayDisplay($aTest2)
_ArraySort($aTest3)
_ArrayDisplay($aTest3)
Edit: Letzter... ![]()
Das wirkliche Problem ist, dass Autoit das erkennen sollte, da es jam in AutoIt eigentlich keinen Unterschied zwischen String und Int gibt und das bei der Sortierung entsprechend funktionieren sollte....
Jedenfalls danke für die Hilfe
da es jam in AutoIt eigentlich keinen Unterschied zwischen String und Int
Tatsächlich? Dann haben die Funktionen
IsInt()
IsString()
IsFloat()
IsBool()
also überhaupt keinen Sinn? ![]()
edit: wenn gelöst dann bitte den ersten Beitrag bearbeiten und auf [gelöst] ändern. Danke!
Schaue dir mal den Beitrag im engl. Forum an: Natural Order String Comparison
Gruß,
UEZ