Dazu gibt es ein Makro: @CPUArch
Beiträge von Oscar
-
-
Nee, ich denke, bei meiner Version ist es das ReDim, was so bremst.
Könnte man vielleicht noch optimieren...
Eine Version mit Scripting.Dictionary-Objekt könnte ich mir auch noch vorstellen. -
Mist, schon wieder zu spät!

Aber ich poste trotzdem mal meine Variante:
Spoiler anzeigen
[autoit]
[/autoit]
#include <Array.au3>
Global $hFile = FileOpen(@ScriptDir & '\logdatei.log', 0)
Global $iCount = 0
If $hFile <> -1 Then
Global $aIPAdress[$iCount + 1][2]
While True
$sTmp = FileReadLine($hFile)
If @error Then ExitLoop
For $i = 0 To UBound($aIPAdress) - 1
If $sTmp = $aIPAdress[$i][0] Then
$aIPAdress[$i][1] += 1
ContinueLoop 2
EndIf
Next
$aIPAdress[$iCount][0] = $sTmp
$aIPAdress[$iCount][1] = 1
$iCount += 1
ReDim $aIPAdress[$iCount + 1][2]
WEnd
FileClose($hFile)
ReDim $aIPAdress[$iCount][2]
_ArraySort($aIPAdress, 1, 0, 0, 1)
_ArrayDisplay($aIPAdress)
EndIf
Eigentlich ohne Includes. Hier nur zum sortieren und anzeigen des Arrays. -
Versuch's doch mal mit einem Kommandozeilen-Brennprogramm. Zum Beispiel: CommandBurner
Das läßt sich doch bestimmt zu einer Zusammenarbeit mit AutoIt "überreden".
-
Nein, er hat oben die Variable $Installer mit:
[autoit]$Installer = "isobuster_all_lang.exe"
[/autoit]
belegt. Zwischen dem Befehl und den Parametern muss aber normalerweise ein Leerzeichen stehen.
Also entweder am Ende der $Installer-Variablen oder beim ShellExecute-Aufruf. -
Diese Zeile:
[autoit]ShellExecuteWait($Source & $Installer,"/SILENT /NOCANCEL /DIR=" & '"' & $InstallDir & '"')
[/autoit]
sieht für mich etwas komisch aus, weil da nach dem Anführungszeichen (vor /SILENT) kein Leerzeichen steht.
Mach doch mal in Zeile 32 eine MsgBox und schaue nach, ob die Installation bis dahin funktioniert. -
@ChaosKeks: Ja, drei Checkboxen sind gerade so die Grenze, wo das Script mit Arrays noch etwas länger wird, weil die For...Next-Schleifen jeweils drei Zeilen in Anspruch nehmen, aber wenn man mehr Checkboxen (>3) abfragen will, ist die Array-Variante deutlich besser.
Raupi : Ich weiß, dass sich Einsteiger mit Arrays immer etwas schwertun, aber ich denke gerade so ein einfaches Script ist für das Verständnis von Arrays doch eher förderlich. Gerade wenn man, wie hier, einen direkten Vergleich zu einem Script ohne Arrays hat.
-
Mit diesem Codeschnipsel kann niemand etwas anfangen. Poste doch bitte ein funktionsfähiges Beispiel.
-
Und hier eine Version mit Array:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=F:\downloads\autoit\scripts\Form1.kxf
[/autoit] [autoit][/autoit] [autoit]
$Form1_1 = GUICreate("Form1", 291, 124, 193, 125)
Global $Checkbox[4]
$Checkbox[3] = GUICtrlCreateCheckbox("Checkbox4", 128, 56, 97, 17)
$Group1 = GUICtrlCreateGroup("Group1", 16, 8, 97, 97)
$Checkbox[0] = GUICtrlCreateCheckbox("Checkbox1", 24, 32, 97, 17)
$Checkbox[1] = GUICtrlCreateCheckbox("Checkbox2", 24, 56, 97, 17)
$Checkbox[2] = GUICtrlCreateCheckbox("Checkbox3", 24, 80, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Checkbox[3]
If BitAND(GUICtrlRead($Checkbox[3]), $GUI_CHECKED) Then
For $i = 0 To 2
GUICtrlSetState($Checkbox[$i], $GUI_CHECKED)
Next
Else
For $i = 0 To 2
GUICtrlSetState($Checkbox[$i], $GUI_UNCHECKED)
Next
EndIf
Case $Checkbox[0], $Checkbox[1], $Checkbox[2]
$check = 0
For $i = 0 To 2
If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) Then $check += 1
Next
If $check = 3 Then
GUICtrlSetState($Checkbox[3], $GUI_CHECKED)
Else
GUICtrlSetState($Checkbox[3], $GUI_UNCHECKED)
EndIf
EndSwitch
WEnd -
Und so nebenbei ist PopTray auch noch ein ganz nützliches Programm. Damit lösche ich den ganzen SPAM anhand Betreff/Absender bereits auf dem Server. Entweder per Regel oder von Hand anhand der Headerzeilen.
Ist also nicht nur für obige Aufgabe geeignet.
-
Beide Dateien in jeweils ein Array einlesen (_FileReadToArray) und dann in einer For...Next-Schleife alle Array-Elemente durchgehen und testen, ob die Zahlen aus dem "2.txt"-Array in dem "1.txt"-Array enthalten sind (StringInStr). Wenn ja, dann die Zeile löschen.
Abschließend das Array wieder abspeichern (_FileWriteFromArray). -
Wenn Du "SciTE4AutoIt3" installiert hast, kannst Du auch [STRG] + [1] drücken und dort noch weitere Einstellungen vornehmen.
-
Warum so kompliziert?
Dein Kumpel soll sich PopTray installieren und Du schickst ihm dann eine EMail mit einem bestimmten Betreff.
Bei PopTray kann man eine einfache Regel erstellen und schon öffnet sich ein Fenster und/oder spielt ein Sound, wenn er eine EMail von Dir bekommt. -
Eine String-Variable kann bei AutoIt bis zu 2147483647 Zeichen enthalten. Dazu muss man nichts spezielles machen.
Die Einschränkung von der Du hier sprichst, bezieht sich auf das Edit-Control. Wenn Du mehr als 30.000 Zeichen dort anzeigen lassen willst, musst Du mit GUICtrlSetLimit einen anderen Wert eintragen.
-
hilft mir ma einer? Warum is in der neusten version beim starten des hauptfensters die liste so komisch ( man sieht nix, man muss erst die items anklicken oder ein anderes tab auswählen und zurrück wecheln) kaaaaan mir einer helfen?
Also, das finde ich schon ein starkes Stück!
Nach knapp zwei Stunden rumspammen und nach Hilfe schreien und dann noch nichtmal das Script posten. -
Hallo Alina!
Enthält Deine Datei keinerlei Zeilenumbrüche?Wenn doch, dann kannst Du die anhand des Zeilenumbruchs aufsplitten und in ein Array übernehmen:
[autoit]
[/autoit]
#include <Array.au3>
$sData = FileRead(@ScriptDir & '\daten.txt')
$array = StringSplit($sData, @CRLF, 3)
_ArrayDisplay($array)Wenn die ganzen Daten tatsächlich hintereinander stehen (ohne @CRLF), dann aufsplitten anhand der 37 Zeichen:
[autoit]
[/autoit]
#include <Array.au3>
$sData = FileRead(@ScriptDir & '\daten.txt')
$array = StringRegExp($sData, '.{37}', 3)
_ArrayDisplay($array)Zum Thema "keine Datei, Array im Script": Dazu müsstest Du das Array irgendwo am Anfang (vor der Benutzung) deklarieren und ihm die Werte zuweisen:
[autoit]
[/autoit]
Global $array[37] = ['MGZIGNYTTXTTNODKPOLUUVFTPTOABUFIPEESF', 'TOWPXZRXOPNRTRMEIBWGXJWARVNXWYRXQFIJG', 'FIOYOYHVSCAFVRUZMSJUORHZVFFUOIFTFQSGP', 'SWQGUFFEXMHPQMYDCQSIKALDKWERGGOMSXUQV', 'QRJIHGFLWRGVHKGISANGUHTKTVHPJDCBIGEMN', 'YSQIPAGFZSDUQRDTONEMGWBGOYZITHGZFIOLN', 'MRTEKOERVUMYZCJUQFHXISPBVOKBEQZEKHZAO', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
So bräuchtest Du keine Datei. Ist allerdings recht mühsam das alles einzutragen. -
Ein auslesen direkt auf dem Server funktioniert nicht (weder HTTP noch FTP)!
Du musst die Inidatei downloaden und dann mit IniRead auslesen. -
Bei Nachrichten von einem User = Username und in Klammern dahinter die Anzahl der Nachrichten
oder halt ein Listview mit mehreren Spalten. -
Server = Beispielscript zu TCPRecv
Client = Beispielscript zu TCPSend
-
Mich würde nur noch Interessieren was die Pro's vorschlagen welche Version (siehe vorletzter Post) denn jetzt der "richtige"/bessere Ansatz ist.
Zum abspielen von solchen kurzen (Windows-)Sounds würde ich immer SoundPlay benutzen.
Allerdings würde ich das etwas ändern:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Misc.au3>
#include <Sound.au3>$dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
If WinActive("MAGIX Video") Then
If _IsPressed("A3", $dll) Then
$pos = MouseGetPos()
MouseClick("left", 1595, 390, 1, 0)
MouseMove($pos[0], $pos[1], 0)
SoundPlay(@WindowsDir & "\media\Windows-Standard.wav", 1)
EndIf
EndIf
Sleep(50)
WEnd
Also mit ",1" am Ende, sodass SoundPlay auf das Abspielende wartet. Das spart Dir in diesem Fall das anschließende Sleep.