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. BugFix

Beiträge von BugFix

  • wie?? String auslesen und unötige stellen raus entfernen.

    • BugFix
    • 10. Juli 2008 um 21:57

    So geht / und : am Ende

    [autoit]

    $string = '-hallo w?elt: kugel'
    $aErgebnis = StringRegExp($string, '(?<=-)(.*)(?:(/|\:))',1)
    MsgBox(0, '', $aErgebnis[0])

    [/autoit]
  • for,if Bedinungen " negieren "

    • BugFix
    • 10. Juli 2008 um 21:22

    Wie bereits von peethebee erwähnt: In For-Schleifen können in AutoIt keine Bedingungen implementiert werden.

  • wie?? String auslesen und unötige stellen raus entfernen.

    • BugFix
    • 10. Juli 2008 um 21:19

    Es gibt mehrere Varianten. Wenn vorn immer ein "-" ist und ab "/" abgeschnitten werden soll, ist folgendes allgemeingültig:

    [autoit]

    $string = '-hallo welt/ kugel'
    $aErgebnis = StringRegExp($string, '(?<=-)[\w\säöüÄÖÜ]*',1)
    MsgBox(0, '', $aErgebnis[0])

    [/autoit]
  • for,if Bedinungen " negieren "

    • BugFix
    • 10. Juli 2008 um 19:59

    z.B.

    [autoit]

    While Not ('Bedingung')
    ; Code
    WEnd

    [/autoit]


    oder auch

    [autoit]

    Do
    ; Code
    Until 'Bedingung'

    [/autoit]
  • Verbindung zum Internet überprüfen und Datei starten, wenn nicht verbunden

    • BugFix
    • 10. Juli 2008 um 19:47

    Betrachte das als erste Verwarnung (toller Einstieg hier).
    Solch einen Umgangston wollen wir hier nicht und werden ihn auch nicht dulden!

    [Topic closed]

  • Verbindung zum Internet überprüfen und Datei starten, wenn nicht verbunden

    • BugFix
    • 10. Juli 2008 um 18:33
    Zitat von Mads

    Vorweg: Ich habe keine Ahnung von AutoIt und will momentan auch keine Ahnung davon haben.


    Warum sollen wir Hilfe geben für jemanden, der keine Ahnung haben will? :thumbdown:

  • Problem beim GUI Event Handling

    • BugFix
    • 10. Juli 2008 um 00:19

    Wenn du das InputCtrl mit <ENTER> verläßt, löst das ein Event aus.
    Du kannst also für das Input festlegen:

    [autoit]

    GUICtrlSetOnEvent($Input, 'InputChanged')
    ; ...
    Func InputChanged()
    ; Code
    EndFunc

    [/autoit]
  • [Funktion] _MathInColumn : Addiert oder Subtrahiert werte in einer Spalte in einem Array

    • BugFix
    • 9. Juli 2008 um 22:03

    Habs nicht getestet, aber folgende Hinweise:
    Im Funktionskopf bitte das Array als: ByRef $Array angeben. Somit wird auf das Originalarray (im Speicher) zugegriffen. Anderenfalls wird eine Arbeitskopie angelegt (Performanceverlust).
    Folgendes kannst du auch vereinfachen:

    [autoit]

    ; statt:
    If Not IsArray($Array) Then
    SetError(0)
    Return
    EndIf
    ; besser:
    If Not IsArray($Array) Then Return SetError(0)

    [/autoit]
  • Ausschusserfassung über MDB-Datenbank

    • BugFix
    • 9. Juli 2008 um 21:48
    Zitat von Towacom

    Das ContinueLoop-Statement musste ich setzten da mir das Script sonst alle Case-Fälle nacheinander abgearbeitet hat obwohl ich nur einen Button angeklickt habe. Ich werde es aber nochmals ohne versuchen.


    Ja, du hast recht. In diesem Fall hast du ja eine Folge von IF-Statements, die du so übergehen kannst. Wenn du statt der IF's, "Select-Case" verwendest, hast du denselben Effekt aber ohne ContinueLoop ;)

    Edit:
    Achja, wegen Arrays... schau mal in meine Signatur :whistling: *Zaunpfahl-schwenk* :D

  • Ausschusserfassung über MDB-Datenbank

    • BugFix
    • 9. Juli 2008 um 21:20

    Sieht gut aus. Ein paar Tipps:
    Wenn das "If-Statement" nur eine Anweisung enthält - einfach in eine Zeile schreiben ohne EndIF
    Statt

    [autoit]

    If FileExists('Options.ini') = 0 Then
    FileInstall('Options.ini', 'Options.ini')
    EndIf

    [/autoit]

    besser

    [autoit]

    If FileExists('Options.ini') = 0 Then FileInstall('Options.ini', 'Options.ini')

    [/autoit]

    Mehrere Controls in gleichem Abstand erstellen geht besser in einer Schleife. Die ID's dann in einem Array auffangen.
    Hier mal das Original von dir und im Vergleich die Schleifenvariante.

    Spoiler anzeigen
    [autoit]

    Dim $fault1 = GUICtrlCreateCheckbox("1. " & $G1, 50, 330, 150, 17)
    Dim $input_fault1 = GUICtrlCreateInput("", 200, 330, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault2 = GUICtrlCreateCheckbox("2. " & $G2, 50, 355, 150, 17)
    Dim $input_fault2 = GUICtrlCreateInput("", 200, 355, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault3 = GUICtrlCreateCheckbox("3. " & $G3, 50, 380, 150, 17)
    Dim $input_fault3 = GUICtrlCreateInput("", 200, 380, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault4 = GUICtrlCreateCheckbox("4. " & $G4, 50, 405, 150, 17)
    Dim $input_fault4 = GUICtrlCreateInput("", 200, 405, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault5 = GUICtrlCreateCheckbox("5. " & $G5, 50, 430, 150, 17)
    Dim $input_fault5 = GUICtrlCreateInput("", 200, 430, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault6 = GUICtrlCreateCheckbox("6. " & $G6, 50, 455, 150, 17)
    Dim $input_fault6 = GUICtrlCreateInput("", 200, 455, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault7 = GUICtrlCreateCheckbox("7. " & $G7, 50, 480, 150, 17)
    Dim $input_fault7 = GUICtrlCreateInput("", 200, 480, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault8 = GUICtrlCreateCheckbox("8. " & $G8, 50, 505, 150, 17)
    Dim $input_fault8 = GUICtrlCreateInput("", 200, 505, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault9 = GUICtrlCreateCheckbox("9. " & $G9, 50, 530, 150, 17)
    Dim $input_fault9 = GUICtrlCreateInput("", 200, 530, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault10 = GUICtrlCreateCheckbox("10. " & $G10, 50, 555, 150, 17)
    Dim $input_fault10 = GUICtrlCreateInput("", 200, 555, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $fault11 = GUICtrlCreateCheckbox("99. " & $G11, 50, 580, 150, 17)
    Dim $input_fault11 = GUICtrlCreateInput("", 200, 580, 225, 20)

    [/autoit] [autoit][/autoit] [autoit]

    ; verkürzte Variante:
    Dim $y = 305, $arCB[11], $arIn[11], $num
    For $i = 0 To UBound($arCB) -1
    $y += 25
    If $i < UBound($arCB) -1 Then
    $num = $i+1
    Else
    $num = 99
    EndIf
    $arCB[$i] = GUICtrlCreateCheckbox($num & ". " & Eval("G" & $i+1), 50, $y, 150, 17)
    $arIn[$i] = GUICtrlCreateInput("", 200, $y, 225, 20)
    Next

    [/autoit]

    In deinen Case-Statements (While-Schleife ab Zeile 320) verwendest du überall "ContinueLoop". Allerdings kann ich nicht den Bezug zur Schleife erkennen.
    Die Anwendung von "ContinueLoop" dient im Allgemeinen dazu, einen Anweisungsblock zu überspringen und mit dem folgenden Schleifenelement fortzufahren. Du bist jedoch in einer Endlosschleife, die auf GUI-Events wartet. Das "ContinueLoop" bringt somit keinen Nutzen (auch wenn es nicht schadet :) ).

    Also weiter so :thumbup:

  • Guada Daag

    • BugFix
    • 9. Juli 2008 um 20:12

    Auch von mir ein: Hallo und Herzlich Willkommen.

  • Diskketten Passwortscript

    • BugFix
    • 9. Juli 2008 um 16:53
    Zitat von .::Mignon::.

    ich dachte nämlich das beim öffnen der .txt automatisch auch die calc.exe gestartet wird.


    Das habe ich getestet (die zweite Variante, direkt in die Datei einbetten). Zumindest von der Komandozeile klappte das.
    Der Aufruf sollte natürlich möglichst vor allen anderen erfolgen. Sonst ist zu leicht lokalisierbar, wo er her kommt und dann kann man im abgesicherten Modus doch wieder alles ändern.
    Aber das geht mir jetzt schon ein wenig zu sehr in die Tiefe. Ich denke Anregungen sind genug da. Alles weiter sollte jeder für sich klären. Denn wenn das hier noch vertieft wird, ist die Gefahr des Mißbrauchs sicher hoch. Und hier war ja eigentlich Sicherheit das Anliegen.

  • Diskketten Passwortscript

    • BugFix
    • 9. Juli 2008 um 15:34

    Also, ich habs grad mal getestet. Geht super.
    Für Euch zum Testen, Taschenrechner an Textdatei anhängen:
    1. Erstellt eine beliebige Textdatei (der Einfachheit halber direkt in C:\), z.B. TestADS.txt
    2. Öffnen cmd.exe
    3. Befehlseingabe: type C:\Windows\system32\calc.exe > C:\TestADS.txt:calc2.exe
    4. Funktionstest, Eingabe auf Cmdline: C:\TestADS.txt - Die Textdatei wird geöffnet
    5. start C:\TestADS.txt:calc2.exe - Und siehe da: Der Taschenrechner startet!
    Um den Aufruf nicht offensichtlich zu machen kann er über einen Registry-Aufruf versteckt werden.

    Edit:
    Ich habe gerade eine nichtdokumentierte Variante gefunden, damit wird der ADS allerdings nicht angehängt, sondern in die Ursprungsdatei "eingebettet". Somit funktioniert die TXT-Datei genauso, wie eine EXE! ( Allerdings ist die Textdatei als solche unbrauchbar ;) )
    So gehts:
    1. Verknüpfen
    type C:\Windows\system32\calc.exe > C:\TestADS.txt
    2. Ausführen
    C:\TestADS.txt
    Das ist natürlich für einen versteckten Aufruf ideal. Man kann z.B. "mslogo.jpg" verwenden um dort das Skript einzubauen. Der Aufruf des Logos ist sicher absolut unverfänglich. Dadrüber wird dein Bruder wohl nicht stolpern ;-).

  • Internet Explorer Login - HTTPS

    • BugFix
    • 9. Juli 2008 um 14:23

    Schau dir mal die Bsp. in der Hilfe zu _IEFormSubmit() an. Das erklärt eigentlich alles.

  • Namen der Netzwerkverbindungen anzeigen und eventuell ändern

    • BugFix
    • 9. Juli 2008 um 11:24

    Suchst du sowas?

    [autoit]

    $out = ''
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\microsoft\homenet")
    $colItems = $objWMIService.ExecQuery("Select * from HNet_Connection")

    [/autoit][autoit][/autoit][autoit]

    For $objItem In $colItems
    $out &= "GUID: " & $objItem.GUID & @LF
    $out &= "Is LAN Connection: " & $objItem.IsLANConnection & @LF
    $out &= "Name: " & $objItem.Name & @LF
    $out &= "Phone Book Path: " & $objItem.PhoneBookPath & @LF & @LF
    Next
    ConsoleWrite($out & @CRLF)

    [/autoit]

    Edit:
    Zur Konfiguration von Netzwerkadaptern hatte ich auch mal was erstellt: Link

  • Datenbank

    • BugFix
    • 9. Juli 2008 um 10:04

    Wenn du die Daten in eine Textdatei schreibst, am Besten alle Daten eines Datensatzes in eine Zeile. Als Trennzeichen zwischen den einzelnen Feldern mußt du etwas wählen, was nicht im Text vorkommen kann. Vermutlich wäre hier Tabulator (also @TAB) geeignet.
    Dann sieht eine Zeile so aus:

    [autoit]

    $zeile = "Name" & @TAB & "Stichwort" & @TAB & "Beschreibung"

    [/autoit]


    Beim Auslesen kannst du dann die Daten wieder vereinzeln mit

    [autoit]

    $ArrayZeile = StringSplit($zeile, @TAB)

    [/autoit]
  • AutoHotKey-Funktionalität in AutoIt3

    • BugFix
    • 9. Juli 2008 um 09:31

    :thumbup: schöne Sache.
    Am Besten, gleich mal in eine Funktion packen :D

    [autoit]

    ;=====================================================
    ; $Swap 0 = normale Maus, 1 = Maustasten getauscht
    ;=====================================================
    Func _MouseSwap($Swap=0)
    If $Swap <> 0 Then $Swap = 1
    Local $dll = DllOpen("user32")
    DllCall($dll,"int","SwapMouseButton","int",$Swap)
    DllClose($dll)
    EndFunc

    [/autoit]
  • ein Problem mit der Logik :D

    • BugFix
    • 9. Juli 2008 um 08:59

    Hi,
    stimme da McPoldy zu. Wenn du Zugriff auf die Datenbank hast, reicht doch eine sortierte Abfrage und das gewünschte Ergebnis liegt vor.
    So etwa:
    "SELECT team,points,diff FROM table ORDER BY points DESC, diff DESC"

    Solltest du keinen Zugriff auf die Datenbank haben, dann halt eine Lösung mit Array. Auch wenn Oscar wegen der Einfachheit mit mehreren 1D-Array arbeitet ;), bessere Übersicht und einfachere (vor allem mehrstufige) Sortierung geht mit einem 2D-Array.
    $array[n][3] ; [n][0]=TEAM, [n][1]=PUNKTE, [n][2]=DIFF
    Das ganze mehrstufig sortieren (ArrayMore.au3) und fertig.

  • Infobereich Icons benutzen mit XP ja, Vista nein

    • BugFix
    • 8. Juli 2008 um 21:48

    OK, du bist noch nicht lange dabei. Sonst wüßtest du, dass hier ein jeder mal in irgendeiner Weise so einen Spruch reinbekommt ( ich auch :D ).
    Und das ist durchaus nur als kleiner Scherz gemeint.
    In erster Linie wirst du hier qualifizierte Antworten bekommen - aber manchmal... da reitet einen halt der Teufel. ;)
    Nimm nicht alles so bierernst. ^^

  • Salve!

    • BugFix
    • 8. Juli 2008 um 19:03

    Auch von mir ein Herzliches Willkommen "Du Jungspund" :rofl:

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™