Den grünen Haken beim nächsten Thread nicht vergessen! ![]()
Beiträge von alpines
-
-
Es wundert mich schon ein wenig warum hier niemand mit einer brennenden Warnfackel in den Thread gerannt ist und hier alles über den Haufen geworfen hat.
Leider hat AutoIt die Möglichkeit in einer Variable mehrere Sachen zu speichern, was das ganze hier ein wenig durcheinander wirbelt.
Alleine die Tatsache das man Int() auf den Wert von Excel anwenden muss, weil Hex() sonst komplett falsche Werte liefert, zeigt wie ärgerlich das ist.So wie du das gelöst hast ist absolut nicht zu empfehlen und sollte vermieden werden. Man sollte generell Stringoperationen auf Zahlen lassen.
Dein Problem ist, das der Endian in Excel vertauscht ist. Die Bits 0-7 und 16-31 müssen ausgetauscht werden.Ich hab mal die SwapEndian irgendwo im englischen Forum ein wenig angepasst damit sie bei deiner Anwendung hinhaut.
Wenn du sie folgendermaßen nutzt klappt sie mit GUICtrlSetBkColor: SwapEndian(Int($iCellColor1)). -
GUICtrlDelete($AObj1_ctrl) funktinoniert. Manchmal kanns auch einfach sein. Vielen Dank für den Tipp.
Na dann setz doch beim nächsten Mal bitte den grünen Haken für erledigt / gelöst in dem du den Threadstatus im 1. Beitrag anpasst!

-
Lösch doch das Control mit GUICtrlDelete($AObj1_ctrl).
-
Na dann vergiss beim nächsten Mal nicht den grünen Haken zu setzen.
-
Du musst die Clients im Server auch mit TCPAccept erstmal annehmen.
-
und wie kann ich dann einzelne zeilen bearbeiten wenn ich die ganze datei einlese ?
Du kannst die Datei nach @CRLF splitten und hast pro Arrayindex dann genau eine Zeile.
-
@alpines Ich verstehe nicht ganz wie ich den Return mit @CRLD splitten kann
Wenn du das nicht verstehst solltest du erstmal die Grundlagen von AutoIt lernen und nach entsprechenden Befehlen googlen sowie die Hilfe durchforsten.
Du wirst hier nicht alles häppchengerecht auf dem Silbertablett serviert bekommen.Bei deinem Code sind sehr heftige Fehler enthalten die mittels grundlegenden Kentnissen nicht passieren würden.
Deshalb fasse es nicht als abwertigende Bemerkung oder Beleidigung auf aber du tust uns und dir selbst einen Gefallen wenn du die Grundlagen lernst und sie dann richtig anwendest.Fragen stellen kannst du danach immer noch.
FileOpen("documents\p19data\input\data.txt")
FileWriteLine("documents\p19data\input\data.txt","")
FileClose("documents\p19data\input\data.txt")Schau dir mal bitte die Befehle in der Hilfe an. So wie du sie verwendest ist es falsch.
-
$aData = FileRead("documents\p19data\input\data.txt")
Was erwartest du soll denn von FileRead zurückkommen? Das liefert einen String und kein Array!
Du musst den Return davon mit @CRLF splitten wenn du es zeilenweise haben willst. -
Jap hab es hinbekommen! Danke dir für alles!
Und den Haken gesetzt, vorbildlich.
Wie gesagt: ImageSearch böse. Nicht nutzen.
-
Ich kenne die Antwort auf die Frage nicht, aber man kann doch mal in die ImageSearch2015.au3 schauen.
Zitat von ImageSearch2015.au30, 0, @DesktopWidth, @DesktopHeight Was könnte das bloß sein? Kombiniere das mit WinGetPos und die Sache läuft.
Windows ordnet die Bildschirme an, und je nach dem wie du sie anordnest gehen sie entweder von Negativ ins Positive oder sind nur im Positiven.
Meine sind so angeordnet das der linke Bildschirm von -Breite bis 0 geht. Und der rechte von 0 bis +Breite.Wenn du also den linken scannen willst, dann musst du auch von -Breite bis 0 gehen.
Erstell doch mal ein neues Script und MouseMove mal nach (-200, 100) und schau wo die Maus hingeht, dann siehste was ich meine. -
Jetzt habe ich nur noch ein kleines Problem: Wie weiß das Programm in WELCHE ZEILE der Substring gefunden wurde?
Du meinst welcher Index von $aData den Treffer erzielt hat? Wie wäre es denn mit $i?
-
Das liegt daran wie deine Monitore angeordnet sind. Wenn sie von -1920 bis 1920 gehen kann es nicht klappen weil @DesktopWidth nur 1920 glaube ich zurückgibt.
-
Hast du denn auch mein Script genutzt mit der png die ich hochgeladen hab? Zeig mal ein Screenshot vom Steam-Anmelde-Fenster.
-
Das machst du mit einer For-Schleife. UBound gibt dir die Größe des Arrays zurück. Die For-Schleife läuft von Index 0 bis zum letzten Index und vergleicht die Strings.
Wenn es einen gefunden hast, so löst die If-Bedingung aus. -
Du hat auch den falschen Anmelde-Button gecropt und der Fenstertitel ist falsch.
Der Button sieht anders aus wenn man das Fenster markiert, und anders aus wenn man Daten einträgt.
Das hier klappt bei mir einwandfrei.
(Ich merke grad das WBB den Button vorhin falsch dargestellt hat. Er hat abgerundete Ecken obwohl die Bild-Datei vollständig ist.)AutoIt
Alles anzeigen#RequireAdmin #autoit3wrapper_usex64=y #include 'ImageSearch2015.au3' HotKeySet( "e", "_Exit") HotKeySet( "s", "_Start") global $x = 0, $y = 0 Opt("SendKeyDelay", 50) Opt("SendKeyDownDelay", 50) While 1 Sleep(200) WEnd Func _Start() ;Funktion (Programm) startet WinActivate("Steam-Login") Sleep(500) ControlSend("Steam-Login", "", "", "Username") Sleep(500) ConTrolSend("Steam-Login", "", "", "{TAB}") Sleep(500) ControlSend("Steam-Login", "", "", "Passwort") Sleep(500) global $search = _ImageSearch("OK.png", 0, $x, $y, 0) If $search = 1 Then MouseClick( "LEFT", $x, $y, 10) EndIf EndFunc Func _Exit() Exit EndFunc -
da habe ich wieder etwas gelernt.
Streng genommen ist $aData[] möglich, aber nur bei der Deklarierung von Arrays wenn man die Größe nicht angeben will (wenn man die Werte direkt zuweist).
Local $aData[] = [1, 2, 3, 4, 5] -
Läuft das Script denn noch oder gehts aus? Hast du in deinem Script auch _ImageSearchStartup() verwendet?
Das Script was du hochgeladen hat hats nämlich nicht und die Ausgabe kriegt man nur wenn man es verwendet. -
; Was ist $odata[]? Ist das korrekte Syntax?
Nein.
; Was ist $idata[1<99999]? Geht das?
Nein.
Er möchte vermutlich schauen ob irgendein Index von $idata in $data vorkommt. Das kann man mit einer For-Schleife machen und nicht so.
-
Du fügst oben in deinem Script folgende Zeile hinzu: #AutoIt3Wrapper_UseX64=y.
Die ImageSearch2015 hat es ja auch, allerdings werden einige (?) Wrapper-Befehle in UDFs vom Compiler ignoriert.