Moment
Ich glaube ich habe irgend was hier nicht so ganz verstanden... Will mir der erste Post jetzt also sagen, dass das Ausführen der Funktion Sleep() mit dem Parameter 1000 für eine Pause von 1000ms auf einem 'schelleren' Rechner nun nicht 1000ms lang dauert??? Worin liegt dann der Sinn der Funktion Sleep() wenn sie nicht auf jedem Rechner, egal wie schnell oder langsam, genau die gleiche Pause bewirkt?! Also ich weiß ja nicht wie Sleep() intern funktioniert, aber ich bin bisher eigentlich davon ausgegangen, dass 'in der Kiste' eine Art 'Taktgeber' existiert, welcher dann die Zeit vorgibt??! Naja vielleicht hab ich mich auch einfach mal wieder 'verdacht'...
Beiträge von BinDannMalWeg
-
-
Hey wenn bei den 1375 bereits hier vorgestellten Chats keinen findest, der deine Anforderungen erfüllt, würde ich mich anbieten dir deinen zu erstellen... Jaaa ich hab gerade extremst Langeweile :pinch:
-
Hey ich hab mal ein paar Fragen und Anregungen...
1.) Könntest du vielleicht noch die Dateien an deinen ersten Post anhängen, die man braucht um das Script testen zu können?
2.) Wäre es praktisch wenn du, Autoit-Quellcode immer in die Autoit-Tags packen würdest, damit man es ein bisschen besser lesen kann...
3.) Bitte wer hat das programmiert??? Ich will jetzt nicht sagen, dass das Script schlecht ist aber sagen wir mal es ist an einigen Stellen 'etwas umständlich' Man muss sich ja nur mal die Funktion IsIntTyp() anschauen... :wacko:Naja aber solange es das tut was du willst, spielt der Code ja keine Rolle...
-
Hey, ich weiß ja nicht genau wo dein Problemchen liegt aber ich glaube du meinst das so:
Spoiler anzeigen
[autoit]$aTitel = "Hello World"
[/autoit] [autoit][/autoit] [autoit]
$aMessager = "Das Wetter ist Heute..."
$aAW = "Megatron"RunWait(@COMSPEC&' /c "C:\growlnotify\growlnotify.com /a:'&$aAW&' /t:"'&$aTitel&'" "'&$aMessager&'"')
[/autoit]oder?!
-
Ja das siehst du richtig... Aber wenn du FileInstall verwendest gibt es einen entscheidenden Nachteil, den Dietmar nicht bedacht hat: egal wo ein FileInstall() Befehl im Script steht er wird immer zu Beginn des Scripts ausgeführt! Man kann die Datei nicht erst in einer Bedingung auspacken lassen. Deshalb ist die Lösung mit FileExist() und FileWrite() oder IniWrite() besser.
-
Die einzige Möglichkeit wie du das Java-GUI in deine Autoit-GUI 'integrieren' könntest, ist das Java Programm entweder komplett nach zu programmieren oder sofern dass möglich ist (ich kenne mich mit Java nicht besonders aus) einfach das Java-Fenster zu verstecken und dann den Inhalt auszulesen und Befehle dirket an das Fenster zu senden...
-
Hey,
ich glaube du hast bei deinen Überlegungen eine Tatsache nicht bedacht: Wenn ein Benutzer dein Programm auf Englisch, statt auf Deutsch benutzt, dann wird er seine in Windows eingestellte Sprache ja wohl oder übel nicht auf Deutsch haben oder? Die Beschriftung der Buttons wird von Windows selbst übernommen, das kannst du auch selbst überprüfen, wenn du deine Systemsprache auf englisch stellst...
LG
Christoph
Edit:
name22 war schneller...
Aber warum die Sprache der Buttons anpassen wenn der Benutzer die Sprache in seinem OS doch selbst eingestellt hat???! -
Warum sollte es Probleme mit dem Pfad geben? Entweder du erstellst sie direkt im selben Verzeichnis in dem auch dein Script liegt oder du benutzt die Autoit-Makros?
[autoit]; Benutzer-Ordner:
[/autoit]
FileWrite(@UserProfileDir&'\firstrun.txt','')
; Aktueller Ordner:
FileWrite(@ScriptDir&'\firstrun.txt','')
; Temp-Ordner:
FileWrite(@TempDir&'\firstrun.txt','')
LG
Christoph -
Hmm also wenn du meine Permutations-Funktion verwendest, kannst du ja alle Kombinationen bis zum Arraylimit ermitteln lassen, weil meine Funktion ja rekursiv immer nur die nächste Kombination ermittelt... Wenn du dann ein Array 'voll' hast kannst du ja alle Dubletten aussortieren und den 'Rest' in ein 'Ergebnis-Array' schreiben. Das musst du dann nur so oft wiederholen bis du alle Kombinationen durch hast... Am besten wäre es wenn beim Dubletten-Aussortieren auch das Ergebnis-Array miteinbezogen wird.
LG
Christoph -
Polarfrau ist das mit dem Speil nur ein Beispiel oder ist das der richtige Verwendungszweck?! Wenn man bei dem Beispiel? mit dem Spiel bleibt, nehme ich mal an, dass jedes dieser 'Items' seine Auswirkungen nach sich zieht. Wenn du am Ende nur die Attribute überprüfen willst, könnte man doch einfach eine ganz normale Permutation benutzen... Dies lässt sich einfach an diesem Beispiel erklären:
Spoiler anzeigen
Wir haben 3 Items:
Item A verändert unser Attribut um +2
Item B verändert das Attribut um +5
Item C verändert das Attribut um +10
Im laufe der Permutation treten jetzt zwar 'doppelte' Elemente in den Kombinationen auf, aber dies macht nichts:
A+B+C = 2+5+10 = +17
C+B+A = 10+5+2 = +17
Also ist es im Endeffekt egal, welche Kombination gewählt wird...?!LG
Christoph -
So hab mich heute mal dran gesetzt und hab den neuen Kern zu ende geschrieben...
Momentan sieht man zwar noch nicht viel, von den Neuerungen, aber im Hintergrund hat sich viel geändert.
Im Anhang könnt ihr jetzt die Version 1.1 finden...LG
Christoph -
Hey,
ich habe dein Problem zwar nicht ganz verstanden, aber ich habe vor einigen Monaten mal einen Permutations-Algorithmus geschrieben. Bin mir noch sicher ob es das ist was du suchst, aber vielleicht hilft dir mein Script ja...Spoiler anzeigen
[autoit]#region Array
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Dim $ABC[63]
$ABC[0] = 62
$ABC[1] = "a"
$ABC[2] = "b"
$ABC[3] = "c"
$ABC[4] = "d"
$ABC[5] = "e"
$ABC[6] = "f"
$ABC[7] = "g"
$ABC[8] = "h"
$ABC[9] = "i"
$ABC[10] = "j"
$ABC[11] = "k"
$ABC[12] = "l"
$ABC[13] = "m"
$ABC[14] = "n"
$ABC[15] = "o"
$ABC[16] = "p"
$ABC[17] = "q"
$ABC[18] = "r"
$ABC[19] = "s"
$ABC[20] = "t"
$ABC[21] = "u"
$ABC[22] = "v"
$ABC[23] = "w"
$ABC[24] = "x"
$ABC[25] = "y"
$ABC[26] = "z"
$ABC[27] = "A"
$ABC[28] = "B"
$ABC[29] = "C"
$ABC[30] = "D"
$ABC[31] = "E"
$ABC[32] = "F"
$ABC[33] = "G"
$ABC[34] = "H"
$ABC[35] = "I"
$ABC[36] = "J"
$ABC[37] = "K"
$ABC[38] = "L"
$ABC[39] = "M"
$ABC[40] = "N"
$ABC[41] = "O"
$ABC[42] = "P"
$ABC[43] = "Q"
$ABC[44] = "R"
$ABC[45] = "S"
$ABC[46] = "T"
$ABC[47] = "U"
$ABC[48] = "V"
$ABC[49] = "W"
$ABC[50] = "X"
$ABC[51] = "Y"
$ABC[52] = "Z"
$ABC[53] = "0"
$ABC[54] = "1"
$ABC[55] = "2"
$ABC[56] = "3"
$ABC[57] = "4"
$ABC[58] = "5"
$ABC[59] = "6"
$ABC[60] = "7"
$ABC[61] = "8"
$ABC[62] = "9"
#endregion#region Test-Script
[/autoit] [autoit][/autoit] [autoit]
If FileExists("next1000.txt") Then FileDelete("next1000.txt")
$Last = ""
For $count = 1 To 1000
$back = _Next($ABC,$Last)
$Last = $back
FileWrite("next1000.txt",$back&@CRLF)
ToolTip($count&@CRLF&$Last,0,0)
Next
ShellExecute("next1000.txt")
Exit
#endregionFunc _Next($Array,$String)
[/autoit]
$Return = ""
If $String <> "" Then
$Len = StringLen($String)
For $i = $Len To 1 Step -1
$Char = StringMid($String,$i,1)
$Numb = ""
For $y = 1 To $Array[0]
If $Char == $Array[$y] Then $Numb = $y
Next
If $Numb = "" Then Exit
If $Char <> $Array[$Array[0]] Then
$Return = StringLeft($String,$i - 1) &$Array[$Numb + 1] &$Return
ExitLoop
Else
$Return = $Array[1] &$Return
If $i = 1 Then
$Return = $Array[1] &$Return
ExitLoop
EndIf
EndIf
Next
Else
$Return = $Array[1]
EndIf
Return $Return
EndFuncLG
Christoph -
@Marsi: Ja du hast Recht ich werde die Bildgrößen auf 32*32 anpassen... Zu den Grafiken von dir kann ich nur eins sagen: Bombastisch Also wenn du Lust hast kannst du gerne schönere Grafiken für die Version 2.0 beisteuern. Ich wollte sowieso noch nachfragen ob es hier im Forum jemanden gibt der Lust und Zeit hat, schönere Grafiken zu designen, denn meine 'DesignerSkills' sind ja eher bescheiden...
LG
Christoph -
stayawayknight: Genau deswegen das neue Map-Format Bei dem wird pro Feld nur noch einmal eingelesen und bereits eingelesene werden gespeichert solange der Spieler sich noch in der Nähe aufhält usw. Außerdem werden alle verschiedenen Charakter/Overlays/Items und ihre Beziehungen schon beim Starten des Scripts eingelesen und in Arrays gelagert... Außerdem wird sich noch einiges ändern und neue Dinge werden dazukommen.... = Alles wird performater
LG
Christoph -
Versuche bitte mal deine 2 Dateien nicht bei jedem Schleifendurchlauf zu öffnen und zu schließen!
Dann dürfte dein Script seeeehr vieeel schnelle durch rattern...LG
Christoph -
Danke ich finds toll das euch mein Script gefällt... Naja als ich es gepostet hab und niemand ein Kommentar abgegeben hat hab ich mir halt meinen Teil dazu gedacht... Hatte damals eigentlich auch schon damit begonnen den Kern noch mal neu zu schreiben, um die Dateizugriffe zu minimieren und ein komplett neues Mapsystem einzubauen...(Map in alle Richtungen erweiterbar und so groß wie man will ohne Lags... ) Aber hab dann irgendwie die Lust verloren.
Momentan hab ich mit meinem Abschluss eingiges zu tun aber zur Ablenkung werde ich mich vielleicht mal daran setzen die Version 2.0 zu Ende zu schreiben....LG
Christoph -
Leichenschänder!
Schau mal auf das Datum... -
-
Hab aus Langeweile mal ne richtige Funktion draus gemacht...
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>$Array = ProcessList()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($Array,'Test - _ArrayDisplay()',-1,0,'','|','')
Dim $Columns[3] = [100,400,100]
_ArrayDisplayEx($Array,'Test - _ArrayDisplayEx()',-1,0,'','|','',625,400,$Columns)
ExitFunc _ArrayDisplayEx(Const ByRef $avArray, $sTitle = "Array: ListView Display", $iItemLimit = -1, $iTranspose = 0, $sSeparator = "", $sReplace = "|", $sHeader = "", $Width_Parameter = 275,$Height_Parameter = 480, $WidthColumns_Parameter = '')
[/autoit] [autoit][/autoit] [autoit]
If Not IsArray($avArray) Then Return SetError(1, 0, 0)
; Dimension checking
Local $iDimension = UBound($avArray, 0), $iUBound = UBound($avArray, 1) - 1, $iSubMax = UBound($avArray, 2) - 1
If $iDimension > 2 Then Return SetError(2, 0, 0); Separator handling
[/autoit] [autoit][/autoit] [autoit]
If $sSeparator = "" Then $sSeparator = Chr(124); Check the separator to make sure it's not used literally in the array
[/autoit] [autoit][/autoit] [autoit]
If _ArraySearch($avArray, $sSeparator, 0, 0, 0, 1) <> -1 Then
For $x = 1 To 255
If $x >= 32 And $x <= 127 Then ContinueLoop
Local $sFind = _ArraySearch($avArray, Chr($x), 0, 0, 0, 1)
If $sFind = -1 Then
$sSeparator = Chr($x)
ExitLoop
EndIf
Next
EndIf; Declare variables
[/autoit] [autoit][/autoit] [autoit]
Local $vTmp, $iBuffer = 4094 ; AutoIt max item size
Local $iColLimit = 250
Local $iOnEventMode = Opt("GUIOnEventMode", 0), $sDataSeparatorChar = Opt("GUIDataSeparatorChar", $sSeparator); Swap dimensions if transposing
[/autoit] [autoit][/autoit] [autoit]
If $iSubMax < 0 Then $iSubMax = 0
If $iTranspose Then
$vTmp = $iUBound
$iUBound = $iSubMax
$iSubMax = $vTmp
EndIf; Set limits for dimensions
[/autoit] [autoit][/autoit] [autoit]
If $iSubMax > $iColLimit Then $iSubMax = $iColLimit
If $iItemLimit < 1 Then $iItemLimit = $iUBound
If $iUBound > $iItemLimit Then $iUBound = $iItemLimit; Set header up
[/autoit] [autoit][/autoit] [autoit]
If $sHeader = "" Then
$sHeader = "Row " ; blanks added to adjust column size for big number of rows
For $i = 0 To $iSubMax
$sHeader &= $sSeparator & "Col " & $i
Next
EndIf; Convert array into text for listview
[/autoit] [autoit][/autoit] [autoit]
Local $avArrayText[$iUBound + 1]
For $i = 0 To $iUBound
$avArrayText[$i] = "[" & $i & "]"
For $j = 0 To $iSubMax
; Get current item
If $iDimension = 1 Then
If $iTranspose Then
$vTmp = $avArray[$j]
Else
$vTmp = $avArray[$i]
EndIf
Else
If $iTranspose Then
$vTmp = $avArray[$j][$i]
Else
$vTmp = $avArray[$i][$j]
EndIf
EndIf; Add to text array
[/autoit] [autoit][/autoit] [autoit]
$vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1); Set max buffer size
[/autoit] [autoit][/autoit] [autoit]
If StringLen($vTmp) > $iBuffer Then $vTmp = StringLeft($vTmp, $iBuffer)$avArrayText[$i] &= $sSeparator & $vTmp
[/autoit] [autoit][/autoit] [autoit]
Next
Next; GUI Constants
[/autoit] [autoit][/autoit] [autoit]
Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 0x66
Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 0x40
Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 0x0200
Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 0x2
Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 0x4
Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (0x1000 + 29)
Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (0x1000 + 4)
Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (0x1000 + 44)
Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54)
Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 0x20
Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 0x1
Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 0x8
Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 0x0200
Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 0x00010000
Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 0x00020000
Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 0x00040000; Set interface up
[/autoit] [autoit][/autoit] [autoit]
Local $iWidth = $Width_Parameter, $iHeight = $Height_Parameter
Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
Local $aiGUISize = WinGetClientSize($hGUI)
Local $hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
Local $hCopy = GUICtrlCreateButton("Copy Selected", 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20)
GUICtrlSetResizing($hListView, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
GUICtrlSetResizing($hCopy, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
If IsArray($WidthColumns_Parameter) Then
For $i = 0 To UBound($WidthColumns_Parameter)-1
_GUICtrlListView_SetColumnWidth($hListView,$i,$WidthColumns_Parameter[$i])
Next
EndIf
; Fill listview
For $i = 0 To $iUBound
GUICtrlCreateListViewItem($avArrayText[$i], $hListView)
Next; adjust window width
[/autoit] [autoit][/autoit] [autoit]
$iWidth = 0
For $i = 0 To $iSubMax + 1
$iWidth += GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0)
Next
If $iWidth < 250 Then $iWidth = 230
$iWidth += 20If $iWidth > @DesktopWidth Then $iWidth = @DesktopWidth - 100
[/autoit] [autoit][/autoit] [autoit]; Show dialog
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $hGUI)While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
ExitLoopCase $hCopy
[/autoit] [autoit][/autoit] [autoit]
Local $sClip = ""; Get selected indices [ _GUICtrlListView_GetSelectedIndices($hListView, True) ]
[/autoit] [autoit][/autoit] [autoit]
Local $aiCurItems[1] = [0]
For $i = 0 To GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
If GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $i, 0x2) Then
$aiCurItems[0] += 1
ReDim $aiCurItems[$aiCurItems[0] + 1]
$aiCurItems[$aiCurItems[0]] = $i
EndIf
Next; Generate clipboard text
[/autoit] [autoit][/autoit] [autoit]
If Not $aiCurItems[0] Then
For $sItem In $avArrayText
$sClip &= $sItem & @CRLF
Next
Else
For $i = 1 To UBound($aiCurItems) - 1
$sClip &= $avArrayText[$aiCurItems[$i]] & @CRLF
Next
EndIf
ClipPut($sClip)
EndSwitch
WEnd
GUIDelete($hGUI)Opt("GUIOnEventMode", $iOnEventMode)
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIDataSeparatorChar", $sDataSeparatorChar)Return 1
[/autoit]
EndFunc ;==>_ArrayDisplay
LG
Christoph -
name22:
und wo ist jetzt der Unterschied zu meinem Script?