Größer gleich (>=)

07/02/2013 22:00 Nos134#1
Ich habe das Problem, das wenn ich eine Zahl habe die eine Stelle größer ist als die andere, das diese nicht als Größer sondern als kleiner erkannt wird.

Habe hier nur mal den Problematischen Teil gepostet, da man diesen ohne das Spiel installiert zu haben eh nicht nutzen kann.


$SplitInfo[2] >= $SplitBasar[7]

bsp.
$SplitInfo[2] = 7000
$SplitBasar[7] = 5000

Das Script läuft wie gewohnt weiter.



$SplitInfo[2] = 70000
$SplitBasar[7] = 5000

Das Script erkennt 5000 als die größere Zahl.

Ich kann mir nicht erklären, wieso dies der Fall ist, denn wenn ich eine normale abfrage mit den entsprechenden Zahlen starte, so wird diese richtig erkannt.

Ich habe auch bereits mir die entsprechenden Werte zurückgeben lassen wodurch ich ausschließen kann das es sich hierbei um einen falschen Wert handelt
07/02/2013 23:18 Croco™#2
Hast du mal versucht die Abfrage nicht aus dem Array sondern aus Zwei Variablen, denen du die Werte des Arrays gibst, durchführen zu lassen ?
07/02/2013 23:25 KDeluxe#3
Code:
If $SplitInfo[2] >= $SplitBasar[7] Then ;...
Die Bedingung trifft nur ein, wenn $SplitInfo[2] größer oder gleich $SplitBasar[7] ist. Da gibt es kein wenn und aber.

Quote:
Originally Posted by Nos134 View Post
$SplitInfo[2] = 70000
$SplitBasar[7] = 5000

Das Script erkennt 5000 als die größere Zahl.
Das ist definitiv nicht der Fall. Entweder hantierst du mit falschen Daten (auch wenn du das verneinst), oder du hast irgendwo logische Fehler (ich habe dein Scriptausschnitt nur überflogen).

Nebenbei bemerkt solltest du bei StringSplit() prüfen, ob $array[0] > 1 ist, bei _StringBetween() solltest du auf IsArray($array) prüfen.
Deine For-Schleife sollte bei 0 beginnen und bei $count - 1 enden, so sparst du dir bei jedem Durchgang eine Rechenoperation.
Code:
For $i = 0 To $count - 1
;...
Next
07/03/2013 01:06 Nos134#4
@Croco
Ja


@KDeluxe
Das mit dem count hab ich geändert,ty.

Hab mir das Ergebniss nochmals in einer Messagebox ausgeben lassen, und es ist ziemlich offensichtlich das hier was nicht richtig läuft.
Jede Zahl die eine Stelle größer ist wird als kleiner angesehen, das ist nunmal grade so.
Das Problem scheint beim ganzen Array zu gelten, auch wenn jede Variable NUR zahlen enthält.

[Only registered and activated users can see links. Click Here To Register...]
07/03/2013 01:24 Lawliet#5
Versuch mal die Variable in ne Zahl zu konvertieren. Hab schon lange nix mehr gemacht, aber es gibt glaube ich Number().


Edit: entweder es ist zu spät, oder ihr hab alle den Wald vor lauter bäumen nicht gesehen.
Quote:
$SplitInfo[2] >= $SplitBasar[7]

bsp.
$SplitInfo[2] = 7000
$SplitBasar[7] = 5000

Das Script läuft wie gewohnt weiter.
Wenn man für $SplitInfo[2] 7000 einsetzt und für $SplitInfo[7] 5000, dann wäre die Bedinung:
7000 >= 5000
In Worten "wenn 7000 größer oder gleich 5000 ist".
Die Abfrage funktioniert also.
07/03/2013 01:41 Nos134#6
@Lawliet!
Das Problem war das wenn die $SplitInfo[2] eine Stelle mehr hatte als die $SplitBasar[7] hat das Script diese nicht als größer erkannt.


Number() hat funktioniert, danke dir :)

(Die abgefragten Arrays hatten allerdings davor auch nur Zahlen :/, verwirrend)
07/03/2013 07:36 Der-Eddy#7
Quote:
Originally Posted by Nos134 View Post
@Lawliet!
Das Problem war das wenn die $SplitInfo[2] eine Stelle mehr hatte als die $SplitBasar[7] hat das Script diese nicht als größer erkannt.


Number() hat funktioniert, danke dir :)

(Die abgefragten Arrays hatten allerdings davor auch nur Zahlen :/, verwirrend)
Man kann Zahlen auch als "String" ausgeben lassen, was hier wahrscheinlich der Fall war da der die Zahlen aus einem String geholt wurden
bei ordentlichen Typenbezeichnungen von Variablen wäre das sicherlich einfacher gewesen das zu bemerken, aber wir sind ja in AutoIt
07/04/2013 17:53 Fl00d3R#8
If Slitinfo(7000) größer oder gleich Slitinfo(5000) dann mache...

Dreh den Operator um <= Dann passts.
07/04/2013 19:28 KDeluxe#9
Nach dem Motto: Keine Ahnung wie, aber momentan funktioniert es.
Dass das absolut schlecht ist braucht man wohl nicht erwähnen, aber ich mache es mal.