Hi,
also ich würde mal die althergebrachte Variante mit dem Gleichsetzen beider Funktionen empfehlen.
Kreisfunktion (aus dem Kopf, ist schon etwas länger her^^): x²+y²=1 bzw (x-xm)²+(y-ym)²=r²
Geradengleichung: y=m*x+b
m ist die Geradensteigung = (y2-y1)/(x2-x1)
Gleichsetzen/Einsetzen der Funktionen führt zu einer quadratischen Gleichung, ergo 2 Ergebnisse. Eigentlich logisch, die Gerade schneidet den Kreis in 2 Punkten
Beiträge von Andy
-
-
Zitat
Ich kenne kein anderes Forum, in dem nach 2 Minuten 4 Antworten mit einer potenziell richtigen Problemlösung gepostet werden
Das kommt daher, weil hier alle reichlich Übung im polieren ihrer Kristallkugeln haben^^ -
AspirinJunkie hat mal Alternativen zum Array zusammengestellt:
Alternativen zum Array -
Ich finde, AutoIt sollte AutoIt bleiben, jedenfalls bei solchen "Wettbewerben"!
ZitatAndy hat ja auch beim Primzahlen µit eine Assembler Version gescriptet, welche deutlich schneller als alle anderen war
Genau deshalb hatte ich auch gebeten, mein Script NICHT zu werten!Was man mit anderen "Ideen" aus AutoIt rausholen kann, sieht man z.B. bei AutoItObject sehr deutlich! Das ist wesentlich beeindruckender als einige opcodes vom Prozessor ausführen zu lassen (was auch zzt nur bei 32Bit funktioniert)

"Native" Autoit sollte es also schon sein, jeder sollte, egal ob auf einer 32/64-Bitmaschine/Betriebssystem mit einem herzhaften Hieb auf die F5-Taste das Script nach einer Neuinstallation von AutoIt laufen lassen können! Meine Meinung....
-
@tkausl,
das ist alles hier schon reichlich durchgekaut. Habs eben genau wie dort beschrieben durchgeführt, funktioniert einwandfrei.Das grösste Problem (wie meistens) ist imho, dass manche rennen wollen bevor sie laufen können! Wie kann/soll ich jemanden ernst nehmen, der eine Internetverbindung erstellen will, wenn nichtmal die SIMPELSTE Verbindung zwischen zwei Rechnern im internen Netz herstellbar ist?
Aus welchem Grund habe ich dieses "Tutorial" denn geschrieben? Weil es absolut simpel nachzuvollziehen ist, und man, wenn man es genau wie beschrieben schrittweise abarbeitet, SOFORT merkt, wenn es klemmt!
Also ich würde mir jedenfalls Gedanken machen, wie es sämtliche neuinstallierten Programme nach einem Mausklick schaffen, ungefragt auf irgendwelche Server im Internet zuzugreifen, aber ich es selbst nicht hinbekomme, auf meinen eigenenLaptop im Netzwerk zuzugreifen!? -
Hi!
Da wird wieder mal an der völlig falschen Stelle angefangen. Genau durch diese "Denke" haben Viren/Keylogger/Backdoor- usw-Programmierer so leichtes Spiel.
Anstatt dafür zu sorgen, dass diese gefährlichen Programme erst garnicht auf den Rechner kommen, wird mit irgendwelchem Halbwissen versucht, einem fett im Kernel sitzenden, von einem sehr cleveren Programmierer erstellten Virus von einer durch das Betriebssystem von allen administrativen Rechten beraubter Position mit einem Interpreter auf den Pelz zu rücken!So etwas ist nicht nur lächerlich, die Aufforderung dazu ist sogar fahrlässig! Die Virenprogrammierer lachen sich tot, schon wieder ein "Kandidat", der mit einem verseuchten Rechner im Internet hängt und bei jedem Datentausch fleissig Schadsoftware verteilt!
Es hat schon einen Grund, bei Virenbefall den Rechner plattzumachen und das System von ORGINALMEDIEN wiederherzustellen! Wer "ständig" Probleme mit Viren hat, dokumentiert damit seine Unfähigkeit, mit dem Internet umzugehen! Und da hilft ein bissl AutoItscript mit Sicherheit am wenigsten weiter....
-
Hi,
ZitatDie von Andy erwähnten Scripte funktionieren nicht. Wenn ich dort meine Weiterleitungsseite, bzw. IP eintrage können die keine Verbindung aufbauen und mir wird WSA-Fehler 10060 angegeben.
wenn die Scripte in der deutschen Hilfe seitdem nicht geändert wurden, funktionieren die Scripte einwandfrei!ZitatWSA-Fehler 10060
ist ein timeout....
ZitatAuf einem PC klappt das, jedoch aufgeteilt auf Laptop und Desktop funktioniert das ganze nicht.
Wie jetzt, funktionieren die Scripte auf einem Rechner oder nicht? Scheinbar schon. Also liegts an etwas anderem.Sind Laptop und Rechner per Netzwerkkabel verbunden? Ohne weitere Informationen zu deiner Infrastruktur (Betriebssystem/Router/Netzwerk) kommen wir so nicht weiter.
Ich gehe davon aus, dass sämtliche Firewalls ausgeschaltet sind, und sich die Rechner im selben Netzwerk befinden. Wenn der Laptop über wlan angebunden ist, kann es sein, dass der Router aus Sicherheitsgründen für wlan ein eigenes Netz verwendet, und dazwischen "routet". Dann müssen natürlich Serverdienste freigeschaltet werden! -
Wird immer besser!
In das MSDN-Suchfeld kann man per ctrl-v nicht reinkopieren, der Fokus steht in diesem Fall im Editor.
Ein Such-Start per ENTER nach der Eingabe ins MSDN-Suchfeld wäre auch nett
//Unverschämtes Pack! Da bekommen sie ein klasse Tool geliefert und meckern noch rum.....
// -
Zitat
wenn eine Funktion File Read ToArray heist dann sollte sie schon das machen was sie Verspricht
_Filereadtoarray macht genau das was es verspricht!
Allerdings sollte man schon verstehen, was man da macht.....Du VERSUCHST eine EXE-Datei einzulesen, was passiert?
_filereadtoarray öffnet die Datei, liest bis zum ersten Nullbyte die Daten (wieso auch mehr, eingestellt ist Lesemodus 0 ) und schreibt dieses Ergebnis in ein Array, soweit völlig richtig!
Die ersten beiden Bytes einer EXE-Datei sind M und Z dann folgen einige Nullbytes...Schreib einfach die Funktion so um, so wie du sie brauchst, wo ist das Problem?
Spoiler anzeigen
[autoit]Func _FileReadToArray($sFilePath, ByRef $aArray)
[/autoit] [autoit][/autoit] [autoit]Local $hFile = FileOpen($sFilePath, $FO_READ) ;**********hier würde ich im binärmodus öffnen*********
[/autoit] [autoit][/autoit] [autoit]If $hFile = -1 Then Return SetError(1, 0, 0);; unable to open the file
[/autoit]
;; Read the file and remove any trailing white spaces
Local $aFile = FileRead($hFile, FileGetSize($sFilePath))
;~ $aFile = StringStripWS($aFile, 2)
; remove last line separator if any at the end of the file
If StringRight($aFile, 1) = @LF Then $aFile = StringTrimRight($aFile, 1)
If StringRight($aFile, 1) = @CR Then $aFile = StringTrimRight($aFile, 1)
FileClose($hFile)
If StringInStr($aFile, @LF) Then
$aArray = StringSplit(StringStripCR($aFile), @LF)
ElseIf StringInStr($aFile, @CR) Then ;; @LF does not exist so split on the @CR
$aArray = StringSplit($aFile, @CR)
Else ;; unable to split the file
If StringLen($aFile) Then
Dim $aArray[2] = [1, $aFile]
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return 1
EndFunc ;==>_FileReadToArrayÜbrigens, wenn man den Cursor auf den Funktionsnamen stellt und dann Strg+J drückt, öffnet Scite die UDF an der Position der Funktion
-
blubbstar hat Recht, falls das Spiel direkt einen eigenen Framebuffer auf der Grafikkarte benutzt, bekommt Windows davon garnichts mit. Günstigstenfalls bekommt man einfach nur einen schwarzen Screen.
VideoProgramme machen das oft auch so, da hat man dann einen Screen mit den tollen Menüs, und an Stelle des Bildes(Videos) ist eine schwarze Fläche....so wie hier, übrigens XP:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Zitat
Wenn ein fragwürdiges Thema nach 12h immernoch in der Moderation hängt weil niemand genau weiss ob er ihn freischalten soll, dann kann das beim User durchaus für Verwirrung sorgen
Wann hat nach 12h ein Thema immer noch in der Moderation gehangen? Die Praxis läuft doch so ab:
Neu-User postet "zwielichtigen" Thread.
PU1 sieht den Thread in der Moderation nach spätestens 5 Minuten, liest, ist sich nicht sicher ob freigeschaltet werden sollte und wartet ab....
PU2 sieht den Thread in der Moderation nach spätestens 10 Minuten, liest, ist sich nicht sicher ob freigeschaltet werden sollte und wartet ab....
PU3 sieht den Thread in der Moderation nach spätestens 15 Minuten, liest, ist sich nicht sicher ob freigeschaltet werden sollte und wartet ab....
uswusf...
Irgendwann erbarmt sich ein "weicher" PU/Mod und schaltet frei, oder einer der "härteren" antwortet und sperrt.
Egal wie das System aussehen wird, es bleiben für den "zwielichtigen" Thread 2 Möglichkeiten. Freischalten oder sperren.
Wenn nach 12h der Thread immer noch in der Moderation hängt, ist DEFINITIV etwas faul! Denn dann haben viele Leute sich GEGEN Freischalten entschieden!Vielleicht sollte man NOCH deutlicher in der Aussage an die Neu-User werden. Wer sich mit seinem "Problem" nicht eindeutig artikulieren kann (dazu gehört das bisherige Script/Auszug) bekommt generell keine Freischaltung. Die ernsthaft Interessierten juckt das nicht die Bohne, denn diese sind sehr wohl in der Lage, mit einigen Sätzen ihr Problem zu beschreiben und ggf auch einen Teil ihres Scriptes zu posten bzw benutzten erst garkeine "zwielichtigen" Befehle.
Und um mal aus dem Nähkästchen zu plaudern, mir ist ein cleverer Botter, bei dem ich erst nach 2 Wochen merke wie der Hase läuft, wesentlich lieber als nervende User, die man noch nach dem 100. Post auf die Hilfe und die Suchfunktion hinweisen muss!
Wieso soll ich jemandem, der sich im Forum produktiv einbringt und in der Lage ist ein programmtechnisches Problem zu artikulieren, nicht helfen? Das ist immer noch MEINE Entscheidung, Bot hin oder her!
So mancher, der in den letzten Jahren hier haarscharf als "Botverdächtiger" die Kurve gekriegt hat (Namen lasse ich mal weg
), ist nun akzeptiertes Mitglied und gibt sein hier erweitertes Knowhow weiter. Und nicht nur zu Bot-relevanten Themen! Und genau so soll es m.E. auch sein.
Daher erweitere ich Eukalyptus´ Forderung nach "Qualität statt Quantität!" mit "Mehr Niveau!"Btw. in den letzten beiden Jahren haben sich in der Weihnachtszeit die Bot-Themen hier gestapelt, das Forum wurde von "Botkiddies" geradezu überflutet. In diesem Jahr ist es auffallend ruhig, woran das wohl liegen mag?
-
Zitat
Ich kann mir schon vorstellen dass es als Neuling nicht wirklich einfach ist das System zu blicken auch mit 10 Meldungen.
Ich kann dich nachvollziehen, allerdings frage ich mich ernsthaft, was es bei folgendem "nicht zu blicken" gibt. Ich spreche jedem halbwegs der Sprache mächtigem Primaten die Qualifikation hier zu posten ab, der nicht versteht um was es geht!
Zitat von pee´s Info auf der PortalseiteSeit heute werden neue User für die ersten 10 Tage moderiert. Das heißt, dass ihre Themen erst von einem PowerUser, Moderator oder Administrator freigeschaltet werden müssen. Natürlich kann das ein paar Minuten oder im Extremfall Stunden dauern, da müssen wir einfach um Geduld bitten. Bitte schreibt keine Mails oder PNs deswegen, wir sehen die Themen und kümmern uns sobald wie möglich darum.......uswusf
Man muss die Pisa-Runterzieher nicht auch noch mit aller Gewalt belohnen.... -
sry, hatte mich im vorigen Post verschrieben.
In timerinit() werden die Takte seit dem Rechnerstart (oder Überlauf der Register) gezählt, und dann bei timerdiff() die Differenz in Millisekunden berechnet.Es kann auch sein, dass der Uhrenbaustein auf dem Mainboard ausgelesen wird. Da das extrem lange dauert (nicht für eine genaue Zeitmessung geeignet) wird idR nur beim Rechnerstart ausgelesen nach EDX:EAX und dann wie schon beschrieben die Anzahl der Takte gezählt.
Daher kann es unter Umständen beim Übertakten vorkommen, dass die WINDOWSUHR vorgeht! Denn auch diese bezieht ihre Zeit ja irgendwoher. Auch Spiele, welche ziemlich nah an der Hardware programmiert sind, können die Uhrenbausteine beeinflussen. -
Um mal alle Klarheiten zu beseitigen:
Die Zeitmessung erfolgt auf PC´s grösstenteils mit dem Befehl RDTSC (Read Time Stamp Counter), welcher in den Registern EDX:EAX (also insgesamt 64 Bit) die Anzahl der Prozessortakte seit dem Rechnerstart zurückgibt.
Da nun bei jedem Rechner der Prozessortakt unterschiedlich (aber bekannt) ist, wird dieser Wert mittels einer Funktion in Millisekunden umgerechnet.
timerinit() gibt also die Takte seit dem Rechnerstart an.
Timerdiff() macht nun nichts anderes, als die Differenz zu bilden zwischen dem aktuellen und dem vorher per timerinit() gespeicherten Wert und rechnet diesen in Millisekunden um -
Hi Seubo, Deine Idee war klasse!
Allerdings hattest du per XOR deine dest_bitmap verknüpfen wollen. In dieser ist aber, da neu angelegt, jedes Pixel 0x00000000. Um zu invertieren, müsstest du erst das dest_Bitmap mit 0xFFFFFFFF füllen!
Oder du machst es wie der faule Andy, der benutzt beim Blitten den ParameterZitat von Hilfe zu Bitblt$DSTINVERT - Invertiert die Farben des Ziel-Rechtecks (umkehren)
und spart sich so die 2. Bitmap.Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$sFile = FileOpenDialog("", "", "Alle (*.*)")
[/autoit] [autoit][/autoit] [autoit]
If @error Then Exit$hBild = _GDIPlus_BitmapCreateFromFile($sFile)
[/autoit] [autoit][/autoit] [autoit]
$hBild_Inverted = BitmapInvert($hBild)FileDelete(StringTrimRight($sFile, 4) & "_inverted.bmp")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$s = _GDIPlus_ImageSaveToFile($hBild_Inverted, StringTrimRight($sFile, 4) & "_inverted.bmp")
ShellExecute(StringTrimRight($sFile, 4) & "_inverted.bmp")Func BitmapInvert($hBitmap)
[/autoit] [autoit][/autoit] [autoit]
Local $iWidth, $iHeigth, $hBitmap_New, $hBitmap_Old
Local $hDC_Source, $hDC_Dest, $vReturn$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
[/autoit] [autoit][/autoit] [autoit]
$iHeigth = _GDIPlus_ImageGetHeight($hBitmap)$hDC_Source = _WinAPI_CreateCompatibleDC(0)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap_Old = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)$vReturn = _WinAPI_SelectObject($hDC_Source, $hBitmap_Old) ; nur für's debug in Var schreiben
[/autoit] [autoit][/autoit] [autoit][/autoit]
$vReturn = _WinAPI_BitBlt($hDC_Source, 0, 0, $iWidth, $iHeigth, $hDC_Source, 0, 0, $dstinvert)
$vReturn = _WinAPI_DeleteDC($hDC_Source)
Return _GDIPlus_BitmapCreateFromHBITMAP($hBitmap_Old)
EndFunc ;==>BitmapInvert -
Als reiner AutoItcode, bissl langsamer
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$file = FileOpenDialog("Grafikdatei öffnen", @ScriptDir, "Bilder (*.jpg;*.bmp;*.png)")
If @error Then Exit
$hBitmap = _GDIPlus_BitmapCreateFromFile($file)
$iWidth = _GDIPlus_ImageGetWidth($hBitmap)
$iHeight = _GDIPlus_ImageGetHeight($hBitmap)$hBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iWidth, $iHeight, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32RGB)
[/autoit] [autoit][/autoit] [autoit]
$Scan = DllStructGetData($hBitmapData, "Scan0") ;Pointer auf bitmapdaten(Pixel)
$struct = DllStructCreate("dword [" & $iWidth * $iHeight & "]", $Scan) ;struct erstellen, um mit AutoIt die Daten zu bekommenFor $i = 1 To $iWidth * ($iHeight - 1) ;jedes pixel
[/autoit] [autoit][/autoit] [autoit]
$pixel = BitXOR(DllStructGetData($struct, 1, $i), 0xFFFFFF) ;lesen und XORen
DllStructSetData($struct, 1, $pixel, $i) ;Pixel schreiben
Next_GDIPlus_BitmapUnlockBits($hBitmap, $hBitmapData)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageSaveToFile($hBitmap, "invert.jpg")ShellExecute("invert.jpg")
[/autoit] -
Zitat
Da bin ich bei meinem ASM-Inverter nicht drauf gekommen
Tröste dich, ich hab auch erst von jedem Byte 255 abgezogen

-
Die verwendbaren Algorithmen, nach denen verschlüsselt wird: (aus der crypt.au3)
Spoiler anzeigen
[autoit]Global Const $CALG_MD2 = 0x00008001
[/autoit]
Global Const $CALG_MD4 = 0x00008002
Global Const $CALG_MD5 = 0x00008003
Global Const $CALG_SHA1 = 0x00008004
Global Const $CALG_3DES = 0x00006603
Global Const $CALG_AES_128 = 0x0000660e
Global Const $CALG_AES_192 = 0x0000660f
Global Const $CALG_AES_256 = 0x00006610
Global Const $CALG_DES = 0x00006601
Global Const $CALG_RC2 = 0x00006602
Global Const $CALG_RC4 = 0x00006801
Global Const $CALG_USERKEY = 0Tipp einfach mal DES oder SHA1 oder AES128 in eine beliebige Suchmaschine ein.....
-
chip, mal ehrlich, es ist hier schon angesprochen worden, dass viele der "Freischalter" zu weich sind.
Einen User, der
a) nicht in der Lage ist, sein Problem zu artikulieren
b) Forenregeln nicht liest
c) Nachrichten zum Thema "Freischalten" auf der Portalseite nicht liest
d) ergo, somit sowieso Informationsaufnahmeresistent ist
halte ich ehrlich gesagt nicht für qualifiziert, hier seinen Senf zum Besten zu geben.
Ich bewundere diejenigen der PU und Mods hier, die sich noch die Mühe einer Antwort machen, anstatt direkt auf den KICK-Button zu hauen! -
ich finde unsere (PU+Mods) Reaktionszeit auf die freizuschaltenden Threads recht hoch!
Mit Sicherheit hat hier noch NIEMAND länger als einige Stunden auf die Freischaltung seines Beitrags bzw. Info wg Nichtfreischaltung gewartet.@anno und die anderen "Zweifler"
Ihr seid zu sehr verwöhnt von unserer (aller) Geschwindigkeit! Qualifizierte Lösungen im Minutentakt kommen nicht irgendwoher, die werden von einem Großteil der User hier generiert. KOMPETENTER USER!
Das unterscheidet dieses Forum hier gewaltig von vielen anderen Foren.ZitatIm großen und ganzen bleibt autoit.de ein Support Forum und kein Stammtreff
Wo steht das? Wer nicht in der Lage ist, auf eine konkrete Fragestellung im sehr seltenen Extremfall auch einige Stunden zu warten, der hat auch keine Antwort verdient.
Im "richtigen Leben" gibts das alles nämlich NICHT umsonst, da wird für Support sehr tief in die Tasche gegriffen!ZitatSolche Nutzer werden systematisch ausgeschlossen
Hier wird niemand ausgeschlossen! Sämtliche neu erstellten Beiträge werden schnellstmöglich freigeschaltet. Zähl alleine mal zusammen, wie häufig der so oft gescholtene AutoBert in dieser Woche schon sein "Willkommen lieber User bei AutoIt!"-Sprüchlein an neue User gepostet hat! Mit Hinweis auf die Hilfe und weitere sinnvolle Links. DAS verdient Respekt!
Und schau dir mal, wenn du schon bei der Suche bist, kurz an, wieviele sich DAFÜR bei ihm bedankt haben!Ich halte das bestehende System für sinnvoll und richtig. anno, wie wärs, wenn du dich mal 24h wartend vor den Rechner setzen würdest, um den "neuen" Usern ihre Beiträge schnellstens freizuschalten. Ich würde dann die nächsten 24h übernehmen..... Alternativ dazu schreib ein Script, dass die erstgeposteten Userbeiträge auf Forenkonformität prüft und auch ggf. dann löscht:D
Qualität vor Quantität!
Eukalyptus hat es auf den Punkt gebracht....Zitat von chipdann wäre die ganze Problematik der mehreren gleichen Thread und der verwirrung warum der Thread nicht da ist erledigt.
Um das mal knallhart zu kontern. Guck dir mal den ersten Post in diesem Thread an. Der spricht Bände. Der geneigte Leser wird feststellen, dass der User auf keinen Fall Pee´s Nachrichten "Moderation für neue Mitglieder" gelesen haben kann...Und m.E. ist es bei 95% der anderen neuen User, die die Freischaltung nicht begreifen, genauso. Desinteresse gepaart mit Lernresistenz. Und diese Leute fragen sich, warum sie keinen Puderzucker in den Hintern geblasen bekommen! In vielen Berufen endet solche Fahrlässigkeit tödlich....