hmm... kann sein, aber warum läuft das dann auch langsam wenn es geöffnet ist ?
für die schritte die das .au3 programm in 1sek macht, braucht die exe 5-10 sek...
Beiträge von Lanealine
-
-
hey,
ich habe ein problem mit einem autoit programm, wenn ich das programm über autoit und "GO"(F5) starte, startet das programm direkt und läuft flüssig.
wenn ich allerdings eine .exe von dem programm erstelle (F7) und diese exe starte, dauert es 20sek. bis das programm überhaupt erstmal gestartet ist und dazu ist das programm viel langsamer als das was mit .au3 gestartet wurde.habt ihr ideen woran das liegen könnte ? muss ich bevor ich F7 drücke noch irgendwo was umstellen ?
mfg
-
durch das drücken von button werden auch noch unterschiedliche zahlen generiert für spätere funktionen, dadurch kann ich nicht einfach alles aus dem Case $button1 kopieren.
habe es glaube ich hinbekommen mit einer For schleife. ich teste es noch ein bisschen, wenn keine fehler auftreten mach ich das thema zu.
vielen dank für eure mühe
-
genau das ist der plan autobert
hast du eine idee, wie man das machen kann, dass autoit nachdem ich einen button geklickt habe, automatisch einen andere button "drückt" ?
kann man nicht einfach sagen "Click $Button1" ?
-
Hey,
ist es möglich einen Button durch eine Function zu "drücken" ?z.b.
es gibt 5 Button ( benannt in array - $aTestButton[1, 2, 3...])
ich generiere eine randomzahl 1-5Func
For $i = 1 to 5
If $randomzahl = $i Then (Press) $aTestButton[$i]
next
Endfuncmfg
-
habe mir notepad++ mal installaliert. hast recht, da sieht man mehr als mit word xD vielen dank für den tipp
-
das mit den nicht druckbaren zeichen habe ich bei word schon nachgeschaut. aus irgendeinem grund macht autoit da ein "doppelenter" obwohl ich nur 1x @crlf eingestellt habe. (automatisch macht filewrite keine enter hinter jeden eintrag, oder ?)
-
@Raupi vielen dank für die mühe. das mit dem FileReadLine habe ich auch getestet, allerdings hat das nicht so richtig geklappt, weil zwischen den zeilen leer zeilen waren(obwohl man diese im editor nicht sehen konnte). Das wäre jetzt aufjedenfall der nächste schritt, den ich versucht hätte zu benutzen
@Kanashius vielen lieben dank! deine code läuft bei mir perfekt!
Andy: tut mir leid wenn du einen schlechten arbeitstag hattest, aber die anderen hier haben mein problem direkt erkannt... ich bin leider noch nicht so richtig drin im autoitbusiness, daher weiß ich auch nicht was für infos man alle benötigt, um bestimmte probleme zu lösen.
-
code hinzugefügt.
-
hey, ich lasse aus einem array eine mehrzeilige txt schreiben und bekomme merkwürdige fehler.
das array enthält 10 verschiedene zahlen, die untereinander in eine .txt geschrieben werden sollen.
das ganze funktioniert auch. wenn ich die .txt öffne, sieht das ganze so aus:
1
2
3
4
5
6
7
8
9
10wenn ich jetzt aber die zahlen mit FileReadLine der reihe nach auslesen möchte, funktioniert es nicht.
das problem liegt darin, wenn ich die zahlen aus der von autoit geschriebenen .txt rauskopiere, sieht das ganze so aus:
12
3
4
5
6
7
8
9
10
warum sind da leere zeilen zwischen, obwohl diese in der .txt nicht angezeigt werden ? kann man das irgendwie ausstellen, dass autoit das so schreibt oder liegt es garnicht an autoit ?
mfg
Edit:
Code zum auslesen:
C
Alles anzeigen#include <FileConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIFiles.au3> $Dir = "E:\Test.txt" For $i = 0 To 9 MsgBox(0, "", FileReadLine($Dir, $i + 1)) Next MsgBox(0, "", "fertig")
alle 2 zeilen ist die msgbox leer, weil angeblich die zeile leer ist. -
manchmal kanns so einfach sein
vielen dank ! -
hey, ich würde gerne einen button so beschriften, dass die beschriftung über 2 zeilen geht.
so gehts leider nicht:(
)
GUICtrlCreateButton("1.zeile" & @CRLF & "2.zeile", 10, 10, 136, 40)habt ihr eine idee, wie man das machen kann ?
-
vielen dank für eure mühe, es lag an der 2. ich dachte das die $variable immer [$i][min. 2] groß ist. aber genau in dem beispiel, als ich es getestet habe, war das array nur [5][1] groß..
jetzt funktioniert es
wollt ihr das script trotzdem nochmal sehen ? -
hallo,
ich habe ein array $aTest[$i][2]
mit dem displayarray kann ich dieses array auslesen und sehen, dass alle werte in dem array vorhanden und richtig sind.
wie aber kann ich jetzt einen bestimmten wert, z.b. wert $aTest[5][2] auslesen und diesen als variable speichern? bei mir kommt da immer nur "0" raus...warum funktioniert das nicht ? :
$variable = $aTest[5][2]danke
-
hallöchen, ich habe ein array, dass zwischen 3 und 12 werten groß ist.
diese werte ergeben immer 100 (array mit 4 werten z.b. [0]= 15, [1]=50, [2]=30, [3]=5)bevor das array ausgelesen wird, wird eine zufallszahl erstellt 1.100.
dannach soll das array aufgeteilt werden, dass jeder wert des arrays ein teil von 100 einnimt.
wenn ich jetzt eine zufallszahl z.b. 12 bekomme. sagt mir die funktion, dass [0],[1],[2] mit der zufallszahl übereinstimmen.nagut, dass stimmt nunmal aber, es soll jedoch erreicht werden, dass z.b. bei der 12 NUR [0] als "übereinstimmender" wert des arrays ausgespuckt wird.
ich habe mir ein paar gedanken gemacht und bin auf die lösung gekommen:
[0]= 15, [1]=50, [2]=30, [3]=5
$i = zufallszahl0-15 = $i kleiner als [0] dann [0]
15-65 = $i zwischen [0] und [0]+[1] dann [1]
65-95 = $i zwischen [0]+[1] und [0]+[1]+[2] dann [2]
95-100 = $i größer als [2] dann [3]naja, schön und gut, so kann man es meiner meinung nach schreiben, allerdings wird es kompliziert und es schleichen sich schnell fehler ein bei einem array mit 12 werten.
kennt ihr eine lösung, dieses problem in einer schleife zu lösen? habt ihr vielleicht eine komplett andere lösung für das problem ?
vielen dank
-
vielen dank euch beiden, funktioniert perfekt
-
Hallo,
ich habe ein array mit mehreren einträgen die alle in diesem format stehen: 2zeichen, buchstaben, zahlen (z.b. B1,CC,C6,KK)diese gebe ich in inputboxen aus.
ich möchte erreichen, dass ich mit stringregexp(ist glaube ich der richtige befehl) NUR das erste zeichen(zahl/buchstabe) auslese.z.b.
array = B1
stringreexp ausgabe : Bich hoffe ihr könnt mir helfen
-
sry, ich probier es nochma genauer zu schreiben
die zahlen sollen zusammen 100 ergeben(prozent).(war mir bis eben noch nicht bewusst)
z.b. "Lw,20,50,30"
$note1 = "sehr gut"
$note2 = "gut"
$note3 = "befriedigend"
$note4 = "ausreeichend"
$note5 = "mangelhaft"
$note6 = "ungenügend"da soll er dann
$ergebsnis (des schüler z.b. : 55%)
$var1 = 20
$var2 = 50
$var3 = 30
$var2ges = $var1+$var2dannach soll dann angezeigt werden:
wenn $ergebnis = 0 bis $var1 dann $note3
wenn $ergebnis = kleiner als $var2ges (aber größer als $var1) dann $note2
wenn $ergebnis = $var2ges bis 100 dann $note1
AUSGABE: "gut"nochn beispiel mit 6 schritten
z.b. "Ol,7,10,25,20,20,18"
$ergebnis (des schülers z.b. 66%)
$var1 = 7
$var2 = 10
$var3 = 25
$var4 = 20
$var5 = 20
$var6 = 18
$var2ges = $var1+$var2
$var3ges = $var1+$var2+$var3
$var4ges = $var1+$var2+$var3+$var4
$var5ges = $var1+$var2+$var3+$var4+$var5wenn $ergebnis = <=$var1 dann $note6
wenn $ergebnis = <=$var2ges (aber größer als $var1) dann $note5
wenn $ergebnis = <=$var3ges (aber größer als $var2ges) dann $note4
wenn $ergebnis = <=$var4ges (aber größer als $var3ges) dann $note3
wenn $ergebnis = <=$var5ges (aber größer als $var4ges) dann $note2
wenn $ergebnis = >$var5ges dann $note1
AUSGABE: "gut"wie kann ich mir das dann in eine inputbox ausgeben lassen ?
ungefährt so hast du es in dem zuletztgenannten beispiel gemacht. aber wie schreibe ich das auf ? kann ich in arrays aus variablen addieren lassen ? z.b. $aRL[0][0] = $var1+$var2
das problem(zumindest für mich) ist, dass es je nach durchgang unterschieldich viele variablen in dem array gibt.ich hoffe jetzt isses anschaulicher geworden
-
Vielen dank
wie immer, sehr gute arbeit autoBert !ich möchte mit den ausgegebenen array werten jetzt rechnen. wie kann ich einstellen,dass es öfters unterschiedlich viele werte in dem array gibt ?
wenn ich einfach
$var1
$var2
$var3ich will z.b.
wenn $var1 0-40 dann ausgabe "ausreichend"
wenn $var2 40-60 dann ausgabe "befriedigend"
wenn $var3 60-80 dann "gut"
wenn $var4 80-100 dann "sehr gut"manchmal gibt es allerdings nur 3 variablen oder auch 5-6. wie schreibe ich das dann am besten in den script ?
mfg
-
sry, aber ich versteh es nicht...
ich komme so weit das ich die msgbox "fast fertig" angezeigt bekomme. wenn ich die msgbox wegklicke passiert nix mehr und er beendet die function..
da drin muss ein fehler sein:
If @extended Then
$aRes = StringSplit($sFound, '|', 1 + 2)
_ArrayDisplay($aRes, $aini)
EndIfin diesem schritt soll mir eigentlich ein array erstellt werden mit den einzelnen werten aus der zeile.
mein script sieht jetzt so aus :
Code
Alles anzeigenGlobal $aini = $Input[0] & $Input[1] ; =Lw MsgBox(0, "INPUT1", $aini) $sData = ClipGet() ;Daten aus Zwischenablage auslesen #cs $hFile=FileOpen('Pseudo.Ini',$FO_OVERWRITE) FileWrite($hFile,$sData) FileClose($hFile) #ce ;$sData=FileRead('Pseudo.Ini') _PseudoIniCreate($sData) ;PseudoIni als 2D-Array erzeugen $sFound = _PseudoIniRead($aini) MsgBox(0,"fast fertig", "fast fertig") If @extended Then $aRes = StringSplit($sFound, '|', 1 + 2) _ArrayDisplay($aRes, $aini) EndIf EndFunc ;==>ClipBoardText Func _PseudoIniCreate($sIniText) $aini = StringSplit($sIniText, @CRLF, 1 + 2) ;=> 1D Array aller kopierten Zeilen _ArrayColInsert($aini, 1) ;aus 1D 2D machen For $i = UBound($aini) - 1 To 0 Step -1 ;Zeilen durchgehen $aini[$i][0] = StringReplace($aini[$i][0], ',', '=', 1) ;1. Komma mit Gleichzeichen ersetzen $split = StringSplit($aini[$i][0], '=', 1 + 2) ;Zeile mit = trennen If UBound($split) > 1 Then ;Datenwerte eintragen $aini[$i][0] = $split[0] $aini[$i][1] = $split[1] Else _ArrayDelete($aini, $i) EndIf Next _ArrayDisplay($aini) EndFunc ;==>_PseudoIniCreate Func _PseudoIniRead($sKey) ;Syntax _PseudoIniRead('DerGesuchteString') ; ;Parameter: $sKey enthält den zu suchenden "Key" im PseudoIni-Array ; ;Rückgabe: bei Erfolg: einen | getrennten String = "Value" des "Keys" ; @error = 0 ; @extended = Anzahl der Teilstrings ; ; bei Fehler: @error = 1 ; @extended = 0 ;gibt bei Erfolg für $sKey zurück Local $sRet, $iErr = 1, $iExt = 0 For $i = 0 To UBound($aini) - 1 Step 1 If $aini[$i][0] = $sKey Then $sRet = StringReplace($aini[$i][1], ',', '|') $iExt = @extended + 1 $iErr = 0 ExitLoop EndIf Next SetError($iErr, $iExt) Return $sRet EndFunc ;==>_PseudoIniRead