_FileReadToArray() zum Einlesen der Datei
In einer Schleife durchgehen (Start ab Zeile 24) mit _StringBetween($String, '(',')')
Beiträge von BugFix
-
-
Ich glaube, es ist wesentlich einfacher, wenn jeder Operator nur einmal auftaucht (als Button).
Du kannst doch die Rechenoperation komplett als Zeichenkette erfassen, oder noch besser jedes Element in ein Array schreiben (kannst es ja mit 500 Elementen definieren - so lang wird sicher keine Aufgabe).
Zum Durchführen der Rechnung verwendest du dann Execute(). -
Sind denn in deinem Quelltext die Anweisungen
[autoit]
<td>.... </td>
nur einmalig in der benannten Form vorhanden?
Dann kannst du beim Durchgehen der Zeilen doch mit _StringBetween() arbeiten.Dim $arFound[1]
[/autoit]
$val = _StringBetween($aArray[$i], '<td>', '</td>', 1)
If IsArray($val) Then
ReDim $arFound[Ubound($arFound)+1]
$arFound[Ubound($arFound)-1] = $val[0]
EndIf$arFound enthält dann alle Treffer. Die brauchst du dann nur noch den Variablen zuordnen, wobei du den zweiten und fünften Treffer ja noch splitten mußt.
-
Zitat
_FileReadToArray ( @ScriptDir & "\log.txt", $aArray ) ;damit lade ich die db
<hier müsste das hin, dass er immer einen teil der db als array einlist>
[autoit]
??
Du hast doch die eingelesene Datei bereits im Array. Was willst du jetzt noch einlesen?
Du mußt nur das Array durchgehen und nach deinen Kriterien selektieren.For $i = 1 To $aArray[0]
[/autoit]
$aArray[$i] ; ist der Inhalt der aktuellen Zeile, kannst du auswerten
Next -
Hi,
Cheatengine reicht aus, wenn du mit umgehen kannst ;).
[URL=http://forum.extreme-gaming.de/topic,1696,-%5Btut-2%5D-dma,-pointer.html]Hier[/URL] findest du ein Tutorial, wie man Dynamische Speicheradressen suchen kann (Pointer-Shift). -
Danke Spinne ;),
da werde ich dann mal etwas testen. Erst mal ein paar passende 'Opfer' suchen, die ich über die serielle Schnittstelle abschießen kann.:D -
Ich habe mal eine Funktion erstellt, die dir die passenden Befehle zusammenstellt:
Tool: Formatierung Controls -
Du mußt die ausgelesenen Werte auch Variablen zuordnen, sonst kannst du nicht darauf zugreifen:
[autoit]; falsch:
[/autoit]
GUICtrlRead($number2)
GUICtrlRead($Number3)
GUICtrlRead($Number4)
GUICtrlRead($Number1)
; richtig:
$var1 = GUICtrlRead($number2)
$var2 = GUICtrlRead($Number3)
$var3 = GUICtrlRead($Number4)
$var4 = GUICtrlRead($Number1) -
[OT]
Sagt mal, was habt ihr an unserem Syntaxhighlighting auszusetzen?
Oder welche Gründe veranlassen euch bei Codezeilen kein Autoit-Tag zu setzen?
[/OT] -
Mit $i iterierst du durch das Array. Wenn du aber sagst "$aArray[$i-1]" verweist du bei $i = 1 auf das Element $aArray[0]. Und dort steht die Anzahl der eingelesenen Zeilen.
[autoit]#include <File.au3>
[/autoit][autoit][/autoit][autoit]
Dim $aArray_FileReadToArray ( @ScriptDir & "\log.txt", $aArray )
[/autoit][autoit][/autoit][autoit]For $i = 1 To $aArray[0]
[/autoit]
Run("E:\Programme\Mozilla Firefox\firefox.exe " & $aArray[$i])
sleep(40000)
Next -
*bg*
CountDown
( und ich war nicht der erste
) -
Hier was Sinnvolles:
(wollt ich immer schon mal machen, komme aber einfach nicht dazu
)Versuch ob du per Object auf die RS232-Schnittstelle zugreifen kannst.
- Lassen sich die Pegel von Rx, Tx auslesen UND auch setzen?:lol: OK, das ist sicher zu krass für den Anfang, interessiert mich aber wirklich.

-
Schau dir mal: GUICtrlSetState() an.
Status Disable setzen. -
Das ist im OnEvent-Mode viel einfacher als im GuiGetMsg-Mode.
Du mußt nur den Ereignissen jeder GUI eigene Funktionen zuordnen:Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)$GUI1 = GUICreate("GUI1", 200, 200, 0, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_1__EVENT_CLOSE")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "_GUI_1_EVENT_MAXIMIZE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI1)
$GUI2 = GUICreate("GUI2", 200, 200, 300, 0, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX))
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUI_2__EVENT_CLOSE")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "_GUI_2_EVENT_MAXIMIZE")
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
GUISetState(@SW_SHOW, $GUI2)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _GUI_1__EVENT_CLOSE()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _GUI_2__EVENT_CLOSE()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $GUI2)
EndFuncFunc _GUI_1_EVENT_MAXIMIZE()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_MAXIMIZE, $GUI2)
EndFuncFunc _GUI_2_EVENT_MAXIMIZE()
[/autoit]
GUISetState(@SW_MAXIMIZE, $GUI1)
EndFunc -
Zitat
Ist aber schon eine komplizierte sache ihr nur für das "X".
Kompliziert? :D, eher logisch.
Wenn die GUI-Meldung kommt: "Ich habe Fenster geschlossen", weißt du ja nicht wer das war. Also mußt du abfragen: "He, wer hat das gesagt?" -
Hi,
zu 1.
Wenn du keine Option setzt sind deine Größenangaben nicht dynamisch. Alle Controls werden so angezeigt, wie von dir gewollt.
Dynamik kannst du erreichen mit:
- AutoitSetOption('GUIResizeMode', [, param] )
Für die Controls:
- GUICtrlSetResizing ( controlID, resizing )zu 2.
[autoit]
"Opt("ExpandVarStrings", 1)" ist nicht notwendig um die Anzahl der Parameter zu ermitteln.
Dein Aufruf war nur nicht korrekt:$Params = $CmdLine[0]
[/autoit]
MsgBox(0, "ParameterTest", "Anzahl der Parameter: " & $Params)ZitatUnd wenn mir dann noch jemand sagen könnte, wie ich diese sch... Zentrierung und die lächerlichen Smilies aus diesem Editor 'rausbekomme, wäre ich restlos glücklich!
:lol: Die Smileys entstehen, weil du keine Tags gesetzt hast. Und schon wird aus abschließender Klammer und folgendem Semikolon das Zwinker-Smiley.
Dein Text erscheint nur in deinem Browser zentriert. Das Problem liegt ausschließlich auf deiner Seite des Netzes.
-
Da mußt du zusätzlich zu ID/Event auch das Fensterhandle auswerten:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit]
$main = GUICreate("Hallo", 300, 200)
$bild_B = GUICtrlCreateButton("Bild öffnen", 98, 70, 100, 50)
GUISetBkColor(0xe0c782)
GUICtrlCreateLabel("made by codemaster", 107, 180)
GUISetState()
$child = GUICreate("", 700, 550)
$back_B = GUICtrlCreateButton("Zurück", 310, 515, 80, 25)
While 1
$msg = GUIGetMsg(1)
Switch $msg[1] ; Window-Handle
Case $main
Switch $msg[0] ; Control-ID, Event
Case $GUI_EVENT_CLOSE
Exit
Case $bild_B
GUISetState(@SW_SHOW, $child)
GUISetState(@SW_HIDE, $main)
EndSwitch
Case $child
Select
Case $msg[0] = $GUI_EVENT_CLOSE Or _
$msg[0] = $back_B
GUISetState(@SW_HIDE, $child)
GUISetState(@SW_SHOW, $main)
EndSelect
EndSwitch
WEnd -
Zitat
Da ich ja gerade (14.10.07 - 00.10) das Proggen mit Autoit aufgegeben habe,
OK, habe ich kein Verständnis für - so reagieren eigentlich Kinder, wenn sie gnatzen.
Aber damit halte ich das Thema auch für gegessen.[BugFix: CLOSED]
-
Zitat
edit: Die Zeichen kann ich net kopieren, denn diese ergeben sofort eine Neue Zeile, weil ich denke,dass sie dann entshclüsselt werden oder so was in der art..
Darum solltest du mal im HEX-Editor das anschauen.
Vermutlich findest du dort: "0d 0a" oder dezimal: "13 10"
Und das sind die Zeichen für @CRLF, also Zeilenumbruch.Du schreibst, dass sie sofort eine neue Zeile ergeben: Aber das ist es doch, was du wolltest - oder?
-
Ich hoffe, dass die Lösung dem entspricht was du möchtest:
- FileOpenDialog zum Aussuchen der zu bearbeitenden Datei
- Einlesen Datei in Array
- Inputbox für Ersetzung
- in Schleife Ersetzen mit Eingabe
- Inputbox für Ausgabedateiname
- Zurückschreiben in Ausgabedatei(Wenn du so formulierst, was du möchtest, ist das viel einfacher
)Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $inFile = FileOpenDialog('Datei zum Bearbeiten wählen', @ScriptDir, 'Webdateien (*.htm;*.html)', 3)
Dim $outFile
Dim $aArray
$ret = _FileReadToArray ( $inFile, $aArray ) ; datei in Array lesen
If @error Then
MsgBox(0, '', 'Datei konnte nicht eingelesen werden.')
Exit
EndIf$Eingabe = InputBox('Ersetzen', 'Bitte eingeben:')
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $aArray[0] ; zeilenweise durchgehen
$aArray[$i] = StringReplace($aArray[$i], 'XX', $Eingabe) ; der String wird ersetzt durch den String mit der Eingabe
Next$outFile = InputBox('Datei speichern', 'Bitte Dateinamen für Ausgabe festlegen.')
[/autoit]
_FileWriteFromArray(@ScriptDir & '\' & $outFile, $aArray, 1) ; vom Array in Ausgabedatei schreiben