Ich habs jetzt nur so hingeschrieben, weiss net, obs klappt, oder ob das dein Problem ist
ne da bekommt er ziemlich sicher nen fehler
wer sagt denn das in der ersten dimension genausoviele indexe vorhanden sind wie in der 2ten...
Ich habs jetzt nur so hingeschrieben, weiss net, obs klappt, oder ob das dein Problem ist
ne da bekommt er ziemlich sicher nen fehler
wer sagt denn das in der ersten dimension genausoviele indexe vorhanden sind wie in der 2ten...
ok dann mal alles erklärt
[autoit]Local $a = 4, $b = 3; erstelle 2 lokale variablen und gib ihnen die werte 4 und 3
[/autoit][autoit][/autoit][autoit][/autoit][autoit]ConsoleWrite(' a + b = ' & _Calc($a, $b, 1) & @CRLF)
; consolewrite schreibt in den consolenteil von scite
; schreibe den text 'a + b =' und die rückgabe der funktion _Calc und mache einen zeilenumbruch
ConsoleWrite(' a - b = ' & _Calc($a, $b) & @CRLF)
; das selbe ....
Func _Calc($Val1, $Val2, $Operand=-1)
; Func: erstelle eine neue Funktion
; _Calc(): name der funktion der kann frei gewählt werden solange keine funktion doppelt existiert
; $Val1, $Val2: zwei parameter mit denen die funktion aufgerufen werden muss, in diesem fall zwei zahlen
; $Operand: ein alternativer parameter, wenn die funktion ohne diesen parameter aufgerufen wird, dann wird einfach -1 verwendet
Return $Val1 + $Val2 * $Operand
; return: gib den wert zurück der hinter return steht
; $Val1 + $Val2 * $Operand berechne das ergebnis davon...
EndFunc
; hier endet die funktion
weitere anmerkung:
du musst es nich so schreiben: ConsoleWrite('a - b = ' & _Calc($a, $b) & @Crlf)das ist eher die kurzform. du könntest auch schreiben:
$ergebnis = _Calc($a, $b)dann wird das ergebnis, also dein rückgabewert der von return zurückgegeben wurde in der variable $ergebnis gespeichert
eigentlich schlafe ich nur nachts, aber wenn man sagt Entweder hour größer 13, oder hour gleich 13 und min größer/Gleich 15.
dann wäre laut script bei 13:01 oder 13:10 die bedingung auch erfüllt
eben nicht! das ist genau dann erfüllt wenn es erfüllt sein soll. nämlich jede uhrzeit nach 13 uhr 15.
13:01
(13 > 13) --> nein
((13 = 13) --> ja ) und ((1 > 15) --> nein) --> nein
Man muss auch einsehen können dass man sich täuscht
hast du auf den geräten auf die du zugreifen willst sämtliche berechtigungen die du brauchst?
ähm der thread steht auf gelöst...
ist das absicht?
wenn ich mich nicht irre ist das wenn man ein array mit z.B. $array[-1] oder so abfragen will
das könnte bei dir auch der fall sein, weil _Arraysearch() -1 zurückgeben kann (falls ein fehler stattfindet)
wenn ich richtig liege dann wäre das ganze mit einer if abfrage leicht gelöst
hier wurde erst ein schülerVZ client gepostet.
ich hab zwar keine ahnung was der alles kann aber vllt hilfts dir ja weiter wenn du ihn dir mal ansiehst
bin nochmal kurz drübergegangen. isses so jetzt das was du suchst oscar?
Spalte 0 hat in jeden index den gleichen wert. nach ihr muss also nicht sortiert werden.
also wird nach spalte 2 sortiert.
beim zweiten durchlauf muss in spalte 1 nichts getauscht werden da alle gleich und in spalte 2 wird nichts getauscht weil die ja schon sortiert sind.
also wird nach spalte 3 sortiert
#include <Array.au3>
Dim $array[100][4]
For $i = 0 To 99
For $j = 1 To 3
$array[$i][$j] = Random(0, 10, 1)
Next
Next; Array mit Zufallsinhalt erzeugen
For $i = 0 To 99
$array[$i][0] = 0
Next
_ArrayDisplay($array)
_Array2D_Sort($array, 0)
_ArrayDisplay($array)
_Array2D_Sort($array, 0)
_ArrayDisplay($array)
; #FUNCTION# ====================================================================================================================
; Name...........: _Array2D_Sort
; Description ...: Sorts a 2D Array by Index
; Syntax.........: _Array2D_Sort($avArray[, $iIndex = 0])
; Parameters ....: $avArray - Array to display
; $iIndex - [optional] Sort Array by this Index
; Return values .: Success - Sorted Array
; Failure - 0, sets @error:
; |1 - $avArray is not an Array
; |2 - $avArray is not an 2D-Array
; |3 - $iIndex is out of
; Author ........: Schnitzel
; Modified.......:
; Link ..........: https://autoit.de/index.php?page=Thread&threadID=18117
; Example .......: Yes
; ===============================================================================================================================
Func _Array2D_Sort(ByRef $avArray, $iIndex = 0)
If Not IsArray($avArray) Then Return SetError(1, 0, 0)
If Not UBound($avArray, 0) = 2 Then Return SetError(2, 0, 0)
If UBound($avArray, 2) <= $iIndex Then Return SetError(3, 0, 0)
Local $bTausch, $sTmp, $i = 0, $iRuns = UBound($avArray) - 2
Do
$bTausch = False
For $j = 0 To $iRuns - $i
If $avArray[$j][$iIndex] > $avArray[$j + 1][$iIndex] Then
For $k = 0 To UBound($avArray, 2) - 1
$sTmp = $avArray[$j + 1][$k]
$avArray[$j + 1][$k] = $avArray[$j][$k]
$avArray[$j][$k] = $sTmp
Next
$bTausch = True
EndIf
Next
$i += 1
Until ($bTausch = False) Or ($i = $iRuns)
If ($bTausch = False) And ($i = 1) Then _Array2D_Sort($avArray, $iIndex + 1)
EndFunc ;==>_Array2D_Sort
da würde ich eher über den zwischenspeicher gehn^^
hatte da noch intressante thread's archiviert
[ offen ] Wie sollen AutoIt Scripte unterinender kommunizieren?
http://www.autoitscript.com/forum/index.php?showtopic=22598&hl=
Ohne das jetzt ausprobiert zu haben würde ich da mal widersprechen
dann probiers mal aus
ZitatIch glaub er meint Textdateien
im vergleich zu dateien die mit Fileread ausgelesen werden. sry hab mich da bisschen blöd ausgedrückt
iniread und iniwrite sind schneller als die filewrite und fileread und ähnliches
ZitatWenn jetzt die Werte im ersten Element gleich sind, dann sollen die gleichen nach dem Wert des zweiten Elements sortiert werden. Das ist bei Deiner Funktion nicht der Fall.
joa ok das kann man ja noch anpassen
Funktioniert wenn es das tun soll was es macht^^. Ich versteh leider immer noch nicht wo da der Unterschied zur offiziellen Funktion liegt.
Lol stimmt. die kann ja genau das gleich
da hab ich wohl im thread was falsch verstanden und vorschnell gehandelt
Was für n Müll thread
ZitatP.s. Ich kann das unter deinem Avatar nicht lesen.
ja hab ich leider bemerkt. das wird zu klein...
"Der Support sagt, das Problem befindet sich irgendwo zwischen der Tastatur und meinem Stuhl"
das steht da
funktionsupdate:
[autoit]Func _Array2D_Sort(ByRef $avArray, $1 = 0, $2 = 0, $3 = 0, $4 = 0 )
Return _ArraySort(ByRef $avArray, $1, $2, $3, $4)
EndFunc
ZitatFileReadLine bei einem bestimmten .ini Bereich?
ini's gibt es doch damit man eben kein fileread und ähnliches braucht.
dann kannste gleich ne .txt oder ne .xyz nehmen. inis sind aber viel schneller (bei großen dateien) und sie sind weniger fehleranfällig
Ich hab immer Probleme mit dem Enter (für 1 Leerzeile muss ich 2 schreiben)
ja eine ist für den zeilenumbruch in die nächste zeile und einer ist dann der zeilenumbruch in der leeren zeile
leere zeilen in ini's sind aber nie gut...
joa das is ne variante, wenn ich alles richtig gemacht hab isses n QuickSort.
der Fall das zwei Werte gleich sind wird nicht berücksichtigt, aber das braucht man ja auch nicht.
man muss doch nur tauschen wenn der nächste größer ist ansonsten bleiben die beiden ja eh nebeneinander
ZitatIst auch falchs... weil dann laut Script auch 12:40 später als 13:15 wäre
entweder du hast mich jetz total doof im kopf gemacht oder du täuscht dich gerade
Schuld an allem bist auf jeden fall du
Ich hoffe mal das kannste gebrauchen Oscar:
hallo leute. aufgrund Oscar's Thread ( https://autoit.de/index.php?page…8088&%20%20 ) und meiner langeweile hab ich mich hingesetzt und ne simple Funktion zum Sortieren eines 2D-Arrays gebastelt.
Und da ich oft was im Hilfebereich bastle und noch nie was unter Scripte gepostet hab dachte ich mir dass es jetzt mal zeit wird. Vllt kanns ja jemand gebrauchen.
Freue mich über jedes Feedback, gefundene Fehler oder Verbesserungsvorschläge.
#include <Array.au3>
Dim $array[100][4]
For $i = 0 To 99
For $j = 0 to 3
$array[$i][$j] = Random(0, 100000, 1)
Next
Next; Array mit Zufallsinhalt erzeugen
$var = _Array2D_Sort($array, 0)
_ArrayDisplay($var)
$var = _Array2D_Sort($array, 1)
_ArrayDisplay($var)
$var = _Array2D_Sort($array, 2)
_ArrayDisplay($var)
$var = _Array2D_Sort($array, 3)
_ArrayDisplay($var)
$var = _Array2D_Sort($array, 4)
MsgBox(0,"",@error)
; #FUNCTION# ====================================================================================================================
; Name...........: _Array2D_Sort
; Description ...: Sorts a 2D Array by Index
; Syntax.........: _Array2D_Sort($avArray[, $iIndex = 0])
; Parameters ....: $avArray - Array to display
; $iIndex - [optional] Sort Array by this Index
; Return values .: Success - Sorted Array
; Failure - 0, sets @error:
; |1 - $avArray is not an Array
; |2 - $avArray is not an 2D-Array
; |3 - $iIndex is out of
; Author ........: Schnitzel
; Modified.......:
; Link ..........: https://autoit.de/index.php?page=Thread&threadID=18117
; Example .......: Yes
; ===============================================================================================================================
Func _Array2D_Sort($avArray, $iIndex = 0)
If Not IsArray($avArray) Then Return SetError(1, 0, 0)
If Not UBound($avArray, 0) = 2 Then Return SetError(2, 0, 0)
If UBound($avArray, 2) <= $iIndex Then Return SetError(3, 0, 0)
Local $bTausch, $sTmp, $i = 0, $iRuns = UBound($avArray)-2
Do
$bTausch = False
For $j = 0 To $iRuns - $i
If $avArray[$j][$iIndex] > $avArray[$j+1][$iIndex] Then
For $k = 0 To UBound($avArray, 2) - 1
$sTmp = $avArray[$j+1][$k]
$avArray[$j+1][$k] = $avArray[$j][$k]
$avArray[$j][$k] = $sTmp
Next
$bTausch = True
EndIf
Next
$i += 1
Until ($bTausch = False) Or ($i = $iRuns)
Return $avArray
EndFunc
If @Hour > 13 and @min > 15 wäre für mich logischer.
wer auch immer diesen doofen vorschlag gemacht hat hat gerade nicht ganz logisch gedacht, vermutlich weil er zwischen php, mysql und perl mal ins autoit forum geschaut hat
mein vorschlag ist doof weil er um 14 Uhr 10 z.B. nicht das gewünschte ergebnis liefert, weil 10<15
wenndann würds so gehn:
if (@hour > 13) or (@hour = 13 and @min >= 15) then...
da ist aber die andere lösung leichter
Herzlich willkommen im Forum keyhole,
bitte poste doch dein gesamtes script das du bis jetzt hast dann können wir dir am leichtesten helfen
blicke irgendwie nichtmehr ganz durch.
isses gelöst? brauchst du noch wo hilfe?