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

Beiträge von Andy

  • String auslesen

    • Andy
    • 14. September 2010 um 15:10
    [autoit]

    stringmid() und stringinstr()

    [/autoit]

    sind dein Freund!

    [autoit]

    dim $liste[2]=["http://www.autoit.de/index.php?page=Index","http://www.codeproject.com/KB/dotnet/regextutorial.aspx"]

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

    for $i=0 to ubound($liste)-1
    $ersterpunkt=stringinstr($liste[$i],".",1,1)
    $zweiterpunkt=stringinstr($liste[$i],".",1,2)
    $domain=stringmid($liste[$i],$ersterpunkt+1,$zweiterpunkt-$ersterpunkt-1)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $domain = ' & $domain & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    next

    [/autoit]
  • 3. Punkt eines Dreiecks berechnen

    • Andy
    • 14. September 2010 um 14:49

    Lösung war die Drehfunktion, s. hier Drehung des Punktes P um M mit dem Winkel alpha

  • Koordinate (mehr oder weniger) spiegeln

    • Andy
    • 14. September 2010 um 14:40

    Um jetzt beide Funktionen zu nutzen, könnte man ja erst den Punkt P um die Winkelhalbierende drehen um so den Punkt M' zu erhalten (M und M' wären dann die Spiegelachse) und dann P an der Spiegelachse spiegeln :rofl:

  • Koordinate (mehr oder weniger) spiegeln

    • Andy
    • 14. September 2010 um 13:58

    Die Mittelsenkrechte des Winkels? Oha, meinst du ggf. die Winkelhalbierende als "Spiegelachse"?
    Dann könnte man die "Spiegelung" als Drehung von P um Punkt S mit dem Winkel alpha auffassen?(was aufs Gleiche wie die Spiegelung rausläuft)

    So?

    Spoiler anzeigen
    [autoit]

    Func _Punkt_gedreht_um_Winkel($Px, $Py, $alpha, $DPx, $DPy) ;Koordinaten Punkt, Winkel in Grad Drehrichtung nach RECHTS, Koordinaten Drehpunkt
    Local $Hx = $Px - $DPx
    Local $Hy = $Py - $DPy

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

    ;$degToRad = atan(1)*4 / 180 ;atan(1)*4=pi
    $degtorad = 0.0174532925

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

    $sinus = Sin(-$alpha * $degtorad)
    $cosinus = Cos(-$alpha * $degtorad)

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

    Local $a[2] ;array koordinaten
    $a[0] = $DPx + Round($Hx * $cosinus - $Hy * $sinus,2) ;2 Nachkommastellen sollten reichen
    $a[1] = $DPy + Round($Hx * $sinus + $Hy * $cosinus,2)
    Return $a
    EndFunc ;==>_Punkt_gedreht_um_Winkel

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

    $koordinaten = _Punkt_gedreht_um_Winkel(2, 5, 90, 3, 3)
    _ArrayDisplay($koordinaten)

    [/autoit]
  • Koordinate (mehr oder weniger) spiegeln

    • Andy
    • 14. September 2010 um 13:52

    Als Funktion

    [autoit]

    Func _Punkt_gespiegelt_an_Gerade($m, $b, $Px, $Py) ;y=mx+b , Koordinaten P, return=array mit P'x und P'y
    Local $a[2]
    $a[0] = $Px + 2 * (((($Py - ((-1 / $m) * $Px)) - $b) / ($m - (-1 / $m))) - $Px)
    $a[1] = $Py + 2 * (((-1 / $m) * ((($Py - ((-1 / $m) * $Px)) - $b) / ($m - (-1 / $m))) + ($Py - ((-1 / $m) * $Px))) - $Py)
    Return $a
    EndFunc ;==>_Punkt_gespiegelt_an Gerade

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

    $koordinaten=_Punkt_gespiegelt_an_Gerade(-0.5, 3, 1, -5)
    _arraydisplay($koordinaten)

    [/autoit]
  • Koordinate (mehr oder weniger) spiegeln

    • Andy
    • 14. September 2010 um 13:22
    Zitat

    ist die spiegelachse immer vertikal?

    wenn das so wäre, dann reduziert sich das ganze Problem auf eine Addition, das sollte dann auch ein 2.-Klässler schaffen...
    Denn dann wäre Y2 = Y1 und X2= X1 + (XS-X1) + (XS-X1)

  • Koordinate (mehr oder weniger) spiegeln

    • Andy
    • 14. September 2010 um 11:14
    Zitat

    hab ich jetzt eine andere Idee zur Lösung meines 3D Problems...

    Von 3D ist weit und breit nichts zu sehen....
    Wenn es aber schon an der Spiegelung eines Punktes an einer Gerade hapert....dann wirds mit 3D auch so schnell nichts...

    Mal "zu Fuß" erklärt...
    Es bietet sich an, das Verfahren in eine Funktion zu packen, aber das sollte man alleine hinbekommen :D

    [autoit]

    ;Spiegelung Punkt P an einer Geraden y=mx+b ergibt P2

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

    ;Verfahren:
    ;1) Geradengleichung der Senkrechten auf die Spiegelgerade finden durch den Punkt P
    ;2) Der Schnittpunkt der Senkrechten und der Spiegelgeraden ergibt S
    ;3) Auf der Gerade durch P und S liegt P2 im Abstand 2*PS

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

    ;Punkt P auf der Ebene
    $Px = 1
    $Py = -5

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

    ;Geradengleichung y=mx+b
    $m = -0.5
    $b = 3
    ;$y = $m * $x + $b

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

    ;1) Zur Spiegelgeraden senkrechte Geraden haben alle die Steigung ms=-1/m
    $ms = -1 / $m
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ms = ' & $ms & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    ;gesucht wird eine auf die Spiegelgerade senkrechte Gerade durch den Punkt P
    ;Geradengleichung senkrechte Gerade: y=ms*x+bs
    ;$Py = $ms * $Px + $bs
    $bs = $Py - ($ms * $Px)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bs = ' & $bs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    ;2) Schnittpunkt beider Geraden
    ;$ys = $m * $xs + $b = $ms * $xs + $bs
    $xs = ($bs - $b) / ($m - $ms)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $xs = ' & $xs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $ys = $ms * $xs + $bs
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ys = ' & $ys & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;PS liegt in der Hälfte zwischen P1 und P2

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

    ;3) Geradengleichung durch P und S
    ;2*Abstand PS ergibt P2
    $P2x = $Px + 2 * ($xs - $Px)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $P2x = ' & $P2x & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $P2y = $Py + 2 * ($ys - $Py)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $P2y = ' & $P2y & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]
  • 3. Punkt eines Dreiecks berechnen

    • Andy
    • 13. September 2010 um 20:34

    Da P1 und P2 gegeben, gehe ich davon aus, daß mit der Strecke die Strecke P1P3 gemeint ist, ansonten wäre das ja doppelt gemoppelt....

  • Excel Zelle lesen und in Editbox Schreiben Probleme mit @crlf

    • Andy
    • 13. September 2010 um 18:21

    Scite konvertiert bei Ctrl+v in die bei "Optionen/Zeilenendezeichen" eingestellten Zeilenendezeichen. Das wäre geklärt^^

  • Lernkurve Assembler-Tut zu steil?

    • Andy
    • 13. September 2010 um 17:53

    thx für die Vorschläge, aber das muss ich Performancemässig testen, ich hatte gerade die Stringfunktionen als sehr schnell in Erinnerung!
    GGf kann man mit SSE/SSE2 etwas machen, wobei ich annehme, dass bei AutoIt gerade die "Standard"-Stringfunktionen von sehr schnellen C++-Libs profitieren...
    Weiterhin ist das Problem bei grossen Dateien, daß die Daten meist nicht in den/die Prozessor-Caches passen und viel schlimmer, Windows durch die "flexible" Speicherverwaltung auch mal ohne mit der Wimper zu zucken Hauptspeicher auf die Platte transferiert....das kann man in AutoIt übrigens sehr einfach mit dem Erstellen einer großen Struct provozieren.
    Btw, um StringInStr() um den Faktor 3 schneller rennen zu lassen, sollte man unbedingt den Casesense-Parameter auf 1 setzen (so man denn casesensitiv sucht^^)

    Für StringReplace() gilt gesagtes, bei kleinen Strings sehr schnell, bei SEHR grossen Strings frisst das Speicherhin- und hergeschaufel die Performance!

    Mit Arraysort() bin ich schon längere Zeit zu Gange, leider bietet AutoIt keine Möglichkeit, problemlos an die "internen" Speicherplätze der Arrayitems zu kommen. Bis zu einigen verketteten Listen bin ich gekommen, dann hatte ich keine Lust mehr...
    Eine Lösungsmöglichkeit wäre, die Arrays in Structs abzubilden, allerdings wäre dann der sehr schöne Datentyp VARIANT für die Katz, respektive die Möglichkeit, Arrays mit beliebigen Datentypen als Inhalt zu bearbeiten. Hat man allerdings Typen"reine" Arrays (z.B. Integer oder Float), dann wäre Assembler ggf eine Maßnahme. Ob da aber viel bei rumkommt, bezweifle ich. Array in Struct(Speicher) schreiben, Struct sortieren, zurück in Array schreiben dauert einfach zu lange bzw frisst die Performance auf. Für den, dem es egal ist, ob er seine "Items" per dllstructgetdata($array,1,index) oder per $array[index] liest/schreibt (beides übrigens gleich schnell! ), ist bei Typen"reinen" Arrays sicher was zu holen!
    Für Stringarrays gilt das gleiche, wer da eine "langsame" Anwendung hat, immer her damit^^ (unter der Vorraussetzung, auch schon Listen, Dictionarys usw ausprobiert zu haben)

  • Suche guten Browser

    • Andy
    • 13. September 2010 um 17:18

    Opera seit release (hat sogar ein paar Mark gekostet damals ca 1998/99), davor Netscape^^
    Zwischendurch immer mal in andere Browser reingeschnuppert, aber Opera ist einfach "rund".
    Alles drin alles dran, schnell.
    Mailclient,Chatclient,Newsclient inclusive, von Innovationen wie den Mausgesten (10 Jahre bevor man Browser mit "wischen" bedient) und Unite garnicht zu reden.
    Zu Dragonfly hat i2c schon das passende gesagt.
    Nachteil ist die Norwegische Sturheit, Innovationen auch gegen den aktuellen Trend durchzudrücken. JS-Compiler lassen grüssen. So kann es passieren, dass manche Websites (ich habe es sehr selten erlebt) Probleme machen, aber dafür gibts dann Iron, Chrome (sehr fix), FF und natürlich auch den Internetzexplodierer, obwohl ich letzteren nie zum surfen einsetze, sondern nur zum testen.

  • Game Engine

    • Andy
    • 13. September 2010 um 15:00

    Was soll an der Frage brisant sein? hier im Forum siehst du jeden Tag haufenweise Scripte, bei denen das Rad jedesmal neu erfunden wird. Glaubst du, das ist bei großen Spieleprogrammierern anders? Da kommt einer auf ne Idee: "Hey, wenn wir das so und so machen, sparen wir xXX Stunden Zeit/Woche (Mitarbeiter/Monat) (tausende Zeilen Code usw) !"
    Und schon gibts ein neues Verfahren.
    Wenn man dieses neue Verfahren dann auch noch teuer an den Wettbewerb verkaufen kann, um so besser....

  • Excel Zelle lesen und in Editbox Schreiben Probleme mit @crlf

    • Andy
    • 13. September 2010 um 14:50
    Zitat

    ... und laut Skript ist es ein @LF:

    wzbw....

    [autoit]

    $b=stringreplace($b,@lf,@crlf)

    [/autoit]

    wenn mir jetzt noch jemand erklären kann, wie subzero lt Screenshot auf CRLF und Großvater auf LF kommt, wäre ich happy, ist das ggf eine Einstellung in Excel? Habe OO, daher kann ich das nicht nachvollziehen....

  • Excel Zelle lesen und in Editbox Schreiben Probleme mit @crlf

    • Andy
    • 13. September 2010 um 12:19

    an der Editbox liegt es nicht, wie man sieht...

    Spoiler anzeigen
    [autoit]

    $text="aaa"&@crlf&"bbb"&@crlf&"CCC"

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

    $hgui=guicreate("")
    $edit=GUICtrlCreateEdit("",10,10,100,100)
    guisetstate()

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

    guictrlsetdata($edit,$text)

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

    while GUIGetMsg()<>-3
    wend

    [/autoit]


    Ich vermute daher das Format des Zelleninhalts.
    Kopier mal den $b mit clipput() in die Zwischenablage, mach in scite einen leeren Tab auf und kopiere dahinein mit ctrl-v den String. Dann aktiviere mal in Scite bei ANSICHT die Leerzeichen und Zeilenende und schau dir mal den String an! Ich vermute da ist garkein CRLF drin sondern nur ein LF...

  • Digits

    • Andy
    • 12. September 2010 um 20:42

    Hier gabs mal einen Thread zu diesem Thema, der Link geht zu meinem Beitrag, der das ganze ohne 3D-Array löst^^
    Transparent hatte ich das alles auch, waren allerdings einige Zeilen mehr...

  • array frage

    • Andy
    • 12. September 2010 um 19:03
    [autoit]

    #include <Array.au3>
    Dim $avArray[8]
    $avArray[0] = 7
    $avArray[1] = "Brian"
    $avArray[2] = "Jon"
    $avArray[3] = "Larry"
    $avArray[4] = "Christa"
    $avArray[5] = "Rick"
    $avArray[6] = "Jack"
    $avArray[7] = "Gregory"
    _ArrayDisplay($avArray, "_ArrayDisplay() Test")

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

    ;oder
    for $i=1 to ubound($avArray)-1 ;siehe ubound, im vorliegenden Beispiel könnte man auch statt ubound()-1 das $avArray[0] schreiben
    msgbox(0,"Name in $avArray["&$i&"]=",$avArray[$i])
    next

    [/autoit]
  • Mausposition in 3D Raum umberechnen

    • Andy
    • 12. September 2010 um 18:45

    Jeder Punkt in einem Raum wird durch eine X-, eine Y- und eine Z-Koordinate bestimmt. Deine Mauskoordinaten geben aber nur X und Y her! Damit dein Programm "weiß" welche Position im Raum du mit dem Mauszeiger meinst, musst du das natürlich dem Programm mitteilen. In der Regel werden diese Tiefenpositionen bzw Abstände zum Betrachter im sog. Z-Buffer als Schnittpunkt mit der nächsten sichtbaren Ebene dargestellt.
    Du musst eine Funktion finden bzw. aufrufen, die dir abhängig von deinen Mauskoordinaten die Z-Koordinate des Pixels an der Mausposition zurückgibt, dann hast du auch einen "Anfasser" für das 3D-Objekt.
    Ich habe aber aufgegeben, dein Beispielscript lauffähig zu bekommen, die Dateien u.a. von http://www.autoitscript.com/forum/index.php?showtopic=53575&view=findpost&p=405446 verursachen Fehlermeldungen

  • Stuttgart 21

    • Andy
    • 12. September 2010 um 18:12
    Zitat von Peethebee

    Widerstand gibt es schon sehr lange. Solange aber keine Bagger rollen, kann auch keiner eine Baustelle blockieren.

    Da hast du allerdings Recht, eine Baustelle kann im Vorfeld keiner blockieren, aber Eingänge von Parlamenten, Staatssekreteriaten, Rathäusern uvm.
    Du hast weiterhin damit Recht, daß es Proteste schon während der Planungsphase gab. Nur wurden die (wie sich das "gehört") in entsprechender Form von einer Handvoll Leute vorgebracht. Gegen diese Handvoll Leute habe ich nichts, gerade im Gegenteil, sie haben die rechtsstaatlichen Mittel ausgeschöpft, und nun auch das Recht und m.E. auch die verdammte Pflicht, ihrer Meinung auf dem Stuttgarter Bahnhofsvorplatz Ausdruck zu verschaffen! Das respektiere ich zutiefst!

    Aber frag doch die heute Abend auf dem Bahnhofsvorplatz vorstellige Meute mal, wer von denen im Planungsvorfeld schriftliche Eingebungen, Planänderungsanträge o.Ä. vorgebracht hat, bzw bei einer der Unterschriftenaktionen (wurden welche durchgeführt und wann?) mitmachte. Sämtliche Sitzungen, Ausschüsse und Gremien im Planfeststellungsverfahren sind völlig unbeachtet geblieben.
    Das Recht, einen Stein auf einen Bagger(fahrer) zu werfen, der eine Denkmalgeschützte Fassade niederreisst, stehe ich ausschliesslich dem zu, der alle anderen rechtlichen Mittel bereits ausgeschöpft hat. Und nicht irgendwelchen grölenden Hinterherläufern, die um 5 vor 12 ihren Hintern von der Couch hochheben um wieder mal irgendwem anders "hinterherzulaufen", nur weil es gerade IN ist und die anderen es auch so machen!

    Zitat von BugFix

    Das kommt halt davon, wenn ein Staat die Herrschaft über die Verkehrswege aufgibt und rein profitorientierte Unternehmen die Wartungen der Strecken soweit minimieren, dass diese nur noch mit geringer Geschwindigkeit (und daraus resultierendem Zeitverlust) befahren werden können.

    Trifft den Nagel auf den Kopf!

  • Klick auf GDI+ Objekt überprüfen

    • Andy
    • 12. September 2010 um 17:31
    Zitat

    ich hab ja gesagt, dass ich Anfänger bin, und ein besseres wort fiel mir nicht ein.

    Erstens ist das nicht schlimm (dass du Anfänger bist) und zweitens war das Wort an sich ja nicht falsch^^. Ich dachte mir allerdings den zusammenhang zu deinem Problem, z.B. eine Linie per GDI+ auf den Bildschirm malen, diese Linie per Mausklick "anfassen" und an eine andere Position schieben.

  • Mausposition in 3D Raum umberechnen

    • Andy
    • 12. September 2010 um 17:26

    Hi, wenn ich das Problem richtig verstanden habe, funktioniert das nur, wenn du (wie in z.B. einem 3D-Spiel) ein eigenes Koordinatensystem verwendest, dass jeder Mausposition noch eine Z-Koordinate "dazuschreibt" bzw dazuberechnet.
    Wenn du in einem 3D-Raum auf einen (2D) Punkt klickst, dann muss das Programm diese Information der Z-Koordinate haben, ansonsten ist diese Koordinate immer 0 d.h. "Bildschirmoberflächenebene"

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™