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

Beiträge von James

  • fakultätsproblem

    • James
    • 11. April 2012 um 16:09

    Ich versteh' nicht ganz, wieso man sowas überhaupt mir Rekursion lösen sollte...
    Edit: x0r war schneller. x0r der Meinung bin ich auch.

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(fact(20) & @LF)
    Func fact($Number)
    Local $Result = 1, $i
    For $i = Int($Number) To 2 Step -1
    $Result *= $i
    Next
    Return $Result
    EndFunc

    [/autoit]
  • MineCraft Server Helper Tool

    • James
    • 11. April 2012 um 13:17

    Wenn ich den Server richtig verstanden habe, erhällt man mit "list" eine Liste der Player.
    Diese müsstest du dann in das Format "User1|User2|..." umwandeln. (Da ich keinen Server zum Testen habe, weiß ich nicht, wie dieser die Daten ausgibt.)

    MfG, James

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • James
    • 10. April 2012 um 20:43

    In dem 3. Spoiler von Tweaky steht übrigens

    Zitat

    insert Includes at fisrt line

    statt

    Zitat

    insert Includes at first line

    Aber ich denke sowas ist eher nebensächlich.

    MfG, James

  • Es ist möglich ein Programm sich selber am ende löschen zu lassen....

    • James
    • 8. April 2012 um 21:49

    Erinnert mich an _SelfDelete():

    [autoit]

    Func _SelfDelete()
    Local $cmdfile
    FileDelete(@TempDir & "scratch.cmd")
    $cmdfile = ':loop' & @CRLF _
    & 'del "' & @ScriptFullPath & '"' & @CRLF _
    & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
    & 'del ' & @TempDir & 'scratch.cmd'
    FileWrite(@TempDir & "scratch.cmd", $cmdfile)
    Run(@TempDir & "scratch.cmd", @TempDir, @SW_HIDE)
    EndFunc

    [/autoit]

    Edit: SEuBo war schneller...

  • IIS über Autoit steuern/auslesen

    • James
    • 5. April 2012 um 09:31

    Vielleicht hilft dir ja diese Seite weiter.
    MfG, James

    Edit: Ok, anscheinend hast du was anderes gesucht...

  • ????? "variable".Befehl ??????

    • James
    • 4. April 2012 um 19:34
    Zitat von BadBunny

    Die Befehle kann man idR nicht direkt finden, dafür gibts dann Beschreibungen und Hilfen für das Objekt wie z.B. für Skype, das nennt sich dann API.

    Meine Methode ist zwar umständlich, aber immerhin funktioniert es: Gib in der Powershell-Konsole einfach folgendes ein:

    Code
    new-object -comobject "Name des Objekts" | get-member

    (Wenn Powershell installiert ist, kann man die Konsole z.B. über den cmd-Befehl "powershell" aufrufen.)

    MfG, James

  • Dividieren mit Rest

    • James
    • 24. März 2012 um 15:51

    Also sozusagen sowas wie die Modulo-Funktion in so ziemlich jeder Programmiersprache?
    Oder:

    [autoit]

    Func Modulo($A, $B)
    Return (($A/$B)-Int($A/$B))*$B
    EndFunc

    [/autoit]
  • SciTE - alte Farben oder neue Farben - Abstimmung

    • James
    • 24. März 2012 um 14:53

    Mich stören die Farben in der Hilfe auch nicht, und in SciTE kann man die Farben ja sowieso ganz nach seinen Vorlieben anpassen...

  • Verbesserungsmöglichkeiten

    • James
    • 24. März 2012 um 14:24

    Aus aktuellem Anlass hätte ich 2 Ideen, die man vielleicht so umsetzen könnte:
    1) Bei Beiträgen, bei denen der letzte Post mehr als 3 Monate her ist, könnte man ja vielleicht einen Hinweis einbauen, dass das Thema zu alt ist, und man doch bitte ein neues starten sollte, es sei denn, die Antwort ist extrem wichtig.
    2) Bei Beiträgen, bei denen der letzte Post mehr als 6 Monate/1 Jahr her ist, die "Antworten"-Funktion komplett deaktivieren (außer für den Ersteller und alle mit mehr Rechten).

    Die Umsetzung ist unter Umständen etwas komplizierter, dessen bin ich mir bewusst, aber ich finde, das ist eine Überlegung wert.

    MfG, James C.

  • "Listview-UDF" oder wie man User zur Verzweiflung bringt

    • James
    • 24. März 2012 um 08:40
    Code
    AutoIt:3.3.8.0 AdminMode   (Os:WIN_7/SP0A, v.1/X64   OSLang:0409 Keyboard:00000407)
    ItemCount: 5
    ColCount 1
    ItemText: test1

    Also bei mir funktioniert das Beispiel von progandy auch... (und ich hab' Service Pack 0, falls das irgendwas mit dem System zu tun hat)

  • Matrix Code

    • James
    • 16. März 2012 um 21:34

    Wenn ich mir deine "API" so ansehe frage ich mich, was an meinem 5min-Beispiel so schlecht aussieht.
    Außerdem würde ich dir wirklich raten auf einzelne Labels zu verzichten, das ist nur Verschwendung von Ressourcen.

    MfG, James

  • Matrix Code

    • James
    • 16. März 2012 um 21:04

    Ich hab' mal schnell was mit GDI+ gebastelt:
    name22 die Frau im roten Kleid ist es leider noch nicht so ganz...
    (Ich bin mir auch sicher, dass man den Code noch optimieren kann.)

    Matrix
    [autoit]

    #NoTrayIcon
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()

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

    Global $Width = 60, $Height = 40, $Size = 10
    Global $Gui, $Graphic, $Bitmap, $Buffer
    Global $x = 0, $y = 0

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

    Opt('GUIOnEventMode', 1)
    $Gui = GUICreate('Matrix', $Width*$Size, $Height*$Size)
    $Graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width*$Size, $Height*$Size, $Graphic)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
    GUISetState(@SW_SHOW, $Gui)
    GUISetOnEvent(-3, 'Quit')

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

    _GDIPlus_GraphicsClear($Buffer, 0xFF000000)
    $Brush = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    $Format = _GDIPlus_StringFormatCreate()
    $Family = _GDIPlus_FontFamilyCreate('Arial')
    $Font = _GDIPlus_FontCreate($Family, $Size*0.7)
    AdlibRegister('Draw', 20)

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

    Do
    Until False

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

    Func Quit()
    AdlibUnRegister('Draw')
    _GDIPlus_FontDispose($Font)
    _GDIPlus_FontFamilyDispose($Family)
    _GDIPlus_StringFormatDispose($Format)
    _GDIPlus_BrushDispose($Brush)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($Graphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func Draw()
    _GDIPlus_GraphicsFillRect($Buffer, $x, $y, $Size, $Size)
    $Layout = _GDIPlus_RectFCreate($x, $y, $Size, $Size)
    $Info = _GDIPlus_GraphicsMeasureString($Buffer, 'A', $Font, $Layout, $Format)
    _GDIPlus_GraphicsDrawStringEx($Buffer, RandomAlNum(), $Font, $Info[0], $Format, $Brush)
    _GDIPlus_GraphicsDrawImageRect($Graphic, $Bitmap, 0, 0, $Width*$Size, $Height*$Size)
    $y += $Size
    If ($y > ($Height*$Size)-$Size) Then
    $y = 0
    $x += $Size
    If ($x > ($Width*$Size)-$Size) Then
    $x = 0
    EndIf
    EndIf
    EndFunc
    Func RandomAlNum()
    Local $rand = Random(0, 35, 1)
    Switch $rand
    Case 0 To 25
    Return Chr(97+$rand)
    Case 26 To 35
    Return String($rand-26)
    EndSwitch
    EndFunc

    [/autoit]
  • Matrix Code

    • James
    • 16. März 2012 um 20:10
    Zitat von TheDearDead

    Jo gute Idee poste doch bitte wenn du fertig bist


    Stellt sich mir nur gerade die Frage, was du in der Matrix an Information sehen willst.

  • Matrix Code

    • James
    • 16. März 2012 um 19:38

    Ich finde auch es sieht schon ganz nett aus, noch besser wäre es natürlich, wenn man richtige Informationen codiert darstellen würde und nicht nur zufällige Zeichen. Ich versuch's einfach mal...

  • Chatbot (jetzt auch mit logischem Denken)

    • James
    • 13. März 2012 um 14:43

    Noch besser wäre allerdings

    Code
    Could you please calculate ([0-9.+*/^\(\) -]+) for Me?

    Dann wird das Calc() überflüssig und man hat folgendes Problem nicht mehr:

    [autoit]

    ConsoleWrite(LookupResponse('Could you please calculate ABC"&MsgBox(0,"","Test")&"XYZ for Me?') & @CRLF)

    [/autoit]


    MfG, James

    Blume Mit der Funktionsweise von ANNs bin ich vertraut,
    ich glaube nur nicht, dass ich das auf den Bereich Chat anwenden kann. ?( :(

  • PenGuin ist 18!

    • James
    • 10. März 2012 um 22:09

    Auch von mir alles Gute zum Geburtstag!

  • Chatbot (jetzt auch mit logischem Denken)

    • James
    • 10. März 2012 um 21:51

    Danke, ja, das ist nicht schlecht (auch wenn es leider nichts mit künstlicher Intelligenz zu tun hat).

    PS: Hat jemand eine Idee, wie man eine richtige AI so in etwa aufbauen müsste?

  • Chatbot (jetzt auch mit logischem Denken)

    • James
    • 10. März 2012 um 21:34

    Da die letze Version dieses Programms (Chatbot kann man das eigentlich nicht mehr nennen) sowohl sprachlich als auch im Bereich Logik sehr eingeschränkt war werde ich natürlich weiterhin versuchen das System so gut wie möglich zu verbessern. Da es scheint als würden sich diese beiden Punkte gegenseitig ausschließen habe ich mit der Logik angefangen, einfach weil es um einiges einfacher ist. :D

    Das Resultat könnte man fast als Prolog Interpreter bezeichnen, auch wenn die Syntax minimal anders ist und nicht alle Features vorhanden sind. So haben wir aber im Vergleich zur alten Version jetzt die Möglichkeit mehrere Bedingungen durch logische Operatoren zu verknüpfen. Außerdem können Funktionen (fast) beliebig ineinandergeschachtelt werden.

    Spoiler anzeigen
    [autoit]

    Func UnnamedFunction($sQuestion, $sData)
    Local $reFact = "(?m)^([a-z]+\((?:[A-Za-z]+,)*[A-Za-z]+\))\."
    Local $reQuestion = "([a-z]+\((?:[a-z]+,)*[a-z]+\))"
    Local $reRule1 = "(?m)^\Q%s=\E([A-Za-z(),]+)\s*$"
    Local $reRule2 = "(?m)^%s\(((?:[A-Z][A-Za-z]*,)*[A-Z][A-Za-z]*)\)=([A-Za-z(),]+)$"
    ; remove
    $sQuestion = StringRegExpReplace($sQuestion, "\s+", "")
    $sData = StringReplace($sData, @CR, "")
    $sData = StringRegExpReplace($sData, "(?m)//.*$", "")
    $sData = StringRegExpReplace($sData, "(?s)/\*.*?\*/", "")
    $sData = StringRegExpReplace($sData, "\h+", "")
    ; expand
    $sData = StringRegExpReplace($sData, $reFact, "\1=true")
    ; evaluate
    Local $_, $aQuestion, $i, $aRule, $aFormula, $sBody, $j
    For $_ = 1 To 100
    $aQuestion = StringRegExp($sQuestion, $reQuestion, 3)
    If (Not @error) Then
    For $i = 0 To UBound($aQuestion)-1
    $aRule = StringRegExp($sData, StringFormat($reRule1, $aQuestion[$i]), 3)
    If @error Then
    $aFormula = StringRegExp($aQuestion[$i], "([a-z]+)", 3)
    $aRule = StringRegExp($sData, StringFormat($reRule2, $aFormula[0]), 3)
    If @error Then
    ; critical - remove if necessary
    If (StringRegExp($aQuestion[$i], "([a-z]+)\(\1\)", 0) = 1) Then
    $sQuestion = StringReplace($sQuestion, $aQuestion[$i], "true", 0, 1)
    Else
    $sQuestion = StringReplace($sQuestion, $aQuestion[$i], "false", 0, 1)
    EndIf
    Else
    $sBody = $aRule[1]
    $aRule = StringRegExp($aRule[0], "([A-Z][A-Za-z]*)", 3)
    If (UBound($aRule) <> UBound($aFormula)-1) Then Return SetError(2, 0, $sQuestion)
    For $j = 0 To UBound($aRule)-1
    $sBody = StringRegExpReplace($sBody, "\b" & $aRule[$j] & "\b", $aFormula[$j+1])
    Next
    $sQuestion = StringReplace($sQuestion, $aQuestion[$i], $sBody, 0, 1)
    EndIf
    Else
    $sQuestion = StringReplace($sQuestion, $aQuestion[$i], $aRule[0], 0, 1)
    EndIf
    Next
    EndIf
    If (StringInStr($sQuestion, "(") = 0) Then ExitLoop
    Next
    ; return
    Return $sQuestion
    EndFunc

    [/autoit]


    Ein Skript in dieser "Programmiersprache" würde nun folgendermaßen aussehen:

    Code
    and(true, true).
    or(true, true).
    or(true, false).
    or(false, true).
    not(false).
    xor(true, false).
    xor(false, true).

    Beachten sollte man hierbei, dass von jedem Ausdruck der nicht bewiesen werden kann automatisch angenommen wird, dass er falsch ist. Somit können wir and in nur einer statt den üblichen vier Zeilen definieren.

    Das Beispiel mit den Vögeln (falls jemand ein kreativeres Beispiel hat nur her damit) könnte man zum Beispiel so implementieren (in Englisch, da Umlaute nicht unterstützt werden):

    Code
    fly(X) = bird(X)
    bird(pigeon).
    bird(penguin).
    fly(penguin) = false

    04.08.2014: Ich habe den ursprünglichen Inhalt dieses Posts jetzt endgültig entfernt, da das Skript wie schon des öfteren erwähnt (leider) nichts mit künstlicher Intelligenz zu tun hat. Ich hoffe das stört niemanden, aber da die Verwendung von INI Dateien sowieso aus irgendeinem Grund Probleme verursacht hatte war das sowieso nicht wirklich von Wert. Version 2, die (wenn auch sehr sehr eingeschränkt) logisches Denken unterstützt, ist weiterhin in Post 9 zu finden. Da die Kommentare #2 bis #8 sich größtenteils auf Version 1 beziehen ist es besser diese direkt zu überspringen und bei Version 2 weiterzulesen.

  • Wie sieht euer Desktop aus?

    • James
    • 10. März 2012 um 20:40

    Meins hat sich auch schon wieder (zum besseren) geändert (der Rest ist leer und Hintergrundbild hab' ich keines):
    [Blockierte Grafik: http://james1337.bplaced.net/desktop.png]

  • Happy Birthday eukalyptus

    • James
    • 2. März 2012 um 19:43

    Auch von mir alles Gute!

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™