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

  • Pic nicht doppelt

    • BugFix
    • 29. Dezember 2008 um 17:03

    Ist doch reines Rechnen, hier mit Tweakys Bsp.:
    belegter Bereich Bild 1:
    X >>> 20 - 120 (x1Start=20, x1Ende=120)
    Y >>> 50 - 120

    belegter Bereich Bild 2:
    X >>> 0 - 100 (x2Start=0, x2Ende=100)
    Y >>> 0 - 70

    Für X-Koordinaten
    Wenn (x2Start >= x1Start UND x2Start <= x1Ende) ODER (x2Ende >= x1Start UND x2Ende <= x1Ende) DANN Kollision

  • Picture-Save

    • BugFix
    • 29. Dezember 2008 um 16:54
    Zitat von Deepred

    Sind Complierte Autoit Scripte nicht immernoch Scripte??? ?(


    Streng genommen ja, da sie nur zur Laufzeit interpretiert werden. Oscar wollte aber zum Ausdruck bringen, dass wir hier die Source unserer Skripte zeigen, damit wir alle unseren Horizont erweitern können. :rolleyes:
    Denn schließlich geht es uns doch darum (zumindest den meisten hoffe ich) eigene Projekte auch unter Einbeziehung bereits erstellter Module anderer User (wozu Fahrrad neu erfinden?) optimal umzusetzen. Dass fremde Skripte auch als solche kenntlich gemacht werden, ist ja wohl eine Selbstverständlichkeit.
    Wer seine Source nicht offenlegen möchte, braucht natürlich seine Skripte nicht zu posten. Dann fehlt ihm aber auch das Feedback zu seinem Werk, da außer zur Funktionalität niemand etwas sagen kann. Oder aber es reagiert niemand, da nur wenige Russisch Roulett spielen und fremde EXE-Files ausführen. 8)

  • Uhr

    • BugFix
    • 29. Dezember 2008 um 14:28

    Da kann man aber noch kürzen :D

    [autoit]

    #include <Inet.au3>
    $time = StringRegExp(_INetGetSource("http://www.uhrzeit.org/atomuhr.html"), '(?:\s*\<div id="anzeige"\>)(\d{2}:\d{2}:\d{2})', 3)
    MsgBox(0, 'Aktuelle Zeit', $time[0])

    [/autoit]
  • au3 Kommentar Remover

    • BugFix
    • 29. Dezember 2008 um 12:08

    Deine Funktion entfernt aber nicht nur Kommentare, sondern einfach alles was nach einem Semikolon kommt. ;(
    Wenn ich z.B. eine DLL-Struktur erstelle, ist das hinterher nur noch Schrott:

    [autoit]

    ; vorher:
    $struc = "int var1;ubyte var2;uint var3;char var4[128]"

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

    ; hinterher:
    $struc = "int var1

    [/autoit]
  • SQLiteMore.au3

    • BugFix
    • 29. Dezember 2008 um 11:53
    Zitat von Schnuffel

    Hallo BugFix,
    für die _SQLite_EXEC brauchst Du eigentlich keine @error-Abfrage.
    Die steht doch schon in der Funktion _SQLITE_EXEC selbst drin, oder?


    Ja, du hast recht. Ich könnte statt 'If $SQLITE_OK <> _SQLite_Exec...' direkt 'Return _SQLite_Exec...' verwenden.
    Da meist mehr als eine Fehlerabfrage in Funktionen stattfindet, habe ich mir angewöhnt Fehler+Fehlernummer zurückzugeben. Ist in diesem Fall tatsächlich nicht notwendig, da nur ein einziger Fehlerfall auftreten kann.
    Danke für's aufmerksame Lesen. :rolleyes:

  • Virtuelles (partielles) Laufwerk Erstellen/Löschen

    • BugFix
    • 29. Dezember 2008 um 11:18

    Noch eine Zusatzfunktion zum Ermitteln aller erstellten Laufwerke mit Lw-Buchstaben und zugehörigem Pfad. ==> s. Post 1

  • 2 While schleifen gleichzeitig durchlaufen

    • BugFix
    • 28. Dezember 2008 um 22:44

    An alle Streithähne: Ich bitte um Mäßigung :S - OK ?
    Zerstört nicht den Geist der Weihnacht, den wir mühevoll versucht haben einzufangen :D

  • Dumme frage

    • BugFix
    • 28. Dezember 2008 um 17:19
    [autoit]

    MsgBox(0, 'Antwort', InputBox('Frage', 'Sag was', 'blabla') )

    [/autoit]
  • Vierte Maustaste als Hotkey?

    • BugFix
    • 28. Dezember 2008 um 15:30

    Mit Standardaufrufen wird man vermutlich nicht weit kommen. Schau mal ob die Treiber-DLL zur Maus vom Hersteller dokumentiert ist. Dann kann man evtl. per DllCall darauf zugreifen.

  • Virtuelles (partielles) Laufwerk Erstellen/Löschen

    • BugFix
    • 28. Dezember 2008 um 14:01
    Zitat von Oscar

    BugFix, mir ist gerade noch aufgefallen, dass man zum Löschen auch den Zielpfad angeben muss.


    Danke für den Hinweis. Habe jetzt eine Erweiterung eingefügt, dass der zugehörige Pfad selbständig ermittelt wird. Es braucht also nur noch der Laufwerksbuchsstabe angegeben werden. (s. Post1)

  • Virtuelles (partielles) Laufwerk Erstellen/Löschen

    • BugFix
    • 28. Dezember 2008 um 10:52

    FirePanther:
    Danke für die Info, dadurch habe ich bemerkt, dass man mit FileExist('Drive:') keine LEEREN CD/DVD-Lw auf Existenz abfragen kann. deshalb wurde deines nicht erkannt.
    Ich habe die Abfrageroutine jetzt geändert, und somit sollte dein Problem gelöst sein. Korrektur s. 1. Post.

    Zitat von FirePanther

    gibts ne möglichkeit sowas dauerhaft zu erstellen? virtuelle laufwerke eben


    Der einfachste Weg: Du schreibst den Aufruf zum Erstellen des Lw in ein Autostart-Skript.

  • Informationen aus CMD auslesen

    • BugFix
    • 27. Dezember 2008 um 18:20

    Schau dir mal StdoutRead() an.

  • Funktion ControlSend maximiert Fenster

    • BugFix
    • 27. Dezember 2008 um 13:32
    Zitat von loli89

    da ich letztens in der schule rekursion behandelt habe, dacht ich mir ich bau es mal ein. funktioniert ja auch, aber wie ihr auf die 100% cpu auslastung kommt weiß ich nicht^^


    Nichts gegen Rekursion, aber sie muß auch beendet werden. Ich sehe hier keinen Endpunkt, daher gehe ich davon aus dass die Funktion totläuft und da die Anzahl der möglichen Rekursionen nicht unendlich ist, ist irgendwann dein Speicher vollgemüllt und die CPU-Last geht auf 100.
    Hier mal dein Programmablauf vom ersten geposteten Skript für die entsprechende Stelle als PseudoCode:

    Code
    ...
    wenn Msg=$Start dann
      Aufruf readini()
      Aufruf go()
        Aufruf sendini()
          mehrere CtrlSend
          erneuter Aufruf sendini() ==> gefangen in endlosem sendini()
        erneuter Aufruf go() ==> gar nicht mehr möglich wegen sendini()
          würde rekursiver Aufruf erfolgreich, würde wieder sendini() gestartet

    Erinnert mich an: Und täglich grüßt das Murmeltier ;) - oder liege ich falsch mit meiner Synthese?

  • Kleines Spiel - Kanonenschießen

    • BugFix
    • 27. Dezember 2008 um 11:31

    [OT]

    Zitat von jendrik

    aber, man kann auch wenn man tot ist weiterscheißen!?!

    [/OT] :rofl:

  • Funktion ControlSend maximiert Fenster

    • BugFix
    • 27. Dezember 2008 um 10:57

    Welchen Sinn hat diese Rekursion?

    [autoit]

    Func go()
    sendini()
    go()
    EndFunc

    [/autoit]


    So wie ich das sehe, löst du damit eine 100%-ige CPU-Last aus und schreibst pausenlos in die INI. Zumal du in der Func sendini wiederum eine Rekursion hast.

  • Virtuelles (partielles) Laufwerk Erstellen/Löschen

    • BugFix
    • 27. Dezember 2008 um 10:51

    Sowas ist ganz nützlich, wenn irgendein Programm 'darauf besteht' Daten von Laufwerk A: einzulesen. Solche Scherze gibt es nach wie vor, nur haben die meisten Laptops und PC inzwischen kein Disketten-Lw mehr ;)
    Das kann man auch dauerhaft mit dem DOS-Befehl SUBST [Lw:] [Pfad] erstellen. Allerdings ist das Löschen dieser Verknüpfung laut Syntaxbeschreibung mit SUBST [Lw:] /D möglich - in der Praxis hat mir aber bisher jeder PC gesagt, dass er den Schalter /D nicht kennt. :rofl:

  • Virtuelles (partielles) Laufwerk Erstellen/Löschen

    • BugFix
    • 26. Dezember 2008 um 23:51

    Hi,
    hiermit lassen sich Ordner-Pfade zu Virtuellen Laufwerken verknüpfen. Die so erstellten Laufwerke werden nicht in der Registry verewigt und sind nur für die Dauer der Sitzung gültig. Nach einem Neustart ist wieder alles 'normal'.

    Edit 27.12.08:
    Hab das noch etwas erweitert:
    - Standardmäßig wird jetzt der erste freie Laufwerksbuchstabe verwendet
    - der Verknüpfungspfad ist jetzt vorbelegt mit '@MyDocumentsDir' ( aber nur, weil ich die Parameterreihenfolge nicht ändern wollte :D )
    - bei Erfolg wird der Buchstabe des erstellten od. gelöschten Laufwerks zurückgegeben.

    Edit 28.12.08:
    Die Prüfung auf Existenz der Lw mit FileExists() funktioniert nicht bei leeren CD/DVD-Lw. Dadurch konnte bei Verknüpfung ohne Lw-Angabe dem CD-Lw der Buchstabe 'geklaut' werden :D. Habe den Abfragemodus geändert und auch die empfohlenen Änderungen von progandy und Oscar eingebunden - Dank an Euch.

    Edit 28.12.08 #2
    Dank eurer Hinweise wird die Funktion immer professioneller ;)
    Habe jetzt eingefügt, dass zum Löschen nicht mehr der Pfad angegeben werden muss. Den sucht sich die Funktion jetzt selbst raus.
    Zum Löschen reicht nun: _PartialDrive([Lw:], -1, 1)

    Edit 29.12.08
    Für all jene, die nicht nur vergessen haben, mit welchem Pfad verknüpft wurde, sondern auch welches Lw ertsellt wurde, habe ich noch eine Zusatzfunktion erstellt, die (sofern vorhanden) alle partiellen Laufwerke mit Lw-Buchstaben und verknüpftem Pfad als 2D-Array [Lw][Pfad] ausgibt. ;)
    Das ließe sich natürlich auch noch mit in die erste Funktion integrieren (z.B. mit Lw-Parameter '0' als erste Abfrage in der Func).

    _PartialDrive()
    [autoit]

    ; 'c:\test' als Laufwerk 'Q:'erstellen
    If _PartialDrive('Q:', 'c:\test') Then
    MsgBox(0, '', 'Partielles Laufwerk erstellt.')
    Else
    MsgBox(0, '', 'Erstellung Partielles Laufwerk fehlgeschlagen.')
    EndIf

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

    ; Laufwerk 'Q:' wieder löschen
    If _PartialDrive('Q:', -1, 1) Then
    MsgBox(0, '', 'Partielles Laufwerk gelöscht.')
    Else
    MsgBox(0, '', 'Löschen Partielles Laufwerk fehlgeschlagen.')
    EndIf

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

    ; Verknüpfung mit 'Eigene Dateien' auf erstes freies Laufwerk
    Local $newDrive = _PartialDrive()
    If Not @error Then
    MsgBox(0, '', 'Neues Laufwerk: ' & $newDrive)
    Else
    MsgBox(0, '', 'Fehler')
    EndIf

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

    ; Verknüpfung mit 'Eigene Dateien' wieder löschen
    _PartialDrive($newDrive, -1, 1)
    If Not @error Then
    MsgBox(0, '', 'Laufwerk gelöscht: ' & $newDrive)
    Else
    MsgBox(0, '', 'Fehler')
    EndIf

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

    ;==================================================================================================
    ; Function Name: _PartialDrive($sDeviceName=-1, $sTargetPath=-1, $iDelete=0)
    ; Description:: Erstellt od. löscht ein Virtuelles Laufwerk. Das Laufwerk wird
    ; beim Herunterfahren des PC automatisch gelöscht.
    ; Parameter(s): $sDeviceName Buchstabe des zu erstellenden/löschenden Laufwerks
    ; -1 erster freier Lw-Buchstabe (Standard)
    ; $sTargetPath Verknüpfungspfad, -1= Erstellen: @MyDocumentsDir (Standard)
    ; Löschen: der mit dem Laufwerk verknüpfte Pfad wird automatisch zugeordnet
    ; optional: $iDelete 0=Erstellen (Standard); 1=Löschen des Laufwerks
    ; Return Value(s): Erfolg Lw-Buchstabe des erstellten/gelöschten Laufwerks
    ; Fehler 0 @error=1 übergebener Lw-Buchstabe existiert bereits (nur Erstellen)
    ; @error=2 kein freier Lw-Buchstabe vorhanden (nur Erstellen)
    ; @error=3 kein gültiger Verknüpfungspfad
    ; @error=4 Aktion fehlgeschlagen
    ; @error=5 kein gültiges Lw zum Löschen angegeben
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _PartialDrive($sDeviceName=-1, $sTargetPath=-1, $iDelete=0)
    If $sDeviceName = -1 And $iDelete = 0 Then
    Local $aDrives = DriveGetDrive("ALL")
    Local $oDrives = ObjCreate("System.Collections.ArrayList")
    For $i = 1 To UBound($aDrives) -1
    $oDrives.Add(Asc(StringLeft($aDrives[$i],1)))
    Next
    Local $j = 100
    While $oDrives.Contains($j)
    $j += 1
    If $j > 122 Then Return SetError(2,0,0)
    WEnd
    $sDeviceName = Chr($j) & ':'
    ElseIf ($sDeviceName = -1 Or Not FileExists($sDeviceName)) And $iDelete = 1 Then
    Return SetError(5,0,0)
    ElseIf $sTargetPath = -1 And $iDelete = 1 Then
    Local $ret = DllCall("kernel32.dll", "long", "QueryDosDeviceA", "str", $sDeviceName, "str", "", "long", 260)
    If $ret[0] = 0 Then
    Return SetError(4,0,0)
    Else
    $sTargetPath = StringRegExpReplace($ret[2], '(\W*)([a-zA-Z].*)', '$2')
    EndIf
    EndIf
    $sDeviceName = StringRegExpReplace(StringLower($sDeviceName), '(.*)([a-z]{1}:)(.*)', '$2')
    If $iDelete = 0 And FileExists($sDeviceName) Then Return SetError(1,0,0)
    If $sTargetPath = -1 Then $sTargetPath = @MyDocumentsDir
    If Not FileExists($sTargetPath) Then Return SetError(3,0,0)
    Local $iFlag = 0x0
    If $iDelete <> 0 Then $iFlag = 0x2
    Local $ret = DllCall('kernel32.dll', 'long', 'DefineDosDeviceA', _
    'long', $iFlag, 'str', $sDeviceName, 'str', $sTargetPath)
    If $ret[0] = 0 Then
    Return SetError(4,0,0)
    Else
    Return $sDeviceName
    EndIf
    EndFunc ;==>PartialDrive

    [/autoit]
    _PartialDriveGet()
    [autoit]

    #include<array.au3>
    $a = _PartialDriveGet()
    _ArrayDisplay($a)

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

    ;===============================================================================
    ; Function Name: _PartialDriveGet()
    ; Description:: Ermittelt partiell erstellte Laufwerke
    ; Return Value(s): 2D-Array mit (sofern vorhanden) Lw-Buchstabe und Verknüpfungspfad
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _PartialDriveGet()
    Local $aFixed = DriveGetDrive('FIXED')
    Local $aOut[1][2] = [['Lw','Pfad']]
    For $i = 1 To UBound($aFixed) -1
    Local $ret = DllCall("kernel32.dll", "long", "QueryDosDeviceA", "str", $aFixed[$i], "str", "", "long", 260)
    Local $path = StringRegExpReplace($ret[2], '(\W*)([a-zA-Z].*)', '$2')
    If StringRegExp($path, '[a-zA-Z]:.*') Then
    ReDim $aOut[UBound($aOut)+1][2]
    $aOut[UBound($aOut)-1][0] = $aFixed[$i]
    $aOut[UBound($aOut)-1][1] = $path
    EndIf
    Next
    Return $aOut
    EndFunc ;==>_PartialDriveGet

    [/autoit]
  • Welche Lösung nehmen???

    • BugFix
    • 26. Dezember 2008 um 14:35
    Zitat von Mario2323

    das mit switch ist mir zu unsicher


    Was soll das denn bedeuten ??
    Der Unterschied ist folgender:
    - Switch: Werte einer Variable werden ausgewertet
    - Select: Werte unterschiedlicher Variablen werden ausgewertet
    Wenn du nur eine Variable hast (wie hier $msg) ist also Switch effektiver, da schneller.
    Und nun erklär mal, was dadran 'unsicher' ist. :huh:

  • Feiertagsberechnung

    • BugFix
    • 26. Dezember 2008 um 13:58
    Zitat von Padmak

    über weiterverwendung hab ich noch nicht nachgedacht^^


    Daraus ist das entstanden: Ewiger Kalender - Feiertage ;)

  • Combobox mit Scrollbar

    • BugFix
    • 26. Dezember 2008 um 13:53

    Wo willst du eine Scrollbar haben? - Vielleicht so:

    [autoit]

    $gui = GUICreate('test')
    $combo = GUICtrlCreateCombo('eins', 10, 10, 90, 120, $WS_VSCROLL)
    GUICtrlSetData(-1, 'zwei|drei|vier|fünf|sechs|sieben|acht|neun|zehn')
    GUISetState()

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]

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™