php Code in AutoIt verwandeln

  • Es wird die größte zusammenhängende Buchstabensuppe zurückgegeben.

    Folgendes Zitat in AutoIt umwandeln:
    http://handels-gilde.net/trash/zahlentest.php

    Einmal editiert, zuletzt von Franzi (30. November 2009 um 23:38)

  • Den Thread bitte in den Hilfeteil verschieben.

    Mein Problem:

    [autoit]

    $v = 12345678901234567890
    For $i = 999999 To 999 Step -1
    $result1 = StringInStr($v, $i)
    $result2 = StringInStr($v, $i, "", 2)
    If $result1 <> 0 And $result2 <> 0 And $result2 > StringLen($i) + $result1 Then
    ConsoleWrite($i &@CRLF)
    EndIf
    Next

    [/autoit]


    [autoit]

    $v = 1234567890123456789
    For $i = 999999 To 999 Step -1
    $result1 = StringInStr($v, $i)
    $result2 = StringInStr($v, $i, "", 2)
    If $result1 <> 0 And $result2 <> 0 And $result2 > StringLen($i) + $result1 Then
    ConsoleWrite($i &@CRLF)
    EndIf
    Next

    [/autoit]

    Bsp1 geht nicht, Bsp2 geht.
    Der Unterschhied ist eine Zahl mehr.
    Wie kann ich dieses Limit umgehen? Woran lieg dieses Limit?
    Aufgabenstellungen nochmal: Finde die größte Zahl, die zweimal in einer Zahl vorkommt.

    Dank Andys Hilfe ist das Problem geklärt.
    Man muss $v="sehrlangeZahl" schreiben. Die "" waren also entscheidend.

    Einmal editiert, zuletzt von Franzi (30. November 2009 um 23:38)

  • Diesmal lag es wirklich nur an dem "falschen" Datentypen.
    Ein String kann 2147483647 Zeichen aufnehmen, das ist schon mal eine ganze Menge.
    Ein Integer (mit Vorzeichen) hat einen Wertebereich von +-268435457 (0xEFFFFFFF so wars doch, jedenfalls bei 32Bit?), das sind gerade mal 9 Zeichen....

    Bei Franzi´s Script sieht man auch sehr schön die interne Umwandlung der Datentypen. AutoIt findet garnichts dabei, eine Integerzahl als String zu behandeln ^^
    Wird aus dem $v aber ein string, dann kann dieser nun ellenlang sein

    [autoit]

    $v = "123456789012345678999899999999988888888889999999992893756928375692873562893756289356"
    For $i = 999999 To 999 Step -1
    $result1 = StringInStr($v, $i)
    $result2 = StringInStr($v, $i, "", 2)
    If $result1 <> 0 And $result2 <> 0 And $result2 > StringLen($i) + $result1 Then
    ConsoleWrite($i &@CRLF)
    EndIf
    Next

    [/autoit]