Die läuft beim mir!!! Damit hab ich ja eben schon getestet!
Beiträge von bernd670
-
-
Warum es bei dir nicht geht weiß ich nicht, hab es gerade runtergeladen und getestet und bei mir funktioniert es! Evtl. mal deinen Quellcode posten.
-
Also das mit den Hex-Werten ist so, der Wert 0x585768 teilt sich folgendermassen auf:
- die 0x58 (88) ist der Farbwert für rot
- die 0x57 (87) der Farbwert für grün und
- die 0x68 (104) der Farbwert für blauDer maximale Farbwert für jede Farbe ist 0xFF (255) d.h. für jede Farbe gibt es 255 Farbtöne. Das sind also 255*255*255 = 16581375 mögliche Farben.
Der Wert 10 für den Parameter shade-variation bei PixelSearch sagt nun aus das die Farbtöne +-10 vom angegeben Farbwert abweichen dürfen.
Das ergibt also folgende Farbtöne:- für rot 0x4E (78) bis 0x62 (98)
- für grün 0x4D (77) bis 0x61 (97)
- für blau 0x5E (94) bis 0x72 (114)oder anders ausgedrückt eine Abweichung von 20*20*20 = 8000 Farben.
Zur Pause von @m4j0r:
[autoit]
So wie sie da steht funktionioniert sie schon. Für die CPU ist es allerdings eine schweißtreibende Aufgabe. In die While-Schleife sollt noch eine Sleep-Anweisung eingefügt werden.Global $paused = False
[/autoit][autoit][/autoit][autoit]
HotKeySet("{PAUSE}", "TogglePause")Func TogglePause()
[/autoit]
$paused = Not $paused
ConsoleWrite($paused & @CRLF)
While $paused
Sleep(100)
WEnd
EndFunc ;==>TogglePause -
Durch Stringsplit steht doch in Sourcecode[1] schon "update" und in Sourcecode[2] schon "lol"!
[autoit];(c) By infinity
[/autoit][autoit][/autoit][autoit]
;;Variabelen
;Includes
#include <INet.au3>
;Optionen
AutoItSetOption("WinTitleMatchMode", 2)
AutoItSetOption("RunErrorsFatal", 0)
;Einstellungen
$link = "http://asiduasoido.as.funpic.de/com.con"
;Haubtvariabbelen
$sourcecode = StringSplit(_INetGetSource($link), "*");Das Check programm
[/autoit]
Select
Case $sourcecode[1] = "update"
;~ $string1 = StringReplace($sourcecode[1], "update\*", "")
MsgBox(0, $sourcecode[1], $sourcecode[2])
EndSelectDa hat wohl jemand die Hilfe zu Stringsplit nicht gelesen!
-
Das geht mit dem 6. Paramter bei PixelSearch
[autoit]PixelSearch(200, 500, 800, 600, 0x585768, 10)
[/autoit]findet z.B. alle Farben von 0x4E4D5E bis 0x626172.
-
Auf verschiedene Farbe kannst Du z.B. so reagieren:
Spoiler anzeigen
[autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$coord = PixelSearch( 0, 0,1024, 768, 0xff1f00 )
If Not @error Then
MouseClick("left", $coord[0], $coord[1])
MsgBox(0,"","Farbe 0xFF1F00 gefunden!")
EndIf$coord = PixelSearch( 0, 0,1024, 768, 0xff0000 )
[/autoit]
If Not @error Then
MouseClick("left", $coord[0], $coord[1])
MsgBox(0,"","Farbe 0xFF0000 gefunden!")
EndIf
WendSpoiler gehen so:
oder einfach die [Blockierte Grafik: http://www.autoit.de/images/bbcode_spoiler.gif]-Taste im Editor drücken
-
Hallo und :willkommen:!
In Zukunft bitte ausagekräftigere Titel für ein Thema vergeben.
So kannst Du mit Hilfe von @error prüfen ob die Farbe gefunden wurde:
Spoiler anzeigen
[autoit]$coord = PixelSearch( 0, 0,1024, 768, 0xff1f00 )
[/autoit]
If Not @error Then
MouseClick("left", $coord[0], $coord[1])
Else
MsgBox(0,"","Farbe nicht gefunden!")
EndIfDas mit der zeitgesteuerten Stoppung musst Du etwas genauer erklären, was soll da genau passieren.
Mit der Einfg- oder Ins-Taste kannst Du zwischen dem Einfüge- und Überschreibmodus hin und her schalten (ist eigentlich Standard in jedem Editor).
-
Fehler gefunden!
Du kannst nicht das Ergebnis von GuiCtrlMsg mit _IsPressed vergleichen.
Probier mal ob es immer noch Flackert!
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiList.au3>
#include <GUIConstants.au3>
#Include <File.au3>
#Include <Array.au3>
#include <_ArrayDisplay2D.au3>
#include <_ArraySort_2ary.au3>
#Include <Misc.au3>Dim $Fehler1, $Fehler2, $Fehler3, $Quellordner, $Zielordner, $zielordner_korrekt, $quellordner_korrekt, $pfad_bilder_korrekt, $klappliste, $beenden2, $GUI2, $array_quelle, $pfad, $Pfad_ohne, $listview2, $listview, $fehler_zu
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$dll = DllOpen("user32.dll")
;Tastenkombination damit alle Dateien markiert werden
HotKeySet("^y", "_markieren")
;Programm-Icon von der kompilierten exe
#Compiler_Icon =Icon.ico
;Standardpfad hier auswählen
$Standard_Quelle = "C:\Test\" ;Quellpfad
$Standard_Ziel = "C:\Ziel\" ;Zielpfad
$Standard_Groesse = "D:\Test\" ;Quellpfad für den Größenvergleich der zu bestellenden Fotos
;Klappliste für das Umbenennen der Dateien
$Klapp1 = "XY" ;1. Eintrag
$Klapp2 = "TZ" ;2. Eintrag
$KlappS = $Klapp2 ;Standard-Eintrag
;anzuzeigendes Bild, wenn mehr als eine Datei ausgewählt wurde
$keinBild = "C:\WINDOWS\Web\Wallpaper\düne.jpg"
;------------------------------------------------------------------------------------------------
;Erkennung der Fotos und Videos
$foto_anfang = "IMG" ;Quellfotos "IMG"
$foto_typ = "JPG" ;Quellfotos Typ "JPG"
$video_anfang = "MVI" ;Quellvideos "MVI"
$video_typ1 = "AVI" ;Quellvideos Typ "AVI"
$video_typ2 = "THM" ;Quellvideos Typ "THM"
;------------------------------------------------------------------------------------------------
;------------------------
;GUI
;------------------------
;GUI erzeugen
$GUI1 = GUICreate("Foto - Video - Tool", 460, 900, 0, 0)
;Buttons
$Quelle = GUICtrlCreateButton("Quellordner auswählen", 250, 280, 50, 50, $BS_ICON)
$Ziel = GUICtrlCreateButton("Zielordner auswählen", 250, 360, 50, 50, $BS_ICON)
$kopieren = GUICtrlCreateButton("Kopieren", 250, 440, 50, 50, $BS_ICON)
$umbenennen = GUICtrlCreateButton("umbenennen", 250, 520, 50, 50, $BS_ICON)
$datum = GUICtrlCreateButton("Datum zurücksetzen", 250, 680, 50, 50, $BS_ICON)
$beenden = GUICtrlCreateButton("Beenden", 250, 840, 50, 50, $BS_ICON)
;Beschriftung erstellen (Text, Rahmen, Farbe)
GUICtrlCreateLabel(" Initialien des Fotografen", 310, 220, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xB0E0E6)
GUICtrlCreateLabel(" Quellordner auswählen", 310, 295, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xD3D3D3)
GUICtrlCreateLabel(" Zielordner auswählen", 310, 375, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xD3D3D3)
GUICtrlCreateLabel(" Kopieren", 310, 455, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0x9ACD32)
GUICtrlCreateLabel(" umbenennen", 310, 535, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xFAFAD2)
GUICtrlCreateLabel(" Datum zurücksetzen", 310, 695, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xFAFAD2)
GUICtrlCreateLabel(" Beenden", 310, 855, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xFFDAB9)
;Beschriftung
GUICtrlCreateLabel(" aktueller Quellpfad:", 10, 10, 440, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFD700)
GUICtrlCreateLabel(" aktueller Zielpfad:", 10, 30, 440, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFC8D)
;Liste mit Dateien
$listview = GUICtrlCreateListView("Bild|Datum", 10, 60, 234, 821, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
;Spaltenbreite für die beiden Spalten festlegen
_GUICtrlListViewSetColumnWidth($listview, 0, 100)
_GUICtrlListViewSetColumnWidth($listview, 1, 130)
;Klappliste für das Umbenennen der Dateien
$Klappen = GUICtrlCreateCombo($Klapp1, 250, 220, 50); erster Eintrag
GUICtrlSetData(-1, $Klapp2, $KlappS) ;weitere Einträge, getrennt durch | , zweiter Eintrag ist der Standard
;------------------------
;sonstiges
;------------------------
;Quellordner öffnen
_Quellordner()
_Quellordner2()
;Bildvorschau erstellen
$pic = GUICtrlCreatePic($keinBild, 250, 60, 200, 150) ;$Quellordner & $FileList[1]
;GUI anzeigen
GUISetState(@SW_SHOW, $GUI1)
;------------------------
;Funktionen
;------------------------
;Quellordner auswählen
Func _Quellordner()
_GUICTRLListViewDeleteAllItems($listview)
$Quellordner_ohne = FileSelectFolder("Bitte den Quellordner auswählen", "", "", $Standard_Quelle)
$Quellordner = $Quellordner_ohne & "\"
If ($Quellordner_ohne = "" Or StringInStr($Quellordner_ohne, ":") = 2) Then
GUICtrlCreateLabel(" ", 110, 10, 330, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFD700)
GUICtrlSetData (-1, $Quellordner_ohne)
Else
MsgBox(16,"Ungültiger Quellordner", "Bitte wählen Sie einen korrekten Quellordner aus")
_Quellordner()
EndIf
EndFunc ;==>_Quellordner
Func _Quellordner2()
;Größe des Arrays anhand von vorhandenen Dateien einstellen
$anzahl = DirGetSize($Quellordner, 3)
Dim $array_quelle[$anzahl[1] + 1][2]
;Array ($Filelist) erzeugen (nur Dateinamen)
Dim $array_quelle = 0
Dim $array_quelle[$anzahl[1] + 1][2]
$FileList = _FileListToArray($Quellordner, "*", 1)
;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
For $i = 1 To UBound($FileList) - 1
$array_quelle[$i][0] = $FileList[$i]
$time2 = FileGetTime($Quellordner & $FileList[$i], 0)
$array_quelle[$i][1] = $time2[0] & $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
Next
;Array sortieren nach Datum
_ArraySort_2ary($array_quelle,1,1)
;_ArraySort_2ary($array_quelle,1,0) ;(wenn andersrum sortieren, dann deaktivieren)
;_ArrayDisplay2D($array_quelle,"$array_quelle")
;Einträge für ListView vornehmen (Datei und Datum)
For $i = 1 To UBound($FileList) - 1
$time2 = FileGetTime($Quellordner & $FileList[$i], 0)
$video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5]
GUICtrlCreateListViewItem($FileList[$i] & "|" & $video2, $listview)
Next
;Einträge vom ListView sortieren
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ];$B_DESCENDING
_GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING
_GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING (wenn andersrum sortieren, dann deaktivieren)
EndFunc ;==>_Quellordner2
;Zielordner auswählen
Func _Zielordner()
$Zielordner_ohne = FileSelectFolder("Bitte den Zielordner auswählen", "", 1, $Standard_Ziel)
$Zielordner = $Zielordner_ohne & "\"
If ($Zielordner_ohne = "" Or StringInStr($Zielordner_ohne, ":") = 2) Then
GUICtrlCreateLabel(" ", 110, 30, 330, -1, $SS_CENTERIMAGE)
GUICtrlSetBkColor(-1, 0xFFC8D)
GUICtrlSetData (-1, $Zielordner_ohne)
Else
MsgBox(16,"Ungültiger Zielordner", "Bitte wählen Sie einen korrekten Zielordner aus")
_Zielordner()
EndIf
EndFunc ;==>_Zielordner
;umbenennen
;Teil1 Prüfung, Fotofiles umbenennen
Func _Foto()
$Fehler1 = 0
Dim $FileList1 = 0
$FileList1 = _FileListToArray($Zielordner, $foto_anfang & "_*." & $foto_typ, 1)
If @error = 4 Then
$Fehler1 = 1
Return
Else
SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
EndIf
For $i = 1 To UBound($FileList1) - 1
$Foto1 = StringReplace($FileList1[$i], $foto_anfang, $klappliste)
FileMove($Zielordner & $FileList1[$i], $Zielordner & $Foto1)
Next
Splashoff()
EndFunc ;==>_Foto
;Teil2 Prüfung, Videofiles umbenennen
Func _Video1()
$Fehler2 = 0
Dim $FileList2 = 0
$FileList2 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ1, 1)
If @error = 4 Then
$Fehler2 = 1
Return
Else
SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
EndIf
For $i = 1 To UBound($FileList2) - 1
$time2 = FileGetTime($Zielordner & $FileList2[$i], 0)
$video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5] & "_" & $klappliste
FileMove($Zielordner & $FileList2[$i], $Zielordner & $video2 & "." & $video_typ1)
Next
Splashoff()
EndFunc ;==>_Video1
;Teil3 Prüfung, Videofiles umbenennen
Func _Video2()
$Fehler3 = 0
Dim $FileList3 = 0
$FileList3 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ2, 1)
If @error = 4 Then
$Fehler3 = 1
Return
Else
SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
EndIf
For $i = 1 To UBound($FileList3) - 1
$time3 = FileGetTime($Zielordner & $FileList3[$i], 0)
$video3 = $time3[0] & "." & $time3[1] & "." & $time3[2] & " " & $time3[3] & "." & $time3[4] & "." & $time3[5] & "_" & $klappliste
FileMove($Zielordner & $FileList3[$i], $Zielordner & $video3 & "." & $video_typ2)
Next
Splashoff()
EndFunc ;==>_Video2
;Teil4 Prüfung, ob überhaupt Dateien existieren
Func _Pruefung()
SplashOff()
If ($Fehler1 + $Fehler2 + $Fehler3 = 3) Then
MsgBox(64, "Keine Dateien vorhanden", "Bitte überprüfen")
Else
EndIf
EndFunc ;==>_Pruefung
;Prüfung, ob der Zielordner korrekt ist
Func _zielordner_korrekt()
If $Zielordner = "\" OR $Zielordner = "" Then
$zielordner_korrekt = 0
_zielordner()
If $Zielordner = "\" OR $Zielordner = "" Then
MsgBox(64,"Kein Zielordner","Bitte wählen Sie zuerst einen Zielordner aus")
$zielordner_korrekt = 0
Else
$zielordner_korrekt = 1
EndIf
Else
$zielordner_korrekt = 1
EndIf
EndFunc ;==>_zielordner_korrekt
;Prüfung, ob der Quellordner korrekt ist
Func _quellordner_korrekt()
If $Quellordner = "\" OR $Quellordner = "" Then
$quellordner_korrekt = 0
_quellordner()
_quellordner2()
If $Quellordner = "\" OR $Quellordner = "" Then
MsgBox(64,"Kein Quellordner","Bitte wählen Sie zuerst einen Quellordner aus")
$quellordner_korrekt = 0
Else
$quellordner_korrekt = 1
EndIf
Else
$quellordner_korrekt = 1
EndIf
EndFunc ;==>_quellordner_korrekt
;Beim Drücken von Strg+y werden alle Bilder markiert
Func _markieren()
For $i = 1 To _GUICtrlListViewGetItemCount($listview)
_GUICtrlListViewSetItemSelState($listview, $i-1, 1 )
Next
EndFunc ;==>_markieren()
;------------------------
;Drücken eines Buttons
;------------------------
While 1
$msg = GUIGetMsg()
Select
;------------------------------------------------------------ Button Quellordner auswählen----------------------------------------
Case $msg = $Quelle
_Quellordner()
_Quellordner2()
;------------------------------------------------------------ Button Zielordner auswählen ----------------------------------------
Case $msg = $Ziel
_Zielordner()
;------------------------------------------------------------ Button Kopieren ----------------------------------------
Case $msg = $kopieren
_quellordner_korrekt()
If $quellordner_korrekt = 1 Then
If _GUICtrlListViewGetSelectedCount($listview) = 0 Then
MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
Else
_zielordner_korrekt()
If $zielordner_korrekt = 1 Then
Local $test = _GUICtrlListViewGetSelectedIndices($listview, 1)
If (IsArray($test)) Then
Local $i
;_ArrayDisplay($test,"$test")
;_ArrayDisplay2D($array_quelle,"$array_quelle")
SplashTextOn("Fotos und Videos werden auf die Festplatte kopiert", "Vorgang läuft - Bitte warten", 350, 30)
For $i = 1 To $test[0]
FileCopy($Quellordner & $array_quelle[$test[$i]][0], $Zielordner, 1)
;FileCopy($Quellordner & $array_quelle[$test[$i]+1][0], $Zielordner, 1) ;(wenn andersrum sortieren, dann deaktivieren)
Next
SplashOff()
EndIf
EndIf
EndIf
EndIf
;------------------------------------------------------------ Button Umbenennen ----------------------------------------
Case $msg = $umbenennen
$klappliste = GUICtrlRead($Klappen)
_zielordner_korrekt()
If $zielordner_korrekt = 1 Then
_Foto()
_Video1()
_Video2()
_Pruefung()
EndIf
;------------------------------------------------------------ Button Beenden ----------------------------------------
Case $msg = $beenden
Exit
;~ ;------------------------------------------------------------ Bildvorschau anzeigen ----------------------------------------
Case $msg = $GUI_EVENT_PRIMARYDOWN
$pos = GUIGetCursorInfo()
If _GUICtrlListViewGetSelectedCount($listview) > 1 Then
GUICtrlSetImage($pic, $keinBild)
Else
If ($pos[4] == $listview) Then
GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
Else
EndIf
EndIf
;------------------------------------------------------------ auf das "x" klicken ----------------------------------------
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelectIf _IsPressed("26", $dll) OR _IsPressed("28", $dll) Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] -
Hallo!
Ich habe es mit Bildern von 1MB - 12MB getestet, bei mir Flackert nichts. Wann tritt das Flackern den auf?
-
Wenn Du es schon mal soweit hast wäre es Super wenn Du auch eine lauffähige Version zur Verfügung stellen würdest. Ich hab nämlich keine Lust was zu Programmieren was eigentlich schon lauffähig zur Verfügung steht!
-
Hallo!
Ich benutze als Ersatz für shutdown.exe immer das Freewaretool PowerOff Dieses Tool ist um einiges mächtiger als shutdown und wenn es mit Parametern aufgerufen wird, wird auch keine GUI angezeigt. Mit -h bekommt man alle möglichen Paramter angezeigt!
Edit:
Übrigens der Sleep-Befehl belastet nicht die CPU sondern entlastet sie!!!
-
Hallo!
2 Fehler sind in deinem Script:
1. hast Du einen Parameter beim Run-Befehl vergessen und
[autoit]
2. müssen die Ausgabe-Kanäle in einer Schleife ausgelesen werden#include <Constants.au3>
[/autoit][autoit][/autoit][autoit]
$hostname = "devel"
$stream = Run(@comspec & " /k C:\Putty\PLINK.EXE " & $hostname & " -pw pwpwpw -l blalbla -ssh ", "C:\Putty", @SW_SHOW ,$STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)$out = "Output:" & @CRLF
[/autoit][autoit][/autoit][autoit]
While 1
$out &= StdoutRead($stream)
If @error Then ExitLoop
Wend$out &= @CRLF & @CRLF & "Error:" & @CRLF
[/autoit][autoit][/autoit][autoit]
While 1
$out &= StderrRead($stream)
If @error Then ExitLoop
WendMsgBox(4096,"test",$out)
[/autoit] -
-
Hier die Umsetzung via DLL:
[autoit]Const $SHERB_NORMAL = 0x0000 ; Normaler Lauf
[/autoit][autoit][/autoit][autoit]
Const $SHERB_NOCONFIRMATION = 0x0001 ; Ohne Nachfragen leeren
Const $SHERB_NOPROGRESSUI = 0x0002 ; Ohne Fortschrittsanzeige
const $SHERB_NOSOUND = 0x0004 ; Ohne Sound
const $SHERB_QUIET = 0x0007 ; Stiller ModusClearRecycler($SHERB_NORMAL)
[/autoit][autoit][/autoit][autoit]Func ClearRecycler($Mode)
[/autoit]
;~ Private Declare Sub SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hwnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long)
DllCall("shell32.dll", "none", "SHEmptyRecycleBinA", "long", 0x0000, "str", "", "long", $Mode)
EndFunc -
Über Variabeln gibt es auch einen Artikel bei Wikipedia -> klick!
-
Wenn die Hände da blieben, wo sie bleiben sollen, wären es nicht meine Hände!

Du suchst also einen Therapeut für's Leben, von AutoIt kommt man nie wieder los!

-
Alina, wenn Du den Tanga trägst stell ich meine Hände zur Verfügung damit Du besser schlafen kannst! :tongue:
-
Kannst Du auch noch Cap's anlegen?
-
Dafür hast Du doch @ScriptDir genommen, oder?
Ich werde jetzt das Thema wieder auf gelöst setzen, es funktioniert ja!

-
Ich habe mal die While-Schleifen korrigiert und ToolTip durch ConsoleWrite ersetzt:
Spoiler anzeigen
[autoit]Global $Zahlen[10][10]
[/autoit]
Global $Err = False
Global $Return
Dim $Ohne[28]
Dim $OhneQuadrat[10]
Dim $OhneZeile[10]
Dim $OhneSpalte[10]
Dim $Show
Dim $Write
Dim $Zeile = 0
Dim $Spalte = 0
;__________________________________________________________
$Zeile = 1
While $Zeile < 10
$Spalte = 1
While $Spalte < 10
$OhneQuadrat = OhneQuadrat($Zeile, $Spalte)
$OhneZeile = OhneZeile($Zeile)
$OhneSpalte = OhneSpalte($Spalte)
$Ohne = zusammen($OhneZeile, $OhneSpalte, $OhneQuadrat)
$Zahl = Generate($Ohne)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Err = ' & $Err & @crlf) ;### Debug Console
If $Err = True Then
$Zeile = 1
$Spalte = 1
Global $Zahlen[10][10]
$Err = False
Else
$Zahlen[$Zeile][$Spalte] = $Zahl
For $ToolTip = 1 To 27
$show = $show & $Ohne[$ToolTip]
Next
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Zeile = ' & $Zeile & ' $Spalte = ' & $Spalte & ' > ' & $show & @crlf) ;### Debug Console
;~ ToolTip("Zeile: " & $Zeile & @CRLF & "Spalte: " & $Spalte & @CRLF & @CRLF & $show)
$Zahlen[$Zeile][$Spalte] = $Zahl
$show = ""
EndIf
Dim $Ohne[28]
$Spalte += 1
WEnd
$Zeile += 1
WEnd
For $Zeile = 1 To 9
For $Spalte = 1 To 9
$Write = $Write & $Zahlen[$Zeile][$Spalte]
Next
Next
$FOW = FileOpen(@ScriptDir & "\Ausgabe.txt", 1)
FileWrite($FOW, $Write)
FileClose($FOW)
Func Generate($Array)
$OK = False
Global $Durchlaufen = 0
$To = UBound($Array)-1
Do
$Random = Random(1, 9, 1)
$OK = True
For $Check = 1 To $To
If $Random = $Array[$Check] Then
$OK = False
EndIf
Next
$Durchlaufen = $Durchlaufen+1
If $Durchlaufen = 100 Then
ExitLoop
EndIf
Until $OK = True
If $Durchlaufen = 100 Then
Global $Err = True
Else
Return $Random
EndIf
EndFunc ;==> Generate
Func OhneQuadrat($WoZeile, $WoSpalte)
Switch $WoZeile
Case 1 To 3
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(1, 3, 1, 3)
Case 4 To 6
$Return = GetQu(1, 3, 4, 6)
Case 7 To 9
$Return = GetQu(1, 3, 7, 9)
EndSwitch
Case 4 To 6
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(4, 6, 1, 3)
Case 4 To 6
$Return = GetQu(4, 6, 4, 6)
Case 7 To 9
$Return = GetQu(4, 6, 7, 9)
EndSwitch
Case 7 To 9
Switch $WoSpalte
Case 1 To 3
$Return = GetQu(7, 9, 1, 3)
Case 4 To 6
$Return = GetQu(7, 9, 4, 6)
Case 7 To 9
$Return = GetQu(7, 9, 7, 9)
EndSwitch
EndSwitch
Return $Return
EndFunc ;==> OhneQuadrat
Func OhneZeile($x)
Local $Return[10]
For $y = 1 To 9
$Return[$y] = $Zahlen[$x][$y]
Next
Return $Return
EndFunc ;==> OhneZeile
Func OhneSpalte($y)
Local $Return[10]
For $x = 1 To 9
$Return[$x] = $Zahlen[$x][$y]
Next
Return $Return
EndFunc ;==> OhneSpalte
Func GetQu($Von_x, $Zu_x, $Von_y, $Zu_y)
Local $Nummer = 1
Local $Ohne[10]
For $FillZeile = $Von_x To $Zu_x
For $FillSpalte = $Von_y To $Zu_y
$Ohne[$Nummer] = $Zahlen[$FillZeile][$FillSpalte]
$Nummer = $Nummer+1
Next
Next
Return $Ohne
EndFunc ;==> qfill
Func Zusammen($x, $y, $q)
Local $Return[28]
Local $Nummer = 1
For $zusammen = 1 To 9
$Return[$zusammen] = $x[$Nummer]
$Nummer = $Nummer+1
Next
$Nummer = 1
For $zusammen = 10 To 18
$Return[$zusammen] = $y[$Nummer]
$Nummer = $Nummer+1
Next
$Nummer = 1
For $zusammen = 19 To 27
$Return[$zusammen] = $q[$Nummer]
$Nummer = $Nummer+1
Next
Return $Return
EndFunc ;==> Zusammen