OK, hat sonst vllt jemand schon einen fertigen Algorythmus ?
Beiträge von Darter
-
-
Das hat scite numal so ansich, sowahl das script beendet wird, sprongt die console an den anfang
Indemfall einfach das script mit einer Schleife am leben halten -
Das sollte dir klar machen, weil heute kein Webdesigner mehr Frames egal in welcher Form verwendet: http://blog.antikoerperchen.de/beitrag/5/fram…von-frames.html
Auch nicht sichtig, siehe Link -
Ja mein Problem ist ja, eig. hab ich nach der beschreibung in der hilfedatei alles so gemacht wie es sein soll, deshalb fällt mir eben nichts mehr ein was ich testen könnte, und das frustet mich etwas.
-
Keiner ne Idee ?
-
Selbst solch ein einfaches script stürz immer ab !
Auserdem stimmt die DOkumentation nicht mit der UDF übereinSpoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include 'Includes/prospeed30.au3'$hImage = LoadFileImage(@ScriptDir & "\Images\test.png")
[/autoit]
$BA = InitFX($hImage)
FindPath($BA,10,450,450,10,10)wer hat denn diese UDF geschrieben, dass hier macht doch gar keinen sinn, der rückgabewert wird durch 4 geteilt, aber ein return hat diese FUnktion überhaupt nicht:
Spoiler anzeigen
[autoit]Func Findpath($Pic_array, $P_PixelWidth, $S_StartX, $S_StartY, $S_EndpointX, $S_EndpointY)
[/autoit]
$S_Struct_data = DllStructCreate("short[200000]")
$S_Rz = DllCall($S_DLL, "long", "FindPath", _
"long", DllStructGetPtr($S_Struct_data), _
"long", $Pic_array, _
"long", $P_pixelWidth, _
"long", $S_StartX, _
"long", $S_StartY, _
"long", $S_EndpointX, _
"long", $S_EndpointY, _
"long", 0)
DllCall($S_DLL, "long", "SmoothPath", _
"long", DllStructGetPtr($S_Struct_data), _
"long", $S_Rz[0], _
"long", 2)
Dim $S_Rz = $S_Rz[0]/4
EndFuncEDIT:
Ok habs jetzt wenigstens mal zum laufen gebracht, jedoch gefällt mir das Ergebniss gar nicht.
Hier mal der Code :
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
#include <GDIPlus.au3>$S_DLL = DllOpen(@ScriptDir & "\Includes\ProSpeed.dll")
[/autoit] [autoit][/autoit] [autoit]$hImage = LoadFileImage(@ScriptDir & "\Images\test3.png")
[/autoit] [autoit][/autoit] [autoit]
$BA = InitFX($hImage)
$aPoints = _FindPathToArray($BA,20,440,40,1900,100)
_ArrayDisplay($aPoints)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\test3.png")
$hContext = _GDIPlus_ImageGetGraphicsContext($hImage)
For $i = 0 To UBound($aPoints)-1
_GDIPlus_GraphicsFillRect($hContext, $aPoints[$i][0], $aPoints[$i][1], 5, 5)
Next
_GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\Images\loesung3.png")Func _FindPathToArray($Pic_array, $P_PixelWidth, $S_StartX, $S_StartY, $S_EndpointX, $S_EndpointY)
[/autoit] [autoit][/autoit] [autoit]
Local $S_Struct_data = DllStructCreate("short[200000]")
$S_Rz = DllCall($S_DLL, "long", "FindPath", _
"long", DllStructGetPtr($S_Struct_data), _
"long", $Pic_array, _
"long", $P_pixelWidth, _
"long", $S_StartX, _
"long", $S_StartY, _
"long", $S_EndpointX, _
"long", $S_EndpointY, _
"long", 0)
If Not IsArray($S_Rz) Then Return SetError(-1,'', -1)
Local $a__Array[1][2], $sData
For $i = 2 To $S_Rz[0] Step 2
$sDataY = DllStructGetData($S_Struct_data, 1, $i)
$sDataX = DllStructGetData($S_Struct_data, 1, $i - 1)
If $i = 2 Then
$a__Array[0][0] = $sDataX
$a__Array[0][1] = $sDataY
Else
ReDim $a__Array[UBound($a__Array)+1][2]
$a__Array[UBound($a__Array)-1][0] = $sDataX
$a__Array[UBound($a__Array)-1][1] = $sDataY
EndIf
If Abs($S_EndpointX - $sDataX) < $P_PixelWidth And Abs($S_EndpointY - $sDataY) < $P_PixelWidth Then ExitLoop
Next
Return $a__Array
EndFunc;###################################################################################################################################
[/autoit] [autoit][/autoit] [autoit]
; LoadFileImage
; syntax : $pic = LoadFileImage("c:\photo.jpg")
; Note ; load picture to memmory
; returns Handle for imagedata
;###################################################################################################################################
Func LoadFileImage($S_File)
$S_Image = DllCall($S_DLL, "long", "LoadFileImage", _
"str", $S_File)
Return $S_Image[0]
EndFunc;###################################################################################################################################
[/autoit]
; InitFX
; syntax : $FX = InitFX($bitmap1)
; Note ; creates a byte array from a bitmap for Special fx functions
; returns pointer for fx effect
;###################################################################################################################################
Func InitFX($C_Source)
$S_ImageFX = DllCall($S_DLL, "long", "InitFX", _
"long", $C_Source)
Return $S_ImageFX[0]
EndFuncDas Bild und das Ergebniss hänge ich mal an.
Kann mir jemand erklären, warum da eine solch uneinleuchtende Lösung dabei raus kommt ? -
Ok, danke, diese Dokumentation ist schonal um einiges besser, jedoch verstehe ich trzdem einiges noch nicht.
Verstanden habe dich :
Ich muss der funktion FindPath() ein bmp übergeheben mir weißen flächen(begehbarer weg ) und schwarzen flächen(nicht begebar).
Start- und Enpunkt, auch die width sind klar.Was ich noch nicht verstehe, sind BA und B, wie ich diese übergeben, soll über ein bsp von dir, wenn du dich damit auskennst und Zeit hast würde ich mich freuen,
mfg Darter
-
[autoit]
Return
[/autoit] -
Hey.
Also die Dokumentation in der Prospeed.au3 ist wirklich nicht die beste, das hier ist der header der funktion Findpath :
Code;################################################################################################################################### ; Findpath ; syntax : Findpath($Pic_array, $P_PixelWidth, $S_StartX, $S_StartY, $S_EndpointX, $S_EndpointY) ; Note : $Pic_array = mask picture loaded with function LoadImage() last parameter must be 0 ; example ; $Pic = LoadImage("mask5.bmp", 0, 0, 600, 400, 0) ; $P_PixelWidth = how width is the path (pixel) ; $S_StartX and $S_StartY = startpoint x and y axis ; $S_EndpointX and $S_EndpointY = endpoint x and y axis ; example ; Findpath("mask_pic", 6, 10, 10, 585, 10) ;###################################################################################################################################
Dsa bsp ist absolut nicht verständlich, vorallem da es die funktion LoadImage() in der UDF nirgends gibt.
Wenn es so funktioniert, wie ich es mit vorstelle, wäre das nicht schlecht. Zeichnen wollte ich vorerst trozdem weiter mit GD+.
Dennoch ware die Pathfinder funktion, wo ich Objekte setzt und er mir den Weg von a Nach B ausrechnet und die Punkte in einem Array zurückliefert nicht schlecht, hjedoch verstehe ich die bsp. da nichtEDIT: gibt es denn nirgends eine ordenliche Dokumentation dazu ?
-
Hi,
in der prospeed.dll ist Wegefindung auch in komplizierten Labyrinthen integriert.Hmm ok, gibt es dazu auch eine Dokumentaion ?
EDIT: Ok hab, sogar hier im Forum was gefunden.
Da es sogar ein bsp. von dir ist, könntest du mir dies etwas erklären ?
[ offen ] Probleme mit Prospeed.dllEDITEDIT:
Ok, wenn ich es richtig verstanden habe, kann ich mit
Sprite()
gegenstände einfügen richtig?
Findpath()
rechnet mir dann den Weg aus und umbeght diese Genstände?Sowie ich das gesehen habe, liefert mit Findpath() nichts zurück, in welcher weiße könnte ich dass dann verwenden?
-
Danke, schau cih mir auf jeden fall mal an.
ich bin der Meinung, dass sich jeder Algorithmus genauso wie in autoit umsetzten lässt, sicherlich ist der Syntaxt etwas anders, auch die geschwindigkeiten können sich unterscheiden aber sonst -
Hey.
Ich bin mir nicht sicher, ob es der Titel auf edn Punkt bringt aber naja, mir ist kein besserer eingefallen xD
Im prinzip habe ich begehbaren Weg (blaue Fläche) und NICHT begebahren Weg (rote Fläche).
Nun habe ich dort zwei Punkte, P1(dort stehe ich) und P2(dort will ich hin).Nun will ich über den kürzesten Weg zu P2, ohne dass ich dabei die Rote fläche überquere.
Sagen wir ich bewege mich mit einer Konstanten geschwindigkeit ( $iSpeed = 100px / Sekunde).
Irgendwer nen Ansatz für mich ?
[Blockierte Grafik: http://s7.directupload.net/file/d/2460/flia8ib6_png.htm]
-
Das man einen MD5 Hash nicht direkt Decrypten kann ist mir klar, aber es gibt riesige Datenbanken, die sehr viele Kombinationen gespeichert haben. Wenn dumit Hilfe dieser Seiten etwas Decryptest, denn suchen diese legendlich nach einem Schlüssel in deren Datenbank
Sobald du es im Salt spricht bsw. noch mit der UserID verbindest bringt dir dies nix.
bsw. so :
md5(md5(UserID) & Passwort)
Das ist wohl sehr sicher, ob md5 veraltet ist oder nicht
-
Hotspotshield.
Da kommste immer in den USA raus.
Ist kostenlos, aber es wir eben immer eine Werbung eingeblendet -
Wenn nicht, hier ne kleine Funktion :
Spoiler anzeigen
[autoit]Func _TCP_Send_Request($sTyp, $sHost, $sPage, $sReferer = "", $sCookie = "", $sPost = "", $bWontReturn = 0, $MaxTime = 10000)
[/autoit] [autoit][/autoit] [autoit]
;; >> Autor Dater
Local $sPacket, $Recv, $aCookies, $aRecv, $sHeader, $sBody, $aReturn[4], $sCookies, $iContentLength, $bGZIP = False
$Socket = TCPConnect(TCPNameToIP($sHost), 80)
If $sReferer <> "" And Not StringInStr($sReferer, 'http://') Then $sReferer = 'http://' & $sReferer
Switch $sTyp
Case "GET"
$sPacket = "GET " & $sPage & " HTTP/1.1" & @CRLF & _
"Host: " & $sHost & @CRLF & _
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.4) Gecko/20100611 AskTbUT2V5/3.8.0.12304 Firefox/3.6.4" & @CRLF & _
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
"Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
"Keep-Alive: 115" & @CRLF & _
"Connection: keep-alive" & @CRLF
If $sReferer <> "" Then $sPacket &= "Referer: " & $sReferer & @CRLF
If $sCookie <> "" Then $sPacket &= "Cookie: " & $sCookie & @CRLF
;$sPacket &= "Cache-Control: max-age=0" & @CRLF & @CRLF
$sPacket &= @CRLF
Case "POST"
$sPacket = "POST " & $sPage & " HTTP/1.1" & @CRLF & _
"Host: " & $sHost & @CRLF & _
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.4) Gecko/20100611 AskTbUT2V5/3.8.0.12304 Firefox/3.6.4" & @CRLF & _
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & _
"Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @CRLF & _
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @CRLF & _
"Keep-Alive: 115" & @CRLF & _
"Connection: keep-alive" & @CRLF
If $sReferer <> "" Then $sPacket &= "Referer: " & $sReferer & @CRLF
If $sCookie <> "" Then $sPacket &= "Cookie: " & $sCookie & @CRLF
$sPacket &= "Content-Type: application/x-www-form-urlencoded" & @CRLF & _
"Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost
Case Else
Return SetError(1, "", "0")
EndSwitch
TCPSend($Socket, $sPacket)
If Not $bWontReturn Then
#Region Header
;Header epfangen
$sRecv = ""
Local $Timeout_Timer = TimerInit()
Do
$sRecv &= StringTrimLeft(TCPRecv($Socket, 1024, 1), 2)
$iHeaderEnde = StringInStr($sRecv, StringTrimLeft(StringToBinary(@CRLF & @CRLF), 2))
Until ($iHeaderEnde > 0) Or (TimerDiff($Timeout_Timer) > $MaxTime)
;Header Trimmen und in String umwandeln
$sHeader = BinaryToString("0x" & StringLeft($sRecv, $iHeaderEnde + 1 + 6))
;Header vom Recv abtrennen
$sRecv = StringTrimLeft($sRecv, $iHeaderEnde + 1 + 6)
;~ ConsoleWrite($sHeader & @CRLF)
;Check if gzip
If StringInStr($sHeader, 'Content-Encoding: gzip') Then $bGZIP = TrueLocal $aContLen = StringRegExp($sHeader, 'Content-Length: (\d+)', 1)
[/autoit] [autoit][/autoit] [autoit]
If Not @error Then $iContentLength = $aContLen[0];Get Cookies
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($sHeader, "Set-Cookie: ") Then
$aCookies = StringRegExp($sHeader, 'Set-Cookie: ([^;]+)', 3)For $i = 0 To UBound($aCookies)-1
[/autoit] [autoit][/autoit] [autoit]
$sCookies &= $aCookies[$i] & ";"
Next
$aReturn[2] = StringTrimRight($sCookies, 1)
EndIf$aReturn[0] = $sHeader
[/autoit] [autoit][/autoit] [autoit]
;ConsoleWrite($aReturn[0] & @CRLF);Get location
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($sHeader, "Location: ") Then
$aLocation = StringRegExp($sHeader, 'Location: (.+)', 3)
$aReturn[3] = StringStripWS (StringStripCR ($aLocation[0]),4)
EndIf
#EndRegion Header#Region Body
[/autoit] [autoit][/autoit] [autoit]
$Timeout_Timer = TimerInit()
;Body empfangen
;======================================================================================
;Teile übernommen aus der UDF WebTCP von AMrK(Autoibot.de) und etwas abgeändert.
;http://www.autoitbot.de/coding-bereich…-s/3828-webtcp/
;=======================================================================================
If $iContentLength <> "" Then
;Body über conten len empfangen
While (StringLen($sRecv) / 2) < $iContentLength
$sRecv &= StringTrimLeft(TCPRecv($Socket, 1024, 1), 2)
If TimerDiff($Timeout_Timer) > $MaxTime Then ExitLoop
WEnd
$sRecv = "0x" & $sRecv
$sRecv = BinaryToString($sRecv)
Else
Local $TT = TimerInit()
$sRecv = BinaryToString("0x" & $sRecv)
While Not StringInStr($sRecv, @CRLF)
$sRecv &= TCPRecv($Socket, 256)
If TimerDiff($TT) > $MaxTime Then ExitLoop
WEnd
If StringLeft(StringLeft($sRecv, StringInStr($sRecv, @CRLF) - 1), 2) = "0x" Then
$iPartLaenge = Dec(StringTrimLeft(StringLeft($sRecv, StringInStr($sRecv, @CRLF) - 1), 2))
Else
$iPartLaenge = Dec(StringLeft($sRecv, StringInStr($sRecv, @CRLF) - 1))
EndIf
$sRecv = StringTrimLeft($sRecv, StringInStr($sRecv, @CRLF) + 1)
$iGesamtLaenge = 0
While $iPartLaenge > 0
$iGesamtLaenge += $iPartLaenge
While StringLen($sRecv) < $iGesamtLaenge
$sRecv &= TCPRecv($Socket, $iGesamtLaenge - StringLen($sRecv))
If TimerDiff($TT) > $MaxTime Then ExitLoop
WEnd
If StringLen($sRecv) > $iGesamtLaenge Then
ConsoleWrite('- Recv ist zu groß ' & @CRLF)
$sTempRecv = $sRecv
$sRecv = StringLeft($sTempRecv, $iGesamtLaenge)
$sTempRecv = StringTrimLeft($sTempRecv, $iGesamtLaenge + 2)
While Not StringInStr($sTempRecv, @CRLF)
$sTempRecv &= TCPRecv($Socket, 1)
If TimerDiff($TT) > $MaxTime Then ExitLoop
WEnd
$iPartLaenge = Dec(StringLeft($sTempRecv, StringInStr($sTempRecv, @CRLF) - 1))
$sTempRecv = StringTrimLeft($sTempRecv, StringInStr($sTempRecv, @CRLF) + 3)
$sRecv &= $sTempRecv
ConsoleWrite('- Recv wurde vom HexCode getrennt ' & @CRLF)
Else
$iLaengeRecv = ""
Do
$iLaengeRecv &= TCPRecv($Socket, 1)
If TimerDiff($TT) > $MaxTime Then ExitLoop
Until StringInStr($iLaengeRecv, @CRLF)
;~ ConsoleWrite('- Body wurde komplett Recvied ' & @CRLF)
$iLaengeRecv = ""
Do
$iLaengeRecv &= TCPRecv($Socket, 1)
If TimerDiff($TT) > $MaxTime Then ExitLoop
Until StringInStr($iLaengeRecv, @CRLF)
;~ ConsoleWrite('- Hex wurde komplett Recvied ' & @CRLF)
If StringLeft(StringLeft($iLaengeRecv, StringInStr($iLaengeRecv, @CRLF) - 1), 2) = "0x" Then
$iPartLaenge = Dec(StringTrimLeft(StringLeft($iLaengeRecv, StringInStr($iLaengeRecv, @CRLF) - 1), 2))
Else
$iPartLaenge = Dec(StringLeft($iLaengeRecv, StringInStr($iLaengeRecv, @CRLF) - 1))
EndIf
EndIf
If TimerDiff($TT) > $MaxTime Then ExitLoop
WEnd
;~ ConsoleWrite($sRecv & @CRLF)
EndIfIf $bGZIP Then
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit]
$aReturn[1] = $sRecv
If TimerDiff($Timeout_Timer) > $MaxTime Then ConsoleWrite("Zeitüberschreitung.." & @CRLF)
#EndRegion Body
Return $aReturn
EndIf
TCPCloseSocket($Socket)
EndFunc ;==>_TCP_Send_Requestmfg
-
Wird eohl eher mehr arbeit die ganze UDF zu überarbeiten, als das ganze selber per TCP zu machen, hab da noch ne sehr abgespeckte Version rumliegen
-
Naja also wenn es unter Win7 funktioniert hat, wird es wohl daran liegen :
[autoit]_AutoItObject_AddProperty($oCookies, "Key", $ELSCOPE_PUBLIC, ObjCreate("System.Collections.ArrayList"))
[/autoit]Ist dies wohl unter XP nicht verfügbar
-
Dann frag doch in dem Forum nach, wo es Veröffentlicht wurde ?
-
Ok.
Aber, hat "__default__" eine spezielle wirkung auf ein Objekt, sonst kann dieser aufruf doch nicht stimmen oder ?
[autoit]$oObjekt("Name", "Wert")
[/autoit]Oder versteh ich nur das Bsp. nicht
-
So ich nochmal xD
Ich speicher mir und local in einer Funktion die Property namen, um dass ganze in einer For schleife durchlaufen zu lassen.
Über eine Methode gebe ich mir dies namen wieder in einem Array zurück, und nun wollte ich so den Propertys neue Werte zuweisen.Sowas geht natürlich nicht:
[autoit]For $i = 0 To UBound($aArray)-1
[/autoit]
$oClass.$a__InfoNames[$i] = $aArray[$i]
NextSowas geht ja leider auch nicht:
[autoit]For $sKey in $oObject('Dieter')
[/autoit]
MsgBox(0, 'Key Name', $sKey)
NextDa es relativ viele Propertys sind, wollte ich diese schon gerne in ner Schleife Werte zuweisen, gibt es da eine Möglichkeit?