Hallo,
außerdem fehlt bei RunAs noch das "logon_flag", siehe Hilfe!
[autoit]RunAs($sUserName, $sDomain, $sPassword, 0, $sCMD)
[/autoit]Hallo,
außerdem fehlt bei RunAs noch das "logon_flag", siehe Hilfe!
[autoit]RunAs($sUserName, $sDomain, $sPassword, 0, $sCMD)
[/autoit]Hallo,
mit CURL habe ich noch nicht gearbeitet aber vieleicht fehlt ja nur die Pfadangabe vor den ausführbaren Dateien!
Zeile 9 müsste dann so aussehen!!
[autoit]Run("C:\Users\User\Downloads\curl\ReconnectRouter.bat", "C:\Users\User\Downloads\curl\")
[/autoit]Hallo,
auf den ersten Blick fehlt da noch ein Backslash nach @ScriptDir
[autoit]Runas ("Administrator", @LogonDomain, "Password", 0, @ScriptDir & "\Tafelauswerten.exe s")
[/autoit]Hallo,
binär-Daten muß man mit read und nicht mit getline lesen. Geschrieben werden sie mit write.
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
long readlen, readlen2;
char data[10000];
ofstream out("zout.isms",ios_base::binary|ios_base::out);
ifstream in("bg.png",ios_base::binary|ios_base::in);
ifstream in2("txt.txt",ios_base::binary|ios_base::in);
out.setf ( ios::hex, ios::basefield );
in.setf ( ios::hex, ios::basefield );
in2.setf ( ios::hex, ios::basefield );
// get readlen of files
in.seekg (0, ios::end);
readlen = in.tellg();
in.seekg (0, ios::beg);
in2.seekg (0, ios::end);
readlen2 = in2.tellg();
in2.seekg (0, ios::beg);
while (readlen2 > 10000)
{
in2.read(data,10000);
out.write(data,10000);
readlen2 -= 10000;
}
in2.read(data,readlen2);
out.write(data,readlen2);
out << "\n:nFile2:\n";
while (readlen > 10000)
{
in.read(data,10000);
out.write(data,10000);
readlen -= 10000;
}
in.read(data,readlen);
out.write(data,readlen);
out.close();
in.close();
in2.close();
return 0;
}
Alles anzeigen
den befehl gibt man bei CMD
so ein C:\growlnotify.com /a:Teamviewer /r:"General Notification" ""
dann geht's in AutoIt so:
RunWait(@COMSPEC & " /c c:\growlnotify.com /a:Teamviewer /r:""General Notification"" """"")
[/autoit]Aber was bedeutet eigentlich dieses "everest.exe+********"
Bzw für welche Adresse steht da everest.exe
Wenn du hier im Forum suchst findest du bestimmt ein Video-Tutorial von McPoldy zu diesem Thema!
Hallo,
ich hätte da noch eine kleine Änderung für dich. Mir ist aufgefallen, dass immer wenn ich ein Symbol stoppe, die restlichen schneller werden.
Wenn du folgende Schleife
While Not $bStop
For $i = $iStart To 5
If $bStop Then ExitLoop 2
$aWinResult[$i] = Random(0, 11, 1)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $ahGamePics[12], $aLeft[$i], $aTop[$i], 128, 128)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $ahGamePics[$aWinResult[$i]], $aLeft[$i], $aTop[$i], 128, 128)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
Next
Sleep(300)
WEnd
so abänderst
While Not $bStop
For $i = 0 To 5
If $bStop Then ExitLoop 2
If $i >= $iStart Then $aWinResult[$i] = Random(0, 11, 1)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $ahGamePics[12], $aLeft[$i], $aTop[$i], 128, 128)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $ahGamePics[$aWinResult[$i]], $aLeft[$i], $aTop[$i], 128, 128)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
Next
Sleep(300)
WEnd
passiert das nicht mehr.
Hallo,
vllt. solltest du erst mal mit $rs.RecordCount prüfen ob überhaupt was zurückgegeben wurde.
@manuel6000,
bitte keine Mehrfachbeiträge, wenn du was neues hast und letzte Beitrag noch von dir ist, sollte man den letzten Beitrag bearbeiten.
Ja das sind halt die Tücken der rekursiven Funktionen, sie haben zwar in der Regel weniger Codezeien als die gleiche iterative Funktion, dafür sind sie langsamer und können den PC ganz schön durcheinander bringen. ![]()
Auf das Bierchen komm ich bestimmt mal zurück.
Kommt der Fehler auch wenn das Script in Post #7 laufen läßt?
Wenn du willst kann du mir ja mal deinen Code schicken!
Hast du den noch andere Rekursive Funktionen?
Mir ist gerade aufgefallen das man die Abruchbedingung noch etwas verfeinern kann, da ein gültiger Weg nicht mehr als 21 Steps haben kann!
[autoit]Func __SC_Recursive_PathBetweenPlaces($iStart, $iZiel, ByRef $aRetPath, $szPath = ";", $iSteps = 0)
$szPath &= $iStart & ";"
; Abbruchbedingung für erfolgreiche Suchergebnisse
If $iStart = $iZiel Then
If ($aRetPath[0] = 0) Or ($aRetPath[0] > $iSteps) Then ; wenn es der kürzeste Weg ist
$aRetPath[0] = $iSteps ; Schritte bis zum Ziel eintragen
$aRetPath[1] = StringTrimLeft(StringTrimRight($szPath, 1), 1) ; Weg eintragen
Return SetError(0, 0, $iSteps)
EndIf
EndIf
; Abbruchbedingungen für unendliche Rekursionen
If $iSteps > 21 Then Return SetError(1, 0, -1) ; Maximal gültige Weglänge hat 21 Abschnitte
StringReplace($szPath, ";" & $iStart & ";", ";" & $iStart & ";")
If @extended > 1 Then Return SetError(1, 0, -1) ; Wenn das Startfeld mehr als einmal im Weg steht war es wohl ein Umweg
; Wenn bis hier keine Abruchbedingung gegriffen hat kann es weiter gehen
For $i = 1 To 4
If StringIsInt($SC_ARR_PLACES[$iStart][$i]) Then ; Wenn ein Nachbarfeld eingetragen ist
__SC_Recursive_PathBetweenPlaces($SC_ARR_PLACES[$iStart][$i], $iZiel, $aRetPath, $szPath, $iSteps + 1) ; weitersuchen
EndIf
Next
Return SetError(0, 0, -1)
EndFunc ;==>__SC_Recursive_PathBetweenPlaces
Hallo,
der Fehler muss woanders liegen, selbst wenn ich alle Zugmöglichkeiten durchspiele bekomm ich keine Fehlermeldung!
#include <Array.au3>
Global $SC_ARR_POSSIBLEMOVES[1][2];Setze die Globale Varialbe GetPossible (== Mögliche Züge) zurück
Global $SC_ARR_PLACES[65][5]
$SC_ARR_PLACES[0][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[0][1] = 5; 1. Nachbar von Feld 0
$SC_ARR_PLACES[0][2] = 20; 2. Nachbar von Feld 0
$SC_ARR_PLACES[0][3] = 10; 3. Nachbar von Feld 0
$SC_ARR_PLACES[0][4] = 15; 4. Nachbar von Feld 0
$SC_ARR_PLACES[1][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[1][1] = 51; 1. Nachbar von Feld 1
$SC_ARR_PLACES[1][2] = 64; 2. Nachbar von Feld 1
$SC_ARR_PLACES[1][3] = 52; 3. Nachbar von Feld 1
$SC_ARR_PLACES[1][4] = 9; 4. Nachbar von Feld 1
$SC_ARR_PLACES[2][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[2][1] = 34; 1. Nachbar von Feld 2
$SC_ARR_PLACES[2][2] = 33; 2. Nachbar von Feld 2
$SC_ARR_PLACES[2][3] = 62; 3. Nachbar von Feld 2
$SC_ARR_PLACES[2][4] = 14; 4. Nachbar von Feld 2
$SC_ARR_PLACES[3][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[3][1] = 19; 1. Nachbar von Feld 3
$SC_ARR_PLACES[3][2] = 42; 2. Nachbar von Feld 3
$SC_ARR_PLACES[3][3] = 43; 3. Nachbar von Feld 3
$SC_ARR_PLACES[3][4] = 63; 4. Nachbar von Feld 3
$SC_ARR_PLACES[4][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[4][1] = 25; 1. Nachbar von Feld 4
$SC_ARR_PLACES[4][2] = 24; 2. Nachbar von Feld 4
$SC_ARR_PLACES[4][3] = 61; 3. Nachbar von Feld 4
$SC_ARR_PLACES[4][4] = 60; 4. Nachbar von Feld 4
$SC_ARR_PLACES[5][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[5][1] = 0; 1. Nachbar von Feld 5
$SC_ARR_PLACES[5][2] = 6; 2. Nachbar von Feld 5
$SC_ARR_PLACES[6][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[6][1] = 5; 1. Nachbar von Feld 6
$SC_ARR_PLACES[6][2] = 7; 2. Nachbar von Feld 6
$SC_ARR_PLACES[7][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[7][1] = 6; 1. Nachbar von Feld 7
$SC_ARR_PLACES[7][2] = 8; 2. Nachbar von Feld 7
$SC_ARR_PLACES[8][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[8][1] = 7; 1. Nachbar von Feld 8
$SC_ARR_PLACES[8][2] = 9; 2. Nachbar von Feld 8
$SC_ARR_PLACES[9][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[9][1] = 1; 1. Nachbar von Feld 9
$SC_ARR_PLACES[9][2] = 8; 2. Nachbar von Feld 9
$SC_ARR_PLACES[10][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[10][1] = 0; 1. Nachbar von Feld 10
$SC_ARR_PLACES[10][2] = 11; 2. Nachbar von Feld 10
$SC_ARR_PLACES[11][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[11][1] = 10; 1. Nachbar von Feld 11
$SC_ARR_PLACES[11][2] = 12; 2. Nachbar von Feld 11
$SC_ARR_PLACES[12][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[12][1] = 11; 1. Nachbar von Feld 12
$SC_ARR_PLACES[12][2] = 13; 2. Nachbar von Feld 12
$SC_ARR_PLACES[13][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[13][1] = 12; 1. Nachbar von Feld 13
$SC_ARR_PLACES[13][2] = 14; 2. Nachbar von Feld 13
$SC_ARR_PLACES[14][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[14][1] = 2; 1. Nachbar von Feld 14
$SC_ARR_PLACES[14][2] = 13; 2. Nachbar von Feld 14
$SC_ARR_PLACES[15][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[15][1] = 0; 1. Nachbar von Feld 15
$SC_ARR_PLACES[15][2] = 16; 2. Nachbar von Feld 15
$SC_ARR_PLACES[16][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[16][1] = 17; 1. Nachbar von Feld 16
$SC_ARR_PLACES[16][2] = 15; 2. Nachbar von Feld 16
$SC_ARR_PLACES[17][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[17][1] = 16; 1. Nachbar von Feld 17
$SC_ARR_PLACES[17][2] = 18; 2. Nachbar von Feld 17
$SC_ARR_PLACES[18][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[18][1] = 17; 1. Nachbar von Feld 18
$SC_ARR_PLACES[18][2] = 19; 2. Nachbar von Feld 18
$SC_ARR_PLACES[19][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[19][1] = 18; 1. Nachbar von Feld 19
$SC_ARR_PLACES[19][2] = 3; 2. Nachbar von Feld 19
$SC_ARR_PLACES[20][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[20][1] = 0; 1. Nachbar von Feld 20
$SC_ARR_PLACES[20][2] = 21; 2. Nachbar von Feld 20
$SC_ARR_PLACES[21][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[21][1] = 20; 1. Nachbar von Feld 21
$SC_ARR_PLACES[21][2] = 22; 2. Nachbar von Feld 21
$SC_ARR_PLACES[22][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[22][1] = 21; 1. Nachbar von Feld 22
$SC_ARR_PLACES[22][2] = 23; 2. Nachbar von Feld 22
$SC_ARR_PLACES[23][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[23][1] = 22; 1. Nachbar von Feld 23
$SC_ARR_PLACES[23][2] = 24; 2. Nachbar von Feld 23
$SC_ARR_PLACES[24][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[24][1] = 4; 1. Nachbar von Feld 24
$SC_ARR_PLACES[24][2] = 23; 2. Nachbar von Feld 24
$SC_ARR_PLACES[25][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[25][1] = 4; 1. Nachbar von Feld 25
$SC_ARR_PLACES[25][2] = 26; 2. Nachbar von Feld 25
$SC_ARR_PLACES[26][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[26][1] = 25; 1. Nachbar von Feld 26
$SC_ARR_PLACES[26][2] = 27; 2. Nachbar von Feld 26
$SC_ARR_PLACES[27][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[27][1] = 26; 1. Nachbar von Feld 27
$SC_ARR_PLACES[27][2] = 28; 2. Nachbar von Feld 27
$SC_ARR_PLACES[28][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[28][1] = 27; 1. Nachbar von Feld 28
$SC_ARR_PLACES[28][2] = 29; 2. Nachbar von Feld 28
$SC_ARR_PLACES[29][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[29][1] = 28; 1. Nachbar von Feld 29
$SC_ARR_PLACES[29][2] = 30; 2. Nachbar von Feld 29
$SC_ARR_PLACES[30][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[30][1] = 29; 1. Nachbar von Feld 30
$SC_ARR_PLACES[30][2] = 31; 2. Nachbar von Feld 30
$SC_ARR_PLACES[31][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[31][1] = 32; 1. Nachbar von Feld 31
$SC_ARR_PLACES[31][2] = 30; 2. Nachbar von Feld 31
$SC_ARR_PLACES[32][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[32][1] = 33; 1. Nachbar von Feld 32
$SC_ARR_PLACES[32][2] = 31; 2. Nachbar von Feld 32
$SC_ARR_PLACES[33][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[33][1] = 32; 1. Nachbar von Feld 33
$SC_ARR_PLACES[33][2] = 2; 2. Nachbar von Feld 33
$SC_ARR_PLACES[34][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[34][1] = 35; 1. Nachbar von Feld 34
$SC_ARR_PLACES[34][2] = 2; 2. Nachbar von Feld 34
$SC_ARR_PLACES[35][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[35][1] = 34; 1. Nachbar von Feld 35
$SC_ARR_PLACES[35][2] = 36; 2. Nachbar von Feld 35
$SC_ARR_PLACES[36][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[36][1] = 35; 1. Nachbar von Feld 36
$SC_ARR_PLACES[36][2] = 37; 2. Nachbar von Feld 36
$SC_ARR_PLACES[37][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[37][1] = 38; 1. Nachbar von Feld 37
$SC_ARR_PLACES[37][2] = 36; 2. Nachbar von Feld 37
$SC_ARR_PLACES[38][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[38][1] = 39; 1. Nachbar von Feld 38
$SC_ARR_PLACES[38][2] = 37; 2. Nachbar von Feld 38
$SC_ARR_PLACES[39][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[39][1] = 38; 1. Nachbar von Feld 39
$SC_ARR_PLACES[39][2] = 40; 2. Nachbar von Feld 39
$SC_ARR_PLACES[40][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[40][1] = 39; 1. Nachbar von Feld 40
$SC_ARR_PLACES[40][2] = 41; 2. Nachbar von Feld 40
$SC_ARR_PLACES[41][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[41][1] = 42; 1. Nachbar von Feld 41
$SC_ARR_PLACES[41][2] = 40; 2. Nachbar von Feld 41
$SC_ARR_PLACES[42][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[42][1] = 3; 1. Nachbar von Feld 42
$SC_ARR_PLACES[42][2] = 41; 2. Nachbar von Feld 42
$SC_ARR_PLACES[43][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[43][1] = 3; 1. Nachbar von Feld 43
$SC_ARR_PLACES[43][2] = 44; 2. Nachbar von Feld 43
$SC_ARR_PLACES[44][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[44][1] = 43; 1. Nachbar von Feld 44
$SC_ARR_PLACES[44][2] = 45; 2. Nachbar von Feld 44
$SC_ARR_PLACES[45][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[45][1] = 46; 1. Nachbar von Feld 45
$SC_ARR_PLACES[45][2] = 44; 2. Nachbar von Feld 45
$SC_ARR_PLACES[46][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[46][1] = 47; 1. Nachbar von Feld 46
$SC_ARR_PLACES[46][2] = 45; 2. Nachbar von Feld 46
$SC_ARR_PLACES[47][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[47][1] = 48; 1. Nachbar von Feld 47
$SC_ARR_PLACES[47][2] = 46; 2. Nachbar von Feld 47
$SC_ARR_PLACES[48][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[48][1] = 49; 1. Nachbar von Feld 48
$SC_ARR_PLACES[48][2] = 47; 2. Nachbar von Feld 48
$SC_ARR_PLACES[49][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[49][1] = 50; 1. Nachbar von Feld 49
$SC_ARR_PLACES[49][2] = 48; 2. Nachbar von Feld 49
$SC_ARR_PLACES[50][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[50][1] = 51; 1. Nachbar von Feld 50
$SC_ARR_PLACES[50][2] = 49; 2. Nachbar von Feld 50
$SC_ARR_PLACES[51][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[51][1] = 50; 1. Nachbar von Feld 51
$SC_ARR_PLACES[51][2] = 1; 2. Nachbar von Feld 51
$SC_ARR_PLACES[52][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[52][1] = 1; 1. Nachbar von Feld 52
$SC_ARR_PLACES[52][2] = 53; 2. Nachbar von Feld 52
$SC_ARR_PLACES[53][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[53][1] = 54; 1. Nachbar von Feld 53
$SC_ARR_PLACES[53][2] = 52; 2. Nachbar von Feld 53
$SC_ARR_PLACES[54][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[54][1] = 55; 1. Nachbar von Feld 54
$SC_ARR_PLACES[54][2] = 53; 2. Nachbar von Feld 54
$SC_ARR_PLACES[55][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[55][1] = 54; 1. Nachbar von Feld 55
$SC_ARR_PLACES[55][2] = 56; 2. Nachbar von Feld 55
$SC_ARR_PLACES[56][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[56][1] = 55; 1. Nachbar von Feld 56
$SC_ARR_PLACES[56][2] = 57; 2. Nachbar von Feld 56
$SC_ARR_PLACES[57][0] = "SAVE"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[57][1] = 58; 1. Nachbar von Feld 57
$SC_ARR_PLACES[57][2] = 56; 2. Nachbar von Feld 57
$SC_ARR_PLACES[58][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[58][1] = 59; 1. Nachbar von Feld 58
$SC_ARR_PLACES[58][2] = 57; 2. Nachbar von Feld 58
$SC_ARR_PLACES[59][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[59][1] = 58; 1. Nachbar von Feld 59
$SC_ARR_PLACES[59][2] = 60; 2. Nachbar von Feld 59
$SC_ARR_PLACES[60][0] = "GRASS"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[60][1] = 4; 1. Nachbar von Feld 60
$SC_ARR_PLACES[60][2] = 59; 2. Nachbar von Feld 60
$SC_ARR_PLACES[61][0] = "HOME2"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[61][1] = 4; 1. Nachbar von Feld 61
$SC_ARR_PLACES[62][0] = "HOME1"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[62][1] = 2; 1. Nachbar von Feld 62
$SC_ARR_PLACES[63][0] = "HOME2"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[63][1] = 3; 1. Nachbar von Feld 63
$SC_ARR_PLACES[64][0] = "HOME1"; Dieser Wert ist irrelevant
$SC_ARR_PLACES[64][1] = 1; 1. Nachbar von Feld 64
$hFile = FileOpen("Output.txt", 2)
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To 64
For $j = 0 To 64
$aRetPath = _SC_PathBetweenPlaces($i, $j)
FileWrite($hFile, "(" & $i & " -> " & $j & ")" & @TAB & "Steps: " & $aRetPath[0] & @TAB & "Path: " & _ArrayToString($aRetPath, " -> ", 1) & @CRLF)
Next
Next
FileClose($hFile)
[/autoit] [autoit][/autoit] [autoit]Func _SC_PathBetweenPlaces($iStart, $iZiel)
Local $aByRefPath[2] = [0]
__SC_Recursive_PathBetweenPlaces($iStart, $iZiel, $aByRefPath)
Local $aRet = StringSplit($aByRefPath[1], ";")
Return $aRet
EndFunc ;==>_SC_PathBetweenPlaces
Func __SC_Recursive_PathBetweenPlaces($iStart, $iZiel, ByRef $aRetPath, $szPath = ";", $iSteps = 0)
$szPath &= $iStart & ";"
; Abbruchbedingung für erfolgreiche Suchergebnisse
If $iStart = $iZiel Then
If ($aRetPath[0] = 0) Or ($aRetPath[0] > $iSteps) Then ; wenn es der kürzeste Weg ist
$aRetPath[0] = $iSteps ; Schritte bis zum Ziel eintragen
$aRetPath[1] = StringTrimLeft(StringTrimRight($szPath, 1), 1) ; Weg eintragen
Return SetError(0, 0, $iSteps)
EndIf
EndIf
; Abbruchbedingungen für unendliche Rekursionen
If $iSteps > 21 Then Return SetError(1, 0, -1) ; Maximal gültige Weglänge hat 21 Abschnitte
StringReplace($szPath, ";" & $iStart & ";", ";" & $iStart & ";")
If @extended > 1 Then Return SetError(1, 0, -1) ; Wenn das Startfeld mehr als einmal im Weg steht war es wohl ein Umweg
; Wenn bis hier keine Abruchbedingung gegriffen hat kann es weiter gehen
For $i = 1 To 4
If StringIsInt($SC_ARR_PLACES[$iStart][$i]) Then ; Wenn ein Nachbarfeld eingetragen ist
__SC_Recursive_PathBetweenPlaces($SC_ARR_PLACES[$iStart][$i], $iZiel, $aRetPath, $szPath, $iSteps + 1) ; weitersuchen
EndIf
Next
Return SetError(0, 0, -1)
EndFunc ;==>__SC_Recursive_PathBetweenPlaces
Habe mich ein wenig durch Wiki gelesen und habe das Thema gefunden Grover-Algorithmus.
Dabei kam mir die Idee das zu durchsuchende Array aufzuteilen und rasugekommen ist für mich eine Vergleichbare Funktion zu Sortierten Unsortierten Array´s.
Rein rechnerisch ist dein Algorithmus bei Arrays mit 11 bis ca. 260 Elementen sehr Fehleranfällig! Weil du da, im ungünstigen Fall, Elemente ansprichst die es gar nicht gibt.
Bei diesem Beispiel-Script muss der Wert von $iElemente >= 263 sein damit es fehlerfrei läuft!
$iElemente = 150
Dim $aArray[$iElemente]
For $i = 0 To $iElemente - 1
Dim $string = Chr(Random(65, 90, 1))
For $j = 1 To 79
$string &= Chr(Random(97, 122, 1))
$aArray[$i] = $string
Next
Next
For $i = 0 To $iElemente - 1
$iSuchen = $i
$szSuchen = $aArray[$iSuchen]
ConsoleWrite("suche Element: " &$iSuchen & @CRLF)
$ret = _ArraySearchQuad($aArray, $szSuchen)
ConsoleWrite("gefundenes Element: " & $ret & @CRLF)
Next
Ich hab's erstmall wieder geschlossen!
Hallo,
schau dir mal den Beitrag Strings vergleichen an!
Hallo,
ZitatWow, vielen Dank
Habe es noch etwas umgeschrieben, damit ich keine Globale Variable setzen muss
War mir schon klar das es noch nicht perfekt war, ich habs nur schnell geschrieben damit du eine Grundlage hast! ![]()
Ich habe die Funktion noch etwas umgeschrieben, jetzt wird auch der Sonderfall, dass $iStart und $iZiel bei Funktionstart gleich sind, korrekt abgefangen. Vorher wurden dann mindestens 2 Steps zurückgegeben, ansonsten ist das Ergenis das gleiche wie vorher!
Func __SC_Recursive_PathBetweenPlaces($iStart, $iZiel, ByRef $aRetPath, $szPath = ";", $iSteps = 0)
[/autoit] [autoit][/autoit] [autoit]$szPath &= $iStart & ";"
[/autoit] [autoit][/autoit] [autoit]; Abbruchbedingung für erfolgreiche Suchergebnisse
If $iStart = $iZiel Then
If ($aRetPath[0] = 0) Or ($aRetPath[0] > $iSteps) Then ; wenn es der kürzeste Weg ist
$aRetPath[0] = $iSteps ; Schritte bis zum Ziel eintragen
$aRetPath[1] = StringTrimLeft(StringTrimRight($szPath, 1), 1) ; Weg eintragen
Return SetError(0, 0, $iSteps)
EndIf
EndIf
; Abbruchbedingung für unendliche Rekursionen
StringReplace($szPath, ";" & $iStart & ";", ";" & $iStart & ";")
If @extended > 1 Then Return SetError(1, 0, -1) ; Wenn das Startfeld mehr als einmal im Weg steht war es wohl ein Umweg
; Wenn bis hier keine Abruchbedingung gegriffen hat kann weiter gehen
For $i = 1 To 4
If StringIsInt($SC_ARR_PLACES[$iStart][$i]) Then ; Wenn ein Nachbarfeld eingetragen ist
__SC_Recursive_PathBetweenPlaces($SC_ARR_PLACES[$iStart][$i], $iZiel, $aRetPath, $szPath, $iSteps + 1) ; weitersuchen
EndIf
Next
Return SetError(0, 0, -1)
EndFunc ;==>__SC_Recursive_PathBetweenPlaces
Das wünsche ich dir auch!
Das mit den Array's sieht komplizierter aus als es ist, dass lernst du schon! ![]()
Hallo,
eine Zelle im 2D-Array wird immer durch eine Zeile- und Spaltenposition bestimmt!
$iCol = 1 ; Hund = 0; Alter = 1; Pass = 2
For $iRow = 0 To UBound($aRet, 1) - 1 ; Zeilen von $aRet
MsgBox(0, "Zeile: " & $iRow & " Spalte: " & $iCol, $aRet[$iRow][$iCol])
Next
Hallo,
dafür musst du die Daten wieder so zusammenstellen wie du sie brauchst!
#include <array.au3>
Main()
Func Main()
[/autoit] [autoit][/autoit] [autoit]Local $sAdr = "csv.txt"
Local $h = FileOpen($sAdr, 0)
Local $aRet = _CSV2Array($h, Default, True, 1)
[/autoit] [autoit][/autoit] [autoit]FileClose($h)
;~ _ArrayDisplay($aRet)
For $iRow = 0 To UBound($aRet, 1) - 1 ; Zeilen von $aRet
$szZeile = ""
For $iCol = 0 To UBound($aRet, 2) - 1 ; Spalten von $aRet
$szZeile &= $aRet[$iRow][$iCol] & @TAB
Next
Msgbox(4,"Zeile",$szZeile) ; hier habe ich die Werte eingebaut
Next
For $iCol = 0 To UBound($aRet, 2) - 1 ; Spalten von $aRet
$szSpalte = ""
For $iRow = 0 To UBound($aRet, 1) - 1 ; Zeilen von $aRet
$szSpalte &= $aRet[$iRow][$iCol] & @CRLF
Next
Msgbox(4,"Spalte",$szSpalte) ; hier habe ich die Werte eingebaut
Next
EndFunc ;==>Main
; #FUNCTION# ===================================================================
; Name ..........: _CSV2Array
; Description ...:
; AutoIt Version : V3.3.0.0
; Syntax ........: _CSV2Array($hFile[, $cSeperator = "auto"[, $bFilterString = True[, $iColumnMode = 0]]])
; Parameter(s): .: $hFile - Handle for the CSV file to Read
; $cSeperator - Optional: (Default = "auto") : Tries to find the separator char
or , or TAB or | or space)
; | Data-seperator-char
; | Empty-string = Opt("GUIDataSeparatorChar")
; $bFilterString - Optional: (Default = True) : Removes leading and trailing " or '
; $iColumnMode - Optional: (Default = 0) :
; | 0: Sets error if lines have different columns and @extended to the csv-line number
; | 1: returns lines with different columns numbers comparing to the first line, too
; | 2: removing all columns > column numbers in the first line
; Return Value ..: Success - 2-dim Array
; Failure - 0
; @ERROR - 1: error file read
; @ERROR - 2: different number of columns / @EXTENDED = CSV-line
; - 3: parameter error
; Author(s) .....: Thorsten Willert
; Date ..........: Mon Dec 07 18:54:35 CET 2009
; ==============================================================================
Func _CSV2Array($hFile, $cSeperator = "auto", $bFilterString = True, $iColumnMode = 0)
Local $s = FileRead($hFile)
If @error Then Return SetError(1)
If $cSeperator = Default Then $cSeperator = "auto"
If Not $cSeperator Then $cSeperator = Opt("GUIDataSeparatorChar")
; searching the line-seperator and splitting the lines into an array
Local $aLines
If StringInStr($s, @CRLF) Then
$aLines = StringSplit($s, @CRLF, 1)
ElseIf StringInStr($s, @CR) Then
$aLines = StringSplit($s, @CR)
Else
$aLines = StringSplit($s, @LF)
EndIf
; searching the delimiter in the first line
Local $aTMP
If $cSeperator = "auto" Then
Local $iMax = 0
Local $iC[5] = [0, 0, 0, 0, 0]
Local $sC[5] = [";", ",", @TAB, "|", " "]
$aTMP = StringRegExp($aLines[1], ";", 3)
If Not @error Then $iC[0] = UBound($aTMP)
$aTMP = StringRegExp($aLines[1], ",", 3)
If Not @error Then $iC[1] = UBound($aTMP)
$aTMP = StringRegExp($aLines[1], "\t", 3)
If Not @error Then $iC[2] = UBound($aTMP)
$aTMP = StringRegExp($aLines[1], "\|", 3)
If Not @error Then $iC[3] = UBound($aTMP)
$aTMP = StringRegExp($aLines[1], "[ ]", 3)
If Not @error Then $iC[4] = UBound($aTMP)
For $i = 0 To UBound($sC) - 1
If $iC[$i] > $iMax Then
$iMax = $iC[$i]
$cSeperator = $sC[$i]
EndIf
Next
EndIf
; creating 2-dim array based on the number of data in the first line
$aTMP = StringSplit($aLines[1], $cSeperator)
Local $iCol = $aTMP[0]
Local $aRet[$aLines[0]][$iCol]
; splitting and filling the lines
For $i = 1 To $aLines[0]
$aTMP = StringSplit($aLines[$i], $cSeperator)
If @error Then ContinueLoop
If $aTMP[0] > $iCol Then
Switch $iColumnMode
Case 0
Return SetError(2, $i)
Case 1
ReDim $aRet[$aLines[0] - 1][$aTMP[0]]
Case 2
$aTMP[0] = $iCol
Case Else
Return SetError(3)
EndSwitch
EndIf
For $j = 1 To $aTMP[0]
$aTMP[$j] = StringStripWS($aTMP[$j], 3)
If $bFilterString Then ; removing leading and trailing " or '
$aTMP[$j] = StringRegExpReplace($aTMP[$j], '^("|'')(.*?)\1$', '$2')
EndIf
$aRet[$i - 1][$j - 1] = $aTMP[$j]
Next ; /cols
Next ; /lines
Return $aRet
EndFunc ;==>_CSV2Array