Stürzt das Script bei dir mittendrin ab oder startet es wegen der Meldung überhaupt nicht? Bei mir startet es nämlich nach den Korrekturen.
Beiträge von alpines
-
-
Das letzte Komma auch?
-
Deine Arraydeklaration ist falsch, das letzte Underscore _ darf dort nicht sein, da du keine neue Zeile beginnst sondern das Array schließt.
Außerdem solltest du niemals Variablen global in Funktionen erzeugen, das ist wirklich wirklich schlechter Stil.
Wenn du die Variablen nur in der Funktion verwendest, dann nimm als Scope lieber Local.
-
Ist es denn auch möglich quasi eine Art "Installer" zu generieren die dann auf den gewünschten Rechnern die Verzeichnisse mit den verschiedenen Dateien erstellt?
Natürlich, kommt aber alles darauf an wie und womit. Soll jeder Client den Installer selbstständig starten, oder wird von einem Rechner auf alle kopiert etc...
-
Ich habe 54 Hersteller mit jeweils einem langen Link. Ist also mmn. wesentlich übersichtlicher das untereinander gelistet zu haben als alles in einer ewig langen Zeile
Gerade dann solltest du Arrays verwenden, da sonst dein Script einfach explodiert. Du kannst Arraydeklarationen auch auf mehrere Zeilen ausbreiten wenns dich stört:
-
Das funktioniert bei mir aber nicht, egal wie ich es versuche.
Du postest neun Zeilen Code und fragst uns wie das Problem zu lösen ist. Wie sollen wir dir denn helfen?
Dein Code enthält keine syntaktischen Fehler und sollte laufen, die $s_hersteller2 Variable soltle auch deklariert werden, dein Problem muss also woanders liegen.
Übrigens: Du baust einen If-Block für jede Abfrage obwohl du nur einen If-Block bräuchtest wenn du das ganze als Array implementierst.
Hier mal ein kleines Beispiel:
AutoItGlobal $aHersteller[][2] = [["Bla", "http://bla"], ["Blubb", "http://blubb"], ["12345", "http://12345"]] For $i = 0 To UBound($aHersteller) - 1 If $s_hersteller = $aHersteller[$i][0] Then _IENavigate($oIE, $aHersteller[$i][1]) EndIf NextIch würde dir dringend raten dir die AutoIt-Grundlagen nochmal anzugucken und sie durchzuarbeiten, wenn du weiter Code schreibst der zwar funktioniert aber schlecht ist, dann lernst du daraus nichts und wirst in ein paar Monaten wohl nicht mehr reinblicken und das ist bei Scripten, welche du lange verwenden möchtest, wichtig.
Arrays gehören wirklich zu den AutoIt-Basics.
-
Bei MsgBox($MB_YESNOCANCEL + $MB_ICONQUESTION + $MB_DEFBUTTON2 , "","") weiß man sofort worum es geht, bei 291 nicht unbedingt, und das ist ja nur ein Bruchteil der möglichen Kombinationen.
Deshalb mache ich das meistens so, dass ich nicht die Summe, sondern die einzelnen Flags als Addition hinschreibe. Zum Beispiel: 48 + 4
Letzen Endes ist es Stilsache, es benennen ja auch nicht alle ihre Variablen mit der ungarischen Notation

-
Wieso sollte $MB_DEFBUTTON2 mehr Aussagekraft haben als 256 ?
Gut, das war vielleicht ein nicht so einleuchtendes Beispiel aber vielleicht stimmst du ja überein, dass
BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME), BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
verständlicher ist als 0x94CE0000, 0x00000180
Bei MsgBoxen verwende ich auch direkt die Nummern, weil ich sie mehr oder weniger über die Jahre auswendig gelernt habe und zur Not mit dem MsgBox Wizard (Alt+W im SciTE Code) erzeuge.
-
Jein, wenn ich mir dadurch Includes erspare, schreibe ich lieber die Zahlenwerte und im Kommentar dahinter den Namen der Konstanten
Könntest auch den Au3Stripper nutzen, das habe ich mir angewöhnt. Oder du definerst die Konstanten oben selber ohne es zu includen, aber hast dann das Problem, dass du bei einigen UDFs die Konstanten neu deklarierst.
-
Bisschen Googlen hilft: https://www.autoitscript.com/forum/topic/11…-top-menu-item/
AutoIt
Alles anzeigen#include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) GUICreate("My GUI") GUISetOnEvent($GUI_EVENT_CLOSE, "CloseScript") $Start = GUICtrlCreateMenu("&Start") $HelpM = GUICtrlCreateMenuItem("&Options", -1) GUICtrlSetOnEvent(-1, "handle_Options_Click") GUISetState(@SW_SHOW) ; will display an empty dialog box While 1 Sleep(100) ; sleep a short while WEnd Func handle_Options_Click() MsgBox(0, "TRACE", "Options menu button was clicked" & @CRLF) EndFunc Func CloseScript() Exit EndFunc -
Abfangen? Nachsehen ob Typ = offiche und Datentrräger ist Ntfs?
Deshalb vorher mit https://www.autoitscript.com/autoit3/docs/f…tFileSystem.htm prüfen, ob es sich wirklich um NTFS handelt!
-
Das übersteigt meine Möglichkeiten. Gibt es da einen chrash Kurs für Anfänger oder ev. freundliche Hilfe?
Ich hätte mir eine C# DLL geschrieben und Funktionen exportiert um das ganze nochmal in C# zu wrappen (da gibt es sicherlich viel bessere Möglichkeiten).
Also praktisch eine bool writeAuthor(string filename, string author); und dann könntest du diese DLL in AutoIt ansprechen und einfach die Parameter übergeben.
Zum Thema C# DLLs in AutoIt habe ich bereits ein Tutorial verfasst.
-
Könnt Ihr mal prüfen ob es das bei Euch auch gibt - damit wir mal auf einen stand "aufsetzen" können?
Tatsächlich, als Detailansicht und dem Rechtsklick in den Listviewheader kann ich mir das auch anzeigen lassen.
Bei solchen Themen solltest du am besten mit dem Präfix C# oder C++ suchen, da für solche Sprachen meist Beispiele existieren.
Ich habe für C# etwas vielversprechendes gefunden was du dir mal angucken solltest: http://scatteredcode.net/tutorials/c-ad…tom-properties/
Das kannst du dann zu AutoIt umwandeln.
-
Welches OS verwendest du? In Windows 7 habe ich diese Möglichkeit leider nicht. Stammt das Tab vielleicht von einer anderen Software?
-
Heyoo,
ich hatte vor einiger Zeit das Projekt mal angefangen und wollte es vor der Klausurenphase noch zu Ende bringen.
Heute stelle ich euch Pazaak vor: Ein Kartenspiel weit bekannt im Star Wars Universum.
Pazaak Spielregeln
Vor jedem Spiel darf man sich zehn Nebenstapelkarten aussuchen welche aus +1 bis +6, -1 bis -6 und +/- 1 bis +/- 6 bestehen.
Von den +/- Karten darf man jeweils eine jeweils und von den + und - Karten jeweils zwei (des selben Wertes).
Aus diesen zehn Karten werden nun vier für das zu spielende Set ausgewählt, mit diesen vier Karten muss man das gesamte Set lang auskommen.
Also sollte man diese nicht leichtsinnig verschwenden, sondern immer strategisch legen!
Nachdem man die Nebenstapelkarten ausgewählt und auf "Play" geklickt hat, fängt das Spiel an.
Es wird zufällig ausgewählt welcher der beiden Spieler anfangen darf und dieser zieht zuerst eine Karte von einem Deck bestehend aus insgesamt 40 Karten.
Diese Karten haben einen Wert von 1 bis 10 (und von jedem Wert gibt es insgesamt vier).
Nachdem man diese Karte gezogen hat, wird der Wert auf die Punktzahl verrechnet und man hat die Möglichkeit eine Karte vom Nebenstapel zu setzen.
Legt man eine +2 Karte, so wird die +2 Karte auf das Spielfeld platziert und die Punktzahl um 2 erhöht. Analog für eine -2 Karte.
Bei einer +/- 2 Karte wird man vorher gefragt, ob man diese als Addition oder Subtraktion spielen möchte.
Es ist nicht möglich weniger als 0 Punkte zu haben.
Erreicht man exakt 20 Punkte, so hält (HOLD) man automatisch und kann keine Karten mehr legen oder ziehen.
Erreicht man mehr als 20 Punkte, so kann man in der Runde (sofern man noch keine Nebenstapelkarte gelegt hat) eine Nebenstapelkarte legen um wieder auf oder unter 20 zu kommen.
Man gewinnt die Runde, wenn man mehr Punkte und dabei auf oder unter 20 Punkte bleibt.
Man verliert die Runde, wenn man weniger Punkte als der Gegner (und der Gegner auf oder unter 20 Punkten bleibt) oder mehr als 20 Punkte hat und den Zug beendet.
Man spielt die Runde unentschieden, wenn man auf der selben Punktzahl wieder Gegner die Runde hält.
Das Set gilt als gewonnen, wenn man als erster drei Siege hat und als verloren, wenn der Gegner als erster drei Siege hat.
Landet man beispielsweise auf 19 Punkte und möchte keine Nebenstapelkarte ziehen und nicht das Risiko eingehen keine 1 zu ziehen, so kann man seinen Zug halten (HOLD).
Dabei darf man für die gesamte Runde keine einzige Karte mehr ziehen oder legen aber der Gegner hat immer noch die Möglichkeit einen zu überbieten.
Screenshot
[Blockierte Grafik: https://i.imgur.com/99kyOpg.png]
Im Spiel musste man sich die Nebenstapelkarten bei verschiedenen Händlern zusammenkaufen,
aber ihr habt hier direkt alle am Anfang verfügbar (auch wenn es einige Karten überflüssig macht).
Da ein Multiplayer (ohne TCP) keinen Sinn macht, habe ich die Bots im Originalspiel (Star Wars: Knights Of The Old Republic 1) beobachtet und einen Bot nachprogrammiert.
Die Logik des Bots findet ihr im bot_logic.png (ich habe einige Sachen nachträglich eingefügt und einige andere sehr kleine Sachen sind leider nicht enthalten).
Aus diesem Grund sind auch die komplizierten Karten (±1T, D, 2 & 4, 3 & 6, 1±2) nicht enthalten, weil das die Logik für den Bot einfach sprengen würde.
Es waren mehrere Bots mit verschiedenen Spielstilen geplant gewesen aber das ist extrem viel Arbeit und hinter dem Originalspiel saß ein ganzes Entwicklerstudio.
Das Spiel enthält Original Soundtracks aus dem Spiel welche ich aus einem YouTube-Video extrahiert habe und zudem noch originale Soundeffekte (klicken, Karte legen, etc).
Wegen den Soundeffekten kann es zu einigen GUI-Artefakten kommen (Buttons welche halb enabled sind) und ich bitte diese zu entschuldigen.
Ursprünglich hatte ich geplant die Karten aus dem Spiel zu extrahieren und alles mit GDI+ so nah am Spiel wie möglich zu halten aber ich habe leider nicht die Zeit dazu.
Also, runterladen, spielen, Spaß haben!

Bisherige Downloads: 24
-
(gibt es hierfür eigentlich eine einfachere , übersichtlichere und schnellere Variante?)
Das schreit geradezu nach ARRAYS!
-
der Prozessor Hersteller könnte seine Prozesoren daraufhin optimieren, daß sie bei bestimmten Benchmarks besser
abschneiden.
Der Prozessorhersteller hat doch, so wie ich Andy verstanden habe, nichts falsch gemacht. Die Last die auf den Kernen verteilt wird wird ganz allein von Windows entschieden.
Wieso sollte ein Chiphersteller seine Technik für Benchmarks optimieren, wenn diese (oder sogar das Betriebssystem) nicht die volle Kapazität der CPU testen können.
-
Das erklärt aber auch warum Intel CPU's bei vielen Benchmarks so stark sind, weil eben alles Single-Threaded
optimiert ist.
Das Wort "optimiert" ist hier ziemlich fehl am Platze. Wenige Entwickler machen sich nur die Mühe eine CPU bis zum Maximum auszureizen und so das meiste aus ihr rauszuholen.
-
Deine Html-Elemente haben keine title-Tags. Das was du suchst ist entweder .Value, .innerText oder .innerHTML.
-
Du kannst die Controls in ein Array packen und das Array iterieren und einzeln hiden, alle gleichzeitig hiden wird von Windows wohl nicht unterstützt.