1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. alpines

Beiträge von alpines

  • and und or - irgendetwas stimmt hier nicht

    • alpines
    • 8. Januar 2018 um 15:26

    In AutoIt haben ANDs und ORs die selbe Operatorenpräferenz, folglich werden die Ausdrücke von links nach rechts evaluiert.

    Im ersten Beispiel sieht das ganze so aus:

    $a = 3 and $b = 4 or $a = 3 and $b = 3 wird zu True and True or True and False wird zu True or True and False wird zu True and False wird zu False

    Im zweiten Beispiel sieht das ganze so aus:

    $a = 3 and $b = 3 or $a = 3 and $b = 4 wird zu True and False or True and True wird zu False or True and True wird zu True and True wird zu True

    Wenn du nicht möchtest, dass AutoIt deine Bedingungen von links nach rechts evaluiert sondern bestimme Bindungen berücksichtigt, so musst du Klammern um die Bedingungen setzen.

    ($a = 3 and $b = 4) or ($a = 5 and $b = 5) ist etwas ganz anderes als $a = 3 and $b = 4 or $a = 5 and $b = 5

    Mit der Klammerung kannst du richtige Fallunterscheidungen definieren, wenn du alles hintereinander setzt blickt man da überhaupt nicht mehr durch.

  • txt umschreiben in andere Form

    • alpines
    • 8. Januar 2018 um 14:33

    Siehst du? Die Vorzeichen waren in dem anderen Beispiel nicht an der Stelle, das habe ich eingebaut und jetzt kommt da auch bei dem Beispiel was vernünftiges raus.

    Ich hab allerdings nicht das Resultat des 2. Beispiels also kann ich da nur raten.

    Teste es mal mit anderen Beispielen und gib dann bitte bescheid ob das alles zufriedenstellend ist oder nicht.

    Dateien

    Converter.rar 3,42 kB – 476 Downloads
  • txt umschreiben in andere Form

    • alpines
    • 8. Januar 2018 um 13:09

    Ich hab da mal was gebastelt was mit der 1. Beispieldatei ziemlich gut funktioniert.

    Wenn du mir noch andere Beispiele posten kannst mache ich das ganze robuster und dann sollte das alles klappen.


    Im Script sind einige Kommentare enthalten, wenn du was nicht verstehst: einfach fragen.

    Dateien

    Converter.rar 2,88 kB – 450 Downloads
  • txt umschreiben in andere Form

    • alpines
    • 8. Januar 2018 um 11:54

    Ich hab mich mal rangesetzt und den Header kriege ich schon mal gut in die neue Datei rein.

    Die Vorgänge sollten auch kein Problem sein. Das einzige Problem besteht darin, dass ich zu wenig Beispiele habe.

    Es kann sein, dass ich an der Formatierung was übersehe und dann die RegEx-Patterns nicht mehr greifen, es wäre also schön, wenn du

    mir ein paar Beispiele mehr zukommen lassen könntest und ich das ganze dann auch besser testen kann.

  • Unterschiede in der Funktion WinGetHandle (0x00000000) und AU3Info (0x0000000000020978) vom selben Fenster

    • alpines
    • 7. Januar 2018 um 11:24

    Es liegt am Zeichensatz, lösche einfach mal alle Leerzeichen vor dem $sClassName in Z. 38 und füge sie wieder ein damit dein Code gut formatiert aussieht,

    dann klappt das ganze auch wieder.

  • Viele Sub-Funktionen in einer main Funktion hinzufügen/entfernen

    • alpines
    • 5. Januar 2018 um 17:33

    Frag doch einfach alle Checkboxen einzeln ab, du könntest sie im Array erstellen und so iterieren aber das ist eher Stilsache als Funktionalität.

    Du fügst einen Case für den Button hinzu und dann fragst du mit If BitAnd(GUICtrlRead($Checkbox), $GUI_CHECKED) Then ab ob sie gedrückt wurde.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • alpines
    • 4. Januar 2018 um 16:15
    Zitat von fakeraol

    Wenn übrigens "2. unfassbar viele MsgBoxen" aufpoppen, "die einfach nur nerven.", schreibt man die Ausgabe halt in eine GUI, da bleibt sie genauso stehen und ist nachvollziehbar. Es gibt ja schon solche Beispiele zB. zu StringRegExp, wo man besser die MsgBoxen zusammenfassen oder durch ne GUI ersetzen sollte.

    Du willst also für jede Beispielfunktion (nur um die Funktion zu demonstrieren) noch GUI-Code oder Formatierungen für MsgBoxen reinnehmen und die Beispiele so um das Doppelte oder mehr aufblähen?

    Zitat von fakeraol

    Ich finde, wir sollten Leute da abholen, wo sie stehen, und das ist bei einigen eben ganz am Anfang.

    Diese Leute nutzen wie Oscar schon erwähnte SciTE und veruschen nicht Notepad++ irgendwie an den AutoIt-Interpreter anzubinden.

    Wäre Notepad++ der Standard, dann würde das mit der AutoIt-Installtion + einem Konsolenfenster ausgeliefert werden, was nun mal nicht der Fall ist.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • alpines
    • 4. Januar 2018 um 15:09
    Zitat von fakeraol

    Deshalb lernen so wenig Leute in Eigeninitiative C++, weil die Doku für Einsteiger so grottig, ist. Da muß man schon Programmierer sein, um um lernen zu können, einer zu werden - ein Widerspruch in sich für etwas, das sich "Hilfe" nennt.

    C++ ist ein mächtiges Werkzeug und es auf Anhieb zu lernen ist schlicht und einfach unmöglich.

    Ein guter Weg an C++ ranzugehen wäre sich eine Scriptsprache anzueignen um erstmal die Grundlagen von Programmieren zu lernen und sich dann langsam hochzutasten.

    Es gibt genug Dokumentation zu C++ und es ist nicht so, dass es zu keinem Problem keine Lösung gibt.

    Wenn man versucht C++ ohne Vorkenntnisse zu erlernen ist es einfach frustrierend. Andere Sprachen sind da etwas entgegenkommender, bieten aber nicht das was C++ bietet.

    Zitat von fakeraol

    Die Hilfe hat nun mal keine Console.

    Außerdem wie führst du denn die Beispiele aus der Hilfeaus? Du klickst auf 'Open Script' und es öffnet sich ein neues Tab in SciTE mit dem Beispiel.

    F5 drücken und in die Console schauen ist nicht wirklich schwierig. Zugriff auf die Dateien selber im Explorer ist nicht notwendig und Consolen-Ausgaben sollten dann auch reichen.
    Wenn man die Scripte direkt starten könnte würde ich das ja verstehen, aber das ist nun mal nicht der Fall (zumindest öffnet sich bei mir das Script in SciTE).

    Das ist, meiner Meinung nach, ein vernünftiger Weg und wenn man nun alles als MsgBox schreiben müsste, würden einige Beispiele 1. schlicht nicht funktionieren und 2. unfassbar viele MsgBoxen produzieren die einfach nur nerven.

    Macht es denn so einen Unterschied wenn man einfach danach sucht, wo die Ausgabe des ConsoleWrites ist und danach die Scripte im Editor startet? Ich finde nicht.

    Das tolle an der Konsole ist, dass die Ergebnisse stehen bleiben und man im Nachhinein den gesamten Vorgang betrachten kann, bei MsgBoxen ist das ohne weiteres nicht möglich.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • alpines
    • 4. Januar 2018 um 14:18
    Zitat von fakeraol

    ersetzen und den ganzen Text hinter der Tread-Nummer weglassen?

    Das ist mir schon klar, dennoch sprengt es das Signaturlimit an sichtbaren Zeichen.

    Ich habe erst jetzt gesehen, dass es sichtbare Zeichen sind und nicht alle (auch anchors, Tags etc) und werde das mal die Tage fixen.

    Außerdem sehe ich das so wie Oscar, wenn man schon in der Hilfe nach Scripten sucht, dann wird man ein bisschen Eigeninitiative mitbringen müssen.

    Außerdem sind die ConsoleWrites ja nur als Extra da, sie zeigen ja wie das Ergebnis nach der Manipulation einer Funktion ausschaut.

    Das ist eigentlich überflüssig, denn du hast ja das Feld Return wo genau steht was wie im Rückgabewert enthalten ist.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • alpines
    • 4. Januar 2018 um 13:13
    Zitat von fakeraol

    PS: Deine Signatur-Links funktionieren übrigens nicht mehr.

    Die funktionieren schon seit Monaten nicht mehr, da das Pathing der Website geändert wurde und meine Signatur kann ich wegen Zeichenlimits nicht mehr modifizieren.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • alpines
    • 4. Januar 2018 um 11:22
    Zitat von fakeraol

    Wie ich schon schrieb, Beispielskripte sollten ihre Ausgabe nicht in die Console machen. Gebt mal "ConsoleWrite" in die Suche der Hilfe ein, da gibts jede Menge Scripte, bei denen der Anfänger garkeine Reaktion zu sehen bekommt, wenn er die aus der Hilfe heraus aufruft. Das lässt sich fast alles durch MsgBox ersetzen, oder notfalls durch ne simple Gui.

    Kein vernünftiger Mensch kopiert die Beispiele aus der Hilfe in SciTE rein, speichert die Datei, und öffnet sie dann im Explorer.

  • control über Text erkennen

    • alpines
    • 3. Januar 2018 um 22:33

    Läuft dein Programm denn?

    Wenn ja, dann lass dir die Fenster des Prozesses ausgeben und versuch mit den Control-Funktionen nach dem Text zu suchen.

    ControlGetHandle($hWindow,"", "[TEXT:buttonText]") und dann solltest du auch das Handle bekommen.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 21:20

    Im Prinzip macht es auch keinen Unterschied aber für uns ist das schwieriger nachzuvollziehen.

    Poste uns doch mal den Inhalt der Variablen und vergleiche die SocketId die du im _TCP_Send verwendest mit der die du von TCPAccept zurückbekommst.

    Wir haben absolut keine Ahnung was in den Variablen steht und können dir so auch nicht helfen.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 21:13
    Zitat von Dexter1993

    Ich kann jetzt momentan noch nichts auseinander reißen....

    Wie meinst du das?

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 21:07
    Zitat von Dexter1993

    Wenn sich ein Client jetzt verabschiedet wird Socket sofort auf 0 gesetzt.

    Wozu? Du brauchst noch nicht einmal den Status abzuspeichern.

    Wenn der Client verbunden ist, dann taucht er in dem bereits erwähten Array auf, wenn nicht, dann ist er offline.

    Socket und Status kannst du komplett streichen.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 21:02

    Daraus werden wir nicht schlau, was gibt _DBGetSkt zurück und was wurde von TCPAccept zurückgegeben?

    Führ doch dein Script mal aus und poste uns alle Variableninhalte von:

    $sReceived, $SMsg, $all, und $NewSocket

    Du solltest das ganze nochmal überarbeiten und dir wirklich eine saubere Struktur überlegen, speichere Daten nur ab wenn sie benötigt werden.

    Du brauchst die Sockets in der Datenbank nicht, die sind volatil und nur bei laufender Serverinstanz verfügbar (und werden bei jedem Neustart verändert).

    Probier mal das ganze wie ichs vorgeschlagen hab mit einem Array an Socket+Nickname und gib als Nachricht dann den Empfänger-Usernamen an.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 20:57
    Zitat von misterspeed

    Ja aber was hat dein Client davon? Der Server ist der einzige der die SocketID des jeweiligen clients kennen muss, also speichert man das sinnvollerweise im Server gleich ab sobald ein neuer Client mit tcpaccept angenommen wird. Sich die ID nochmal hin und her zu schicken macht wenig Sinn.

    Damit soll der Client der die Nachricht empfangen soll vermutlich identifiziert werden, obwohl die Variante mit Nickname (meiner Meinung nach) eleganter wäre.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 20:52

    Ohne Code-Schnipsel werden wir da nicht viel machen können.

    Versuch doch mal dein Problem auf zwei kleine Scripte zu isolieren und lad sie hoch dann können wir uns das mal ansehen.

    So können wir nur ins blaue hinein raten.

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 20:45
    Zitat von Dexter1993

    1. Z.B. Tom meldet sich an und sendet dem Server: Seinen SignIn Username, Passwort und eben die Socket

    Was verstehst du denn unter SocketId? Das was TCPAccept zurückgibt oder das TCPConnect zum Server vom Client aus?

  • TCP Server / Mehrere Clients und TCP Send

    • alpines
    • 3. Januar 2018 um 20:24

    Wo erstellst du denn die SocketId? Wenn du alle Clients mit TCPAccept akzeptierst solltest du auch über die Id zurückschicken können.

    Du solltest ein Array mit den Clients erstellen und dort die Sockets von TCPAccept und die Nicknames hinterlegen.

    Dann kannst du bei dem Empfang einer Nachricht einfach das Array durchgehen und prüfen welcher Index den Namen trägt, dann nimmst du die Id und schickst dort die Daten zurück.

    Dazu kannst du beispielsweise ein 2D-Array nutzen.

    Wenn du uns ein Snippet zeigst wo du die Id ausliest und verwendest können wir dir besser helfen.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™