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

Beiträge von BinDannMalWeg

  • Arbeitszeiten dokumentieren (überstunden fehlen)

    • BinDannMalWeg
    • 6. September 2012 um 14:59

    Was funktioniert denn nicht? Ich habe hier gerade keine geeignete Testumgebung... :P

  • Arbeitszeiten dokumentieren (überstunden fehlen)

    • BinDannMalWeg
    • 6. September 2012 um 14:19
    Zitat von Gabbadome

    Sollte es eine andere Möglichkeit geben, dann erklärs mir bitte

    Zum Beispiel so:

    Spoiler anzeigen
    [autoit]

    GUICreate("Arbeitszeiten", 300, 190)
    $Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
    $Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
    $Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
    $PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
    $PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
    GUICtrlCreateLabel("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
    GUICtrlCreateLabel("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
    GUICtrlCreateLabel("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
    GUICtrlCreateLabel("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
    ; Bis hier habe ich dein Script eigentlich nur etwas 'geschrumpft'...
    ; Die folgenden Deklarationen (So nennt man das wenn man ne Variable erstellt) dienen nur der Vereinfachung/verkürzung des Scripts:
    Global $Dir = @UserProfileDir & '\Arbeits-Info\' ; In der Variable $Dir speichern wir den Pfad zu unserem 'Arbeitsverzeichniss'
    Global $Date = @MDAY & '/' & @MON & '/' & @YEAR ; $Date wird mit dem heutigen Datum sammt trennzeichen bestückt
    Global $LogFile = $Dir & 'Arbeitszeiten-' & $Date & '.txt' ; und in $LogFile speichern wir uns den kompletten Pfad zu unserer Log-datei...
    If Not FileExists($Dir) Then DirCreate($Dir) ; Wenn du die englische Sprache beherrschst, sollte diese zeile wohl klar sein... :P
    GUISetState(@SW_SHOW)

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

    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $Start
    ; Zu fileWrite kannst du dir ja mal die benötigten parameter ind er Hilfe ansehen... ;)
    ; Anonsten werden hier nur Variablen, Strings (Zeichenketten) und Autoit interne Makros (zB. @HOUR -> aktuelle Stunde)verwendet...4
    ; Sie alle werden in der Hilfe erläutert... ;)
    FileWrite($LogFile, '####NEUER TAG#### - ' & $Date & @CRLF & 'Arbeiszeit von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $PauseStart
    FileWrite($LogFile, 'Pause von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $PauseEnde
    FileWrite($LogFile, 'Pause bis ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $Stop
    FileWrite($LogFile,'Arbeitszeit bis '& @HOUR & ':' & @MIN & ':' & @SEC & @CRLF & '================================' & @CRLF)
    EndSelect
    Until $msg = -3 Or $msg = $Ende ; in dieser zeile habe ich noch $GUI_EVENT_CLOSE durch -3 ersetzt, da dann das große Include nicht mehr benötigt wird... ;)

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

    Exit

    [/autoit]

    Ja ich habe dein Script 'nur' nach Autoit portiert... ;)

    Und wenn du keinen 'Nerv' zum deklarieren von variablen hast, dann kannst du das mit dem programmieren gleich wieder lassen... :P
    Edit: Ich habe meinen/deinen Code mal auskommentiert... Noch ein kleiner Tipp: drück in Scite öfter mal F1 ;)

  • Arbeitszeiten dokumentieren (überstunden fehlen)

    • BinDannMalWeg
    • 6. September 2012 um 14:01

    Nur mal so zur Info: Ich habe mir dein Scriptchen angesehen und ich habe die 'gewünschte' Funktion auch verstanden, aber wie soll ich denn an deinem Script erkennen, dass du bis vor Kurzem 'alles' mit Batch-Scripten erledigt hast? Ich mein ich kann das doch nicht riechen? ^^ Naja wie dem auch sei solltest du dir, auch wenn du scheinbar sehr viel Überwindung dafür benötigst, den passenden Hilfe-Eintrag zu FileWrite() anschauen... ;)

  • Arbeitszeiten dokumentieren (überstunden fehlen)

    • BinDannMalWeg
    • 6. September 2012 um 13:46

    Ehhhhhm du kennst den Befehl FileWrite() ?(

  • Autoit-Datei während Laufzeit einbinden

    • BinDannMalWeg
    • 5. September 2012 um 22:59

    Ganz pauschal muss ich dir da leider sagen: Nein! Natürlich gibt es Ausnahmen, zum Beispiel wenn auf dem PC Autoit installiert ist, oder wenn die Funktion nur aus 'einzelnen' Funktionen besteht, die nicht zusammen abreiten und sich daher mit Execute() ausführen lassen. Alternativ lässt sich so etwas natürlich auch über eine _RunPE() Funktion lösen, die ich hier jetzt aber nicht posten werde, da damit viel Unsinn gemacht werden kann... ;) *hust* Google *husthust*
    Worum gehts denn speziell? Wenn du uns sagst was du eigentlich machen möchtest, lässt sich dir viel viel besser helfen... ;)

  • GDIPlus | *Kein Sinvollen Titel für das Thread gefunden*

    • BinDannMalWeg
    • 5. September 2012 um 22:52

    Es gibt ein Redraw-Event, das für solche Abfragen benutzt wird. Ich hab das schon bei vielen GDI-Scripten gesehen, allerdings hab ich es selbst noch nie benutzt... ^^ Ich denke früher oder später wird einer der GDI+ Pro's hier reinschneien und die Lösung posten... :P

  • Server Client Datei Empfang schlägt fehl FileRead gibt error 0 zurück

    • BinDannMalWeg
    • 5. September 2012 um 15:57

    Wozu machst du den Umweg über StringFormat?

    Spoiler anzeigen
    [autoit]

    Local $Resvname = '31-08.rar'
    Local $FileDir = @ScriptDir & '\\rar\' & $Resvname

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

    $FileHandle = FileOpen($FileDir, 16)
    $FileRead = FileRead($FileHandle)
    FileWrite(@ScriptDir & '\get\test.rar', $FileRead)
    ConsoleWrite('error: ' & @error & @CRLF)
    ConsoleWrite($FileRead)
    FileClose($FileHandle)

    [/autoit]

    ;)

  • InetGet - Fehlermeldung bei nicht bestehender Internetverbindung

    • BinDannMalWeg
    • 4. September 2012 um 18:26

    Oder man liest die Hilfe zu den Befehlen die man verwendet... ;)

    Zitat

    Zitat aus der Hilfe zu InetgetInfo()
    Parameter 4 - Der Fehlerwert für den Download. Dieser Wert ist willkürlich. Den Wert darauf zu prüfen, ob er null ist, reicht aus um den Auftritt von Fehlern festzustellen.


    ^^

  • Server Client Datei Empfang schlägt fehl FileRead gibt error 0 zurück

    • BinDannMalWeg
    • 4. September 2012 um 15:59

    Achso okay das hatte ich dann wohl übersehen... :whistling:
    Generell würde ich dir aber empfehlen deine Scripte etwas umzubauen, denn wenn mit TCP gearbeitet wird ist es meist besser die Pakete intern 'unvorbereitet' zu empfangen, da sich ansonsten (wenn mal ein wichtiges Paket verloren geht oder fehlerhafte Pakete ankommen) das gesamte Programm aufhängen wird, wenn man nicht alles drei mal absichert... Daher wäre es zu empfehlen nach dem alles gestartet/erstellt/verbunden wurde in eine Hauptschleife über zu gehen, die ALLE Pakete empfängt und dann eben mit einem Switch nach eigenen 'Befehlen' sortiert. Möchtest du dann eine zum Beispiel eine Liste aller laufenden Prozesse anfordern, sendest du ein Paket mit dem entsprechenden Befehl an das Gegenüber und dieses schickt die Antwort dann zurück, wenn es die Antwort ganz erstellt/ausgeführt hat. Das hat dann den Vorteil, dass dein Script sich nicht aufhängt wenn mal eine Antwort etwa länger braucht oder ausbleibt. Außerdem lassen sich so prima auch mehrere Befehle/Pakete schnell nacheinander 'in Auftrag geben' da eben nicht speziell auf die Antwort gewartet wird... ;)

  • Auch von mir ein Hallöchen! xd

    • BinDannMalWeg
    • 4. September 2012 um 13:43

    Nein, eben nicht Awesome! In einem seiner Threads (Wenn nicht sogar seinem ersten) suchte er Hilfe zum designen seiner GUIs, da er schließlich nicht sehen kann, wo sich ein Button/Input o. ä. befindet... ;)

  • Server Client Datei Empfang schlägt fehl FileRead gibt error 0 zurück

    • BinDannMalWeg
    • 4. September 2012 um 12:55

    Ich muss zugeben ich habe deinen Post + Quellcode nur überflogen, aber was mir direkt aufgefallen ist, ist folgendes: In deinem Server-Script beginnst du in Zeile 29 eine Endlos-Schleife, die so weit ich das überblicken kann KEINE Abbruchbedingung besitzt. Daher ist es unmöglich, dass deine eigentliche Hauptschleife in Zeile 114 jemals aufgeführt wird. Ich verweise hier gerne nochmal auf dieses Tutorial von chesstiger, in dem die Grundlegende Strukturierung von Skripten ziemlich einfach erklärt wird... ;) Denn wenn du all deine Funktionen in einem 'Block' am Ende deines Scripts 'gelagert' hättest, würde so etwas ziemlich schnell auffallen... :P

  • Nach Submit geht es nicht weiter

    • BinDannMalWeg
    • 3. September 2012 um 20:07

    Kein Wunder, der Submit 'Button' läuft ja auch über Javascript... ;)

  • Kollisionen (in 2D)

    • BinDannMalWeg
    • 2. September 2012 um 18:15

    Ich dachte ich steuere auch einfach mal eine Funktion bei... _Kollision_Strecke_Punkt()
    Hier einmal in kurz:

    [autoit]

    Func _Kollision_Strecke_Punkt($Px, $Py, $Ax, $Ay, $Bx, $By)
    Return (Sqrt(($Ax - $Bx) ^ 2 + ($Ay - $By) ^ 2) = (Sqrt(($Ax - $Px) ^ 2 + ($Ay - $Py) ^ 2) + Sqrt(($Bx - $Px) ^ 2 + ($By - $Py) ^ 2)))
    EndFunc

    [/autoit]

    und hier nochmal in lang:

    Spoiler anzeigen
    [autoit]

    Func _Kollision_Strecke_Punkt__Lang($Px, $Py, $Ax, $Ay, $Bx, $By)
    ;wenn
    ; strecke zwischen a und p
    ;plus
    ; strecke zwischen b und p
    ;gleich
    ; strecke zwischen a und b
    ;dann
    ; return 1
    $Strecke_AP = _Distance($Ax, $Ay, $Px, $Py) ; --> Sqrt(($Ax-$Px)^2+($Ay-$Py)^2)
    $Strecke_BP = _Distance($Bx, $By, $Px, $Py) ; --> Sqrt(($Bx-$Px)^2+($By-$Py)^2)
    $Strecke_AB = _Distance($Ax, $Ay, $Bx, $By) ; --> Sqrt(($Ax-$Bx)^2+($Ay-$By)^2)
    If $Strecke_AB = ($Strecke_AP + $Strecke_BP) Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_Kollision_Strecke_Punkt__Lang

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

    Func _Distance($_Ax, $_Ay, $_Bx, $_By)
    Return Sqrt(($_Ax - $_Bx) ^ 2 + ($_Ay - $_By) ^ 2)
    EndFunc ;==>_Distance

    [/autoit]
  • Func mit If Abfrage

    • BinDannMalWeg
    • 2. September 2012 um 17:42

    Also erstmal solltest du dein komplettes Script posten, zweitens wäre es sehr sehr viel übersichtlicher, wenn du zuvor in Scite einmal Strg+T drücken würdest (dieser Shortcut führt das Plugin Tidy aus) und drittens solltest du dir angewöhnen Quellcodes immer in einem Spoiler (die SP-Taste im Editor) und dann im Spoiler in einem Autoit-Tag (das Autoit-Zeichen im Editor) zu posten... ;) Außerdem wäre es nett, wenn du nocheinmal versuchen könntest dein Problem in einem Post verständlich und vor Allem komplett zu erläutern. Danke :)

  • Auto Install [In Arbeit] {on Ice}

    • BinDannMalWeg
    • 2. September 2012 um 17:16

    Ich wollte mir gerade mal dein Script anschauen, doch mir fehlt leider die "Info.au3" :huh: Es wäre nett wenn du diese auch anhängen könntest... Nun zur eigentlichen Grundfunktion des Scripts: Verstehe ich das richtig, dass die Idee dahinter ist für viele verschiedene Installationen eine Autoit-Funktionen zu erstellen, die die selbige dann automatisch installiert? Wenn dem so ist, solltest du vielleicht noch einmal über darüber nachdenken, ob ein solches Vorgehen wirklich sinnvoll ist. Denn jedes mal, wenn sich an einer Installation etwas ändert, müsste eine neue Version der Funktion erstellt werden... Das wäre, bei einer größeren Anzahl von Funktionen, allerdings nur durch eine riesige Community an fähigen Autoit-Scriptern wirklich realisierbar?!
    Wäre es dann nicht einfacher ein Programm zu entwickeln, welches es 'Nicht-Programmierern' ermöglicht über 'Knöpfe und Felder' eine Automatische-Installationen zu erstellen und diese dann in Form von 'Paketen' zu exportieren? Diese Pakete könnten dann zum Beispiel auch mit mehreren Anderen in einer Exe-Datei zusammen als 'eine' ausführbare Installation zusammen gepackt werden usw usw usw... :) Das wäre mal ein wirklich sinnvolles Programm, aber ich schätze mal das gibts schon... ^^

  • Lizenz-Me | Deine Lizenz API!

    • BinDannMalWeg
    • 2. September 2012 um 16:12
    Zitat

    Um solch eine Fälschung zu entlarven wird gerade gearbeitet.

    Allerdings muss die Auswertung der Server-Antwort IMMER clientside passieren und genau hier liegt der Schwachtpunkt: Autoit ;) Und auch wenn man das Script wirklich sicher gegen Decompiling schützen würde, reicht eine Umleitung (hosts-Datei) von "zaziki.pf-control.de" auf den eigenen PC, auf dem dann der Emulator läuft, aus um die Authentifizierung aus zu hebeln... ;)

  • Beste Inspiration für Skripte

    • BinDannMalWeg
    • 2. September 2012 um 16:05

    *hust* Warum so lang?

    [autoit]

    Local $Lyrics = '', $B = 'bottles'
    For $i = 99 To 1 Step -1
    If $i = 1 Then $B = 'bottle'
    $Lyrics &= $i & ' ' & $B & ' of beer' & @CRLF & $i & ' ' & $B & ' of beer on the wall' & @CRLF & $i & ' ' & $B & ' of beer' & @CRLF & 'Take one down, pass it around' & @CRLF
    Next
    MsgBox(0,'99',$Lyrics)

    [/autoit]

    *hust* *hust* :P

  • Lizenz-Me | Deine Lizenz API!

    • BinDannMalWeg
    • 2. September 2012 um 15:47

    Die Idee ist im Grunde gut, nur mangelt es wohl an der Umsetzung und auch an Autoit selbst... Ich möchte jetzt nich alles wieder aufrollen, was meine Vorredner schon angemerkt haben, aber eine 'Sicherheits-Abfrage' für die man nur einen Usernamen benötigt, kann doch nicht dein Ernst sein, oder? 8| Vor allem wird in der UDF gleich noch eine Funktion mitgeliefert, mit deren Hilfe jeder sich beliebig viele 'Schlüssel' erstellen kann?! Man muss sich einfach nur ansehen, welche URL das 'geschützte' Programm herunterlädt und schon ist man im Besitz des Usernamens, mit dem sich dann beliebig viele Schlüssel erstellen lassen... :whistling: Noch dazu wird vom Server-PHP-Script anscheinend nur eine 1 oder eine 0 zurückgegeben?! Das heißt selbst ein Server-Emulator wäre in unter 15 Zeilen geschrieben... :huh:

  • Autoit Ocarina?

    • BinDannMalWeg
    • 2. September 2012 um 15:05

    Klar kannst du dir eine DLL programmieren und dann deine eigenen Funktionen daraus verwenden. ;) Allerdings wissen wir nicht ob du auch die nötigen Kenntnisse in zu mindest einer höheren Programmiersprache besitzt, um eine solche DLL zu schreiben... Außerdem stellt sich dann die Frage auf: Warum nicht gleich das komplette Programm in der schnelleren Programmiersprache schreiben?

  • Func mit If Abfrage

    • BinDannMalWeg
    • 2. September 2012 um 14:55

    Ich schätze er meint eher so etwas:

    Spoiler anzeigen
    [autoit]

    $Tag = InputBox('Eingabe','Geben sie einen Wochentag ein:','Samstag')

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

    Switch $Tag
    Case 'Montag'
    _Monday()
    Case 'Dienstag'
    _Tuesday()
    Case 'Mittwoch'
    _Wednesday()
    Case 'Donnerstag'
    _Thursday()
    Case 'Freitag'
    _Friday()
    Case 'Samstag'
    _Saturday()
    Case 'Sonntag'
    _Sunday()
    Case Else
    MsgBox(16,'Ausgabe','"'&$Tag&'" ist kein deutscher Wochentag!')
    EndSwitch

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

    MsgBox(64,'Beenden','Dieses Beispiel wird nun beendet...')
    Exit

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

    Func _Monday()
    MsgBox(64,'Ausgabe','Die Funktion _Monday() wurde aufgerufen!')
    EndFunc

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

    Func _Tuesday()
    MsgBox(64,'Ausgabe','Die Funktion _Tuesday() wurde aufgerufen!')
    EndFunc

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

    Func _Wednesday()
    MsgBox(64,'Ausgabe','Die Funktion _Wednesday() wurde aufgerufen!')
    EndFunc

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

    Func _Thursday()
    MsgBox(64,'Ausgabe','Die Funktion _Thursday() wurde aufgerufen!')
    EndFunc

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

    Func _Friday()
    MsgBox(64,'Ausgabe','Die Funktion _Friday() wurde aufgerufen!')
    EndFunc

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

    Func _Saturday()
    MsgBox(64,'Ausgabe','Die Funktion _Saturday() wurde aufgerufen!')
    EndFunc

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

    Func _Sunday()
    MsgBox(64,'Ausgabe','Die Funktion _Sunday() wurde aufgerufen!')
    EndFunc

    [/autoit]


    Edit: Okay RR04 war schneller... :whistling:

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™