Das wird nicht so einfach funktionieren, da Int64 = signed integer (also vorzeichenbehaftet).
Da musst Du wohl auf die BigInt-UDF (Suche) ausweichen.
Beiträge von Oscar
-
-
Ich halte den Ansatz bereits für verkehrt. Wenn Du einen Vokabeltrainer schreiben möchtest, dann würde ich ein 2D-Array benutzen (1. Element = deutsch, 2. Element = Fremdsprache).
Das spart Dir diese If...Then...ElseIf-"Wüste". Das kann doch keiner mehr nachvollziehen. Vor allem, wenn Du das noch erweitern willst.Beschäftige Dich erstmal eingehend mit Arrays (Tutorial von BugFix), dann wird vieles sehr viel einfacher.

-
Bitte mal richtig formatiert posten!
Beim erstellen am besten die Quellcode-Ansicht benutzen. -
BugFix, Dein Pattern reicht nicht ganz.
Hier mal einige (wirklich existierende) Adressen:
Elsternhag 29/1
Kleestr. 8/9
Kirchröder Str. 89/90
Nobelring 10-12
Anna-von-Borries-Str. 1-7 -
Eine Version mit Dictionary-Object:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
Dim $aSource[4][2] = [["Peter", "Gürtel"],["Peter", "Schuh"],["Maria", "Schnalle"],["Peter", "Handschuh"]]$oDictionary = ObjCreate('Scripting.Dictionary') ; jetzt standardmäßig im Binärmode
[/autoit]
$oDictionary.CompareMode = 1 ; den Textmode setzen
For $i = 0 To UBound($aSource, 1) - 1
If Not $oDictionary.Exists($aSource[$i][0]) Then
$oDictionary.Add($aSource[$i][0], $aSource[$i][1])
Else
$oDictionary.Item($aSource[$i][0]) = $oDictionary.Item($aSource[$i][0]) & ', ' & $aSource[$i][1]
EndIf
Next
Dim $aOut[$oDictionary.Count][2], $i = 0
For $strKey in $oDictionary.Keys
$aOut[$i][0] = $strKey
$aOut[$i][1] = $oDictionary.Item($strKey)
$i += 1
Next
_ArrayDisplay($aOut) -
Dafür braucht man auch kein Switch. Genau genommen braucht man nur 20 Zeilen:
Spoiler anzeigen
[autoit]
[/autoit]
Dim $aPics[2] = ['Button aus.jpg', 'Button an.jpg'], $ahTime[3][6]
$hGui = GUICreate('Binäruhr', 380, 100)
For $i = 0 To 2
For $j = 0 To 5
$ahTime[$i][$j] = GUICtrlCreatePic(@ScriptDir & '\Button aus.jpg' , 20 + $j * 15 + $i * 120, 40, 15, 14)
Next
Next
_ActTime()
GUISetState()
AdlibRegister('_ActTime', 1000)
Do
Until GUIGetMsg() = -3
Func _ActTime()
Local $aActTime[3] = [@HOUR, @MIN, @SEC]
For $i = 0 To 2
For $j = 0 To 5
GUICtrlSetImage($ahTime[$i][5 - $j], @ScriptDir & '\' & $aPics[BitAND($aActTime[$i], 2 ^ $j) = 2 ^ $j])
Next
Next
EndFunc -
Mit einem kleinen Trick sind die Zahlen zufällig, aber jeweils nur einmal vorkommend:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$iAnzahl = 20 ; So viele Zufallszahlen sollen erstellt werden
$iStart = 1 ; Startwert der ZufallszahlenDim $aZufallszahlen[$iAnzahl] ; Array mit Zufallszahlen deklarieren
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To UBound($aZufallszahlen) - 1 ; Array mit den Zahlen füllen
[/autoit] [autoit][/autoit] [autoit]
$aZufallszahlen[$i] = $iStart + $i
NextFor $i = 0 To UBound($aZufallszahlen) - 1 ; ab hier jetzt die Zufallszahlen ausgeben
[/autoit]
$iZufall = Random(0, UBound($aZufallszahlen) - 1 - $i, 1)
ConsoleWrite($i + 1 & '. Zufallszahl = ' & $aZufallszahlen[$iZufall] & @CR)
$aZufallszahlen[$iZufall] = $aZufallszahlen[UBound($aZufallszahlen) - 1 - $i]
Next -
-
Großvater hat es ja bereits gelöst, aber ich wollte trotzdem mal meine Lösung (mit der Größe des TAB-Controls) zeigen:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>_IEErrorHandlerRegister()
[/autoit] [autoit][/autoit] [autoit]Dim $oIE[1]
[/autoit] [autoit][/autoit] [autoit]
$oIE[0] = _IECreateEmbedded()
Dim $Tab[1]$gui = GUICreate("Browser", 800, 600, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX))
[/autoit] [autoit][/autoit] [autoit]
$NewTab = GUICtrlCreateButton("Neuer Tab", 20, 20, 80, 25)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$input = GUICtrlCreateInput("", 120, 20, 400, 25)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$TabParent = GUICtrlCreateTab(20, 60, 760, 520)
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
$Tab[0] = GUICtrlCreateTabItem("Google")
GUICtrlCreateObj($oIE[0], 40, 100, 700, 460)
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
GUICtrlCreateTabItem("") ; end tabitem definitionGUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_IENavigate($oIE[0], "http://www.google.de")
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($input, _IEPropertyGet($oIE[0], "locationurl"))While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $NewTab
$iIE = UBound($oIE)
_ArrayAdd($Tab, GUICtrlCreateTabItem("Tab" & $iIE))
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
_ArrayAdd($oIE, _IECreateEmbedded())
$aPos = ControlGetPos($gui, '', $TabParent) ; Größe des TAB-Controls
GUICtrlCreateObj($oIE[$iIE], 40 + ($aPos[0] - 20), 100 + ($aPos[1] - 60), 700 + ($aPos[2] - 760), 460 + ($aPos[3] - 520))
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
GUICtrlCreateTabItem("") ; end tabitem definition
GUISwitch($gui, $Tab[UBound($Tab)-1]) ; umschalten auf den neuen Tab
_IENavigate($oIE[$iIE], "http://www.google.de")
Case $input
$selected = GUICtrlRead($TabParent)
_IENavigate($oIE[$selected], GUICtrlRead($input))
WinSetTitle($gui, "", _IEPropertyGet($oIE[$selected], "locationname"))Case $TabParent
[/autoit]
$selected = GUICtrlRead($TabParent)
WinSetTitle($gui, "", _IEPropertyGet($oIE[$selected], "locationname"))
GUICtrlSetData($input, _IEPropertyGet($oIE[$selected], "locationurl"))
EndSwitch
WEnd -
So:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <WindowsConstants.au3>_IEErrorHandlerRegister()
[/autoit] [autoit][/autoit] [autoit]Dim $oIE[1]
[/autoit] [autoit][/autoit] [autoit]
$oIE[0] = _IECreateEmbedded()
Dim $Tab[1]$gui = GUICreate("Browser", 800, 600, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX))
[/autoit] [autoit][/autoit] [autoit]
$NewTab = GUICtrlCreateButton("Neuer Tab", 20, 20, 80, 25)
$input = GUICtrlCreateInput("", 120, 20, 400, 25)
$TabParent = GUICtrlCreateTab(20, 60, 760, 520)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
$Tab[0] = GUICtrlCreateTabItem("Google")
GUICtrlCreateObj($oIE[0], 40, 100, 700, 460)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
GUICtrlCreateTabItem("") ; end tabitem definitionGUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_IENavigate($oIE[0], "http://www.google.de")
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($input, _IEPropertyGet($oIE[0], "locationurl"))While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $NewTab
$iIE = UBound($oIE)
_ArrayAdd($Tab, GUICtrlCreateTabItem("Tab" & $iIE))
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
_ArrayAdd($oIE, _IECreateEmbedded())
GUICtrlCreateObj($oIE[$iIE], 40, 100, 700, 460)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
_IENavigate($oIE[$iIE], "http://www.google.de")
Case $input
$selected = GUICtrlRead($TabParent)
_IENavigate($oIE[$selected], GUICtrlRead($input))
WinSetTitle($gui, "", _IEPropertyGet($oIE[$selected], "locationname"))Case $TabParent
[/autoit]
$selected = GUICtrlRead($TabParent)
WinSetTitle($gui, "", _IEPropertyGet($oIE[$selected], "locationname"))
GUICtrlSetData($input, _IEPropertyGet($oIE[$selected], "locationurl"))
EndSwitch
WEnd -
Meinst Du so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <IE.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>_IEErrorHandlerRegister()
[/autoit] [autoit][/autoit] [autoit]Dim $oIE[1]
[/autoit] [autoit][/autoit] [autoit]
$oIE[0] = _IECreateEmbedded()
Dim $Tab[1]$gui = GUICreate("Browser", 800, 600, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$TabParent = GUICtrlCreateTab(20, 60, 760, 520)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
$Tab[0] = GUICtrlCreateTabItem("Google")
GUICtrlCreateObj($oIE[0], 40, 100, 700, 460)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)
GUICtrlCreateTabItem("")
GUISetState()_IENavigate($oIE[0], "http://www.google.de")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd -
Dein Skript wartet aber nur darauf, dass überhaupt irgendein Wechselmedium angesteckt wird.
Das kann auch eine beliebige externe Festplatte sein. Wenn Dir das ausreicht... -
Ja, geht auch mit Thunderbird:
Spoiler anzeigen
[autoit]
[/autoit]
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE'
If @OSArch = 'X64' Then $sRegKey &= '\Wow6432Node'
$sRegKey &= '\Mozilla\Mozilla Thunderbird'
$sInstallVersion = RegRead($sRegKey, 'CurrentVersion')
If @error Then $sInstallVersion = '0.0.0'
$sInstallVersion = StringRegExpReplace($sInstallVersion, '( \(.+\))', '')
ConsoleWrite('Installierte Version = ' & $sInstallVersion & @CR)
$sThunderbirdSource = BinaryToString(InetRead('http://www.mozilla.com/en-US/thunderbird/all.html', 1))
$sNewestVersion = StringRegExpReplace($sThunderbirdSource, '(?s).+<tr id="de".+?<td class="curVersion" >(.+?)</td>.+', '$1')
ConsoleWrite('Neueste Version = ' & $sNewestVersion & @CR) -
Alles Gute nachträglich (wir brauchen unbedingt wieder eine Geburtstagsliste) zum Geburtstag!
Pssst an alle anderen: Er hatte gestern Geburtstag.
-
Verstehe ich nicht. Bei mir funktioniert das Skript sowohl unter WindowsXP (32 Bit) als auch unter Windows7 (64 Bit).
Kannst Du mal mit RegEdit nachschauen, was bei Dir da in der Registry eingetragen ist?
-
Ist das so einfach genug:
Spoiler anzeigen
[autoit]
[/autoit]
$sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE'
If @OSArch = 'X64' Then $sRegKey &= '\Wow6432Node'
$sRegKey &= '\Mozilla\Mozilla Firefox'
$sInstallVersion = RegRead($sRegKey, 'CurrentVersion')
If @error Then $sInstallVersion = '0.0.0'
$sInstallVersion = StringRegExpReplace($sInstallVersion, '( \(.+\))', '')
ConsoleWrite('Installierte Version = ' & $sInstallVersion & @CR)
$sFirefoxSource = BinaryToString(InetRead('http://www.mozilla.com/en-US/firefox/all.html', 1))
$sNewestVersion = StringRegExpReplace($sFirefoxSource, '(?s).+<tr id="de".+?<td class="curVersion" >(.+?)</td>.+', '$1')
ConsoleWrite('Neueste Version = ' & $sNewestVersion & @CR) -
Ich habe mal eine Desktopsperre per USB-Stick geschrieben.
Da solltest Du fündig werden.
-
Mir würde da jetzt eine rekursive Funktion einfallen.
Jede öffnende Klammer ruft die Funktion erneut auf, der Term bis zur schliessenden Klammer wird gelesen, ausgerechnet und per Return zurückgegeben.
Nach der Rückgabe wird das ausgewertete Klammernpaar entfernt und durch den Returnwert ersetzt. So müsste sich das eigentlich lösen lassen.
Hab jetzt aber keine Zeit, die Funktion zu schreiben. Ist also erstmal nur theoretisch... -
Mal noch ein anderer Vorschlag:
Statt die aktuelle Systemzeit für einen Vergleich auszulesen (die ja leicht manipulierbar ist), könntest Du die Zeit des letzten Systemstarts benutzen.
So müsste Otto-Normaluser schon die Systemzeit verstellen, einen Neustart machen und dann Dein Programm starten. -
Hatte ich auch zuerst gedacht, aber lass deine Funktion mal mit so einem Teststring laufen:
"2 245 245 245"Als Ergebnis erhälst du 2, die ja nicht wirklich doppelt vorkommt. Nur als Teil einer anderen Zahl.
Ah, verdammt! Hast recht!
Das funktioniert nur bei gleichlangen Zahlen oder man müsste das Array sortieren und die längsten Zahlen zuerst bearbeiten, aber das ist viel zu umständlich und langsam.@Großvater: Das ist natürlich cool.
