Sieht gut aus Kann es gerade leider nicht testen, aber das hole ich vermutlich nach
Das ganze muss ich für mein MST auch noch coden^^
Beiträge von Joriktos
-
-
Ich würde das ganze etwas anders lösen:
[autoit]
[/autoit]
Local $i = 1
$aLines = StringSplit(FileRead(@ScriptDir & '\Datei.txt' ), @LF) ; Zeilenanzahl aus Datei ermitteln (Falls @LF nicht funktioniert, kannst du auch einmal @CR und @CRLF probieren, ich kenne den Unterschied leider selber nicht so genau. Kann mir das jemand erklären?)
For $i = 1 To $aLines[0] ; Hochzählen von 1 bis zur Anzahl der Zeilen
$sLine = FileReadLine("Datei.txt", $i) ; Aktuelle Zeile auslesen
$aSplit = StringSplit($sLine, "|") ; Zeile bei jedem "|" splitten
If IsArray($aSplit) And $aSplit[0] = 3 Then ; Wenn $aSplit ein Array ist und 3 Spalten hat:
GUICtrlSetData($idCombo, $aSplit[1] & ":" & $aSplit[2], $i) ; Wert in ComboBox schreiben
EndIf
NextDamit hast du eine Zeile weniger und es läuft zuverlässiger (und evtl sogar schneller).
Ist aberunformatiert undungetestet, da ich es mit dem Smartphone getippt habe.Gruß
JoriktosEdit: Habe es nun mit 4 Leerzeichen für ein Tabulatorzeichen formatiert.
-
Warum sollte man das nicht machen? Was ist eine bessere Möglichkeit?
Edit: In eine Funktion auslagern und diese dann aufrufen?
-
Sorry, hatte voll vergessen, das ganze fertig zu machen...
[autoit]
Probier es mal so
[/autoit]
For $i = 1 To $aProcesses[0] ; Blockende Prozesse schließen
$Instances = ProcessList($aProcesses[$i]) ; Einige Infos zum Prozess mit dem angegebenen Namen
While $Instances[0][0] <> 0 ; Solange bis alle Instanzen geschlossen sind (Anzahl der Prozesse mit dem Namen <> 0
ProcessClose($aProcesses[$i])
$Instances = ProcessList($aProcesses[$i]) ; Neue Anzahl auslesen
WEnd
NextLeider wieder mit dem Handy, was heißt => keine Formatierung, nicht getestet.Edit: Habe es nun mit dem PC neu formatiert
-
Mal kucken, wenn ich üb, schaff ich des bestimmt Muss halt die genauere Richtung des Spiels kennen
-
-
Probiere es mal so:
[autoit]
[/autoit][autoit][/autoit][autoit]
_splash("PhotoShopCS5.1","installiere")
DirCreate("c:\LDTemp\")$error = 0
[/autoit][autoit][/autoit][autoit]
_splash_next("bitte warten")
$error = RunWait('SWP_Adobe_PhotoShopCS5.1.exe /s /D "c:\LDTemp\"', "c:\LDTemp", @SW_HIDE)_splash_next("Installieren")
[/autoit]
$error = RunWait('c:\LDTemp\Setup.exe /UL1031 /V "SERIALNUMBER=xxxx-xxxx-xxxx-xxxx-xxxx-xxxx"', "c:\LDTemp", @SW_HIDE)
_splash_next("fertig: " & $error)
sleep(2000)
DirRemove("c:\LDTemp",1)
Exit $errorIch glaube du musst verschiedene Anführungszeichen verwenden, sonst gibt es Fehler mit den Parametern.
-
Joa, von mir natürlich auch alles gute! hab nen schönen Tag
-
Bin mit dem Handy on und kann leider nicht helfen Aber mir ist aufgefallen, dass es sinnvoll wäre den Code in einen Spoiler zu packen
-
Klasse! Echt heftig, wenn man sich das mal so vorstellt
Weiter so! Und zwar mit hoffentlich sinnvollen Posts -
chip: Dein Link geht nicht Aber er sollte verstanden haben, was du meinst.
-
Dann bitte auch den Thread auf [gelöst] setzen.
Edit: Danke, ist ja schon passiert
-
Okay, dann schreib' ich dir des heute Mittag um
-
[autoit]
[/autoit]
Local $i = 1
Local $Array2[1] = [0]
For $Zaehler = 0 To UBound($Array) -1
If StringInString($Array[$Zaehler][1], "Test", 1) Then
ReDim $Array2[$i + 1]
$Array2[$i] = $Array[$Zaehler][1]
$Array2[0] += 1
$i +=1
EndIf
NextHab's jetzt mit dem Handy getippt, deshalb ist keine Formatierung vorhanden und ich konnte es nicht testen.. aber sollte gehen
So würde ich das lösen. Dann hast du auch noch in $Array2[0] die Anzahl der Übereinstimmungen vorhanden
P.S. Du kannst deinen Beitrag auch mit dem Bearbeiten-Button bearbeiten, du musst nicht nach 2 Stunden einen neuen Thread erstellen...
-
[autoit]
[/autoit]
$x = Random( 0 , 100)
If $x < 80 Then
; case 0
ElseIf $x >= 80 And $x <= 90 Then
; case 1
ElseIf $x > 90 Then
; case 3
EndIf
; case 2 fällt weg, da 0 ProzentSo sollte es laufen. (Kann es nicht testen, bin mit dem Handy on)
-
Wie genau meinst du das mit es beendet die Prozesse nicht?
Also bei mir hat es einwandfrei funktioniert (Habe es mit calc.exe und Paint probiert)Edit: Theoretisch kannst du's auch mal mit ProcessKill() statt ProcessClose() probieren, was aber nicht immer 'gesund' ist
-
Deine Überschrift ist Bullshit!
Richtig wäre:
Mein Versuch mit StringInStr zu arbeiten schlägt fehl - was mache ich falsch?Und um deine Fehler zu sehen, müßtest du uns schon wissen lassen, wie der Inhalt, den du verarbeiten willst, aussieht.
Btw. - Um nur zu prüfen, ob StringInStr etwas findet bedarf es keinerlei Vergleichselement. Hängt mit der Vergleichsform von If (bool) und der Interpretation von Werten durch AutoIt (0=False, alles andere ist True) zusammen:
[autoit]If StringInstr($string, $InStr) Then ; wahr
[/autoit]Okay, danke, wusste ich noch nicht Man lernt jeden Tag was dazu...
-
Aha, und du bist der Auserwählte, der das festgestellt hat...
Wie wäre es denn, in irgendeiner Weise eine Fehleranalyse zur Feststellung der Unfähigkeit des Scripters einzubauen, anstatt einen Thread zu eröffnen, der im Titel sowohl die Programmierer von AutoIt, als auch sämtliche Anwender der Funktion beleidigt!Stringinstr funktioniert nämlich einwandfrei...
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$chatlog="chatlog.txt"
filewrite($chatlog, "heyho das ist ein text mit dem Inhalt Hi Stan")While True
[/autoit] [autoit][/autoit] [autoit]
$File = FileOpen($ChatLog, 0)
$LastLine = FileReadLine($File, -1) ; Ich habe noch ein -1 angehängt, da du ja laut des Variablen-Namens die letzte Zeile auslesen möchtest
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $LastLine = ' & $LastLine & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
If StringInStr($LastLine, "Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
Send("tHallo!")
; MsgBox(0, "TestBox", "Test, ob diese If-Abfrage wirklich aufgerufen wird")
EndIf
FileClose($File)
WEndExit
[/autoit] [autoit][/autoit] [autoit][/autoit]Danke, Andy
Leider war ich zu faul um es selber zu testen, sonst hätte ich nicht angefangen an meinen Programmier-Künsten zu zweifeln.. Ich wusste doch, dass der Fehler nicht an meinem Code liegt, sondern daran, wie er ihn anwendet -
[autoit]
[/autoit]
While True
$File = FileOpen($ChatLog, 0)
$LastLine = FileReadLine($File, -1) ; Ich habe noch ein -1 angehängt, da du ja laut des Variablen-Namens die letzte Zeile auslesen möchtest
If StringInStr($LastLine, "Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
Send("tHallo!")
; MsgBox(0, "TestBox", "Test, ob diese If-Abfrage wirklich aufgerufen wird")
EndIf
FileClose($File)
WEndTeste es mal so und am besten machst du dazu mal das Semikolon (;) in Zeile 6 weg, damit du siehst ob die If-Abfrage beachtet wird und nur dein Send() vielleicht nicht stimmt.
-
[autoit]
[/autoit]
While True
$File = FileOpen($ChatLog,0)
$LastLine = FileReadLine($File)
If StringInStr($LastLine,"Hi Stan") <> 0 Then ; Du brauchst hier ein "ungleich 0", da die Funktion die Position der "Fundstelle" zurück gibt, also nicht 0.
Send("tHallo!")
EndIf
FileClose($File)WEnd