1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. bernd670

Beiträge von bernd670

  • Silent Installer mit erhöhten Rechten

    • bernd670
    • 6. Februar 2015 um 14:55

    Hallo,

    außerdem fehlt bei RunAs noch das "logon_flag", siehe Hilfe!

    [autoit]

    RunAs($sUserName, $sDomain, $sPassword, 0, $sCMD)

    [/autoit]
  • Wie führe ich cURL Befehle mit CMD aus?

    • bernd670
    • 6. Februar 2015 um 14:39

    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]
  • Runas Befehl mit Parametern Übergeben

    • bernd670
    • 5. Februar 2015 um 19:12

    Hallo,

    auf den ersten Blick fehlt da noch ein Backslash nach @ScriptDir

    [autoit]

    Runas ("Administrator", @LogonDomain, "Password", 0, @ScriptDir & "\Tafelauswerten.exe s")

    [/autoit]
  • [Gelöst] Textdatei und Binary-Datei in eine Datei schreiben und wieder auseinandernehmen

    • bernd670
    • 23. Januar 2011 um 08:58

    Hallo,

    binär-Daten muß man mit read und nicht mit getline lesen. Geschrieben werden sie mit write.

    Spoiler anzeigen
    C
    #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
  • "@comspec" wichtiger befehl wird nicht ausgeführt!

    • bernd670
    • 5. Januar 2011 um 00:59
    Zitat von Baron1977

    den befehl gibt man bei CMD
    so ein C:\growlnotify.com /a:Teamviewer /r:"General Notification" ""

    dann geht's in AutoIt so:

    Spoiler anzeigen
    [autoit]

    RunWait(@COMSPEC & " /c c:\growlnotify.com /a:Teamviewer /r:""General Notification"" """"")

    [/autoit]
  • Adresse auslesen (everest.exe+6021A4)

    • bernd670
    • 3. Januar 2011 um 12:42
    Zitat von Aldi

    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!

  • Crown-Master

    • bernd670
    • 2. Januar 2011 um 19:36

    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

    Spoiler anzeigen
    [autoit]

    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

    [/autoit]


    so abänderst

    Spoiler anzeigen
    [autoit]

    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

    [/autoit]

    passiert das nicht mehr.

  • MySQL Abfrage verursacht Fehler wenn kein Eintrag vorhanden

    • bernd670
    • 2. Januar 2011 um 18:21

    Hallo,

    vllt. solltest du erst mal mit $rs.RecordCount prüfen ob überhaupt was zurückgegeben wurde.

  • Speichern

    • bernd670
    • 2. Januar 2011 um 17:08

    @manuel6000,

    bitte keine Mehrfachbeiträge, wenn du was neues hast und letzte Beitrag noch von dir ist, sollte man den letzten Beitrag bearbeiten.

  • A* Algorithmus?!

    • bernd670
    • 2. Januar 2011 um 09:58

    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.

  • A* Algorithmus?!

    • bernd670
    • 2. Januar 2011 um 02:50

    Kommt der Fehler auch wenn das Script in Post #7 laufen läßt?

    Wenn du willst kann du mir ja mal deinen Code schicken!

  • A* Algorithmus?!

    • bernd670
    • 2. Januar 2011 um 02:28

    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

    [/autoit][autoit][/autoit][autoit]

    ; 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

    [/autoit]
  • A* Algorithmus?!

    • bernd670
    • 2. Januar 2011 um 02:08

    Hallo,

    der Fehler muss woanders liegen, selbst wenn ich alle Zugmöglichkeiten durchspiele bekomm ich keine Fehlermeldung!

    Spoiler anzeigen
    [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [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

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit]
  • Komplexeres? schnelles durchsuchen größerer Arrays

    • bernd670
    • 2. Januar 2011 um 00:19
    Zitat von Kleiner

    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!

    Spoiler anzeigen
    [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To $iElemente - 1
    $iSuchen = $i
    $szSuchen = $aArray[$iSuchen]

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("suche Element: " &$iSuchen & @CRLF)
    $ret = _ArraySearchQuad($aArray, $szSuchen)
    ConsoleWrite("gefundenes Element: " & $ret & @CRLF)
    Next

    [/autoit]
  • Einen Button ohne Namen anklicken.

    • bernd670
    • 31. Dezember 2010 um 01:33

    Ich hab's erstmall wieder geschlossen!

  • Dateien Sortieren

    • bernd670
    • 31. Dezember 2010 um 01:02

    Hallo,

    schau dir mal den Beitrag Strings vergleichen an!

  • A* Algorithmus?!

    • bernd670
    • 30. Dezember 2010 um 20:05

    Hallo,

    Zitat

    Wow, 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!

    Spoiler anzeigen
    [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    Return SetError(0, 0, -1)
    EndFunc ;==>__SC_Recursive_PathBetweenPlaces

    [/autoit]
  • csv Array Problem

    • bernd670
    • 30. Dezember 2010 um 15:02

    Das wünsche ich dir auch!

    Das mit den Array's sieht komplizierter aus als es ist, dass lernst du schon! ;)

  • csv Array Problem

    • bernd670
    • 30. Dezember 2010 um 14:41

    Hallo,

    eine Zelle im 2D-Array wird immer durch eine Zeile- und Spaltenposition bestimmt!

    Spoiler anzeigen
    [autoit]

    $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

    [/autoit]
  • csv Array Problem

    • bernd670
    • 30. Dezember 2010 um 13:38

    Hallo,

    dafür musst du die Daten wieder so zusammenstellen wie du sie brauchst!

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func Main()

    [/autoit] [autoit][/autoit] [autoit]

    Local $sAdr = "csv.txt"
    Local $h = FileOpen($sAdr, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aRet = _CSV2Array($h, Default, True, 1)

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($h)
    ;~ _ArrayDisplay($aRet)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    ; #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)

    [/autoit] [autoit][/autoit] [autoit]

    If $cSeperator = Default Then $cSeperator = "auto"
    If Not $cSeperator Then $cSeperator = Opt("GUIDataSeparatorChar")

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    ; 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, "|", " "]

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($sC) - 1
    If $iC[$i] > $iMax Then
    $iMax = $iC[$i]
    $cSeperator = $sC[$i]
    EndIf
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; 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]

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    Return $aRet
    EndFunc ;==>_CSV2Array

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™