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. MadCatz

Beiträge von MadCatz

  • Array Datensätze Vergleichen

    • MadCatz
    • 14. Januar 2016 um 10:47

    Hallo Leute,

    ich bins mal wieder Madcatz ;)

    Ich habe ein Problem bezüglich Arrays:

    Mein Haupt-Array sieht folgendermaßen aus:

    Titel | Jahr | Qualität | Sound

    Momentan sieht es so, dass ich Abfrage, wie viele Einträge das Array hat und schreibe die Anzahl in eine Ini-Datei nach folgendem Schema: Anzahl = "leer"
    Das "leer" trage ich immer ein.

    Jetzt würde ich gerne die Daten aus der Ini-Datei, jeweils nur die Anzahl, in ein weiteres 1D Array Laden und die jeweils letzten beiden Einträge vergleichen, ob die gleich groß sind und wenn dem nicht so ist, soll mein Tool das HAupt-Array wieder öffnen und die Titel aus der jeweils entstandenden Differenz enxtrahieren.


    Sprich beim ersten Start habe ich

    142 Titel

    beim zweiten Start habe ich

    145 Titel

    also müssen die Titel von 143 bis 145 extrahiert werden.


    Kann mir vielleicht jemand behilflich sein, damit ich weiß, wie ich vorgehen muss?


    Viele Grüße,

    MadCatz

  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 12. Januar 2016 um 13:27

    H. water,

    hab dein Bespiel ausprobiert, bekomme leider dennochden Inhalt von Excel, einschließlich der leeren Zeilen ausgegeben.

    Ich hab es nun anders geregelt bekommen :)

    Damit auch ihr und evtl. andere, die ebenfalls vor diesem Problem stehen, wissen wie ich es gelöst habe, hier der Code:

    Code
    $Workbook = _Excel_BookOpen(_Excel_Open(), $Path)
    		$Range = _Excel_RangeRead($Workbook, Default, "A1:D1000")
    		Dim $Range_Data[1][4]
    		For $i = 0 to UBound($Range) -1
    			If StringLen($Range[$i][0])>=2 Then
    				$WriteString = $Range[$i][0] & " | " & $Range[$i][1] & " | " & $Range[$i][2] & " | " & $Range[$i][3]
    				_ArrayAdd($Range_Data,$WriteString)
    			EndIf
    		Next
    		_ArrayDisplay($Range_Data)


    $Range kann hierbei X-Beliebig groß eingestellt werden.


    Ich bedanke mich vielmals bei euch allen, die mir geholfen haben eine Lösung zu finden :)

  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 11. Januar 2016 um 21:02

    Wenn dich das so mache, wie du es schreibst, dann spuckt er mir mindestens 999 Zeilen aus, obwohl bisher nur 143 beschrieben wurden.


    So hab ich das ganze am Anfang gemacht und ausprobiert, bevor ich hier gefragt habe, aber das läuft halt nicht, wie es beschrieben wurde ;)


    Falls ich mich irren sollte, kannst du mich gerne korrigieren.

  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 11. Januar 2016 um 19:51

    hi,

    ich bin grad zu blöd, ich weiß grad nicht wie die Schleife auszusehen hat -.-

    Kannst du mir viellecht ein Beispiel bereit stellen? :)

    So siehts nämlich bei mir aus, und dann ist alles leer.

    Code
    $Range = _Excel_RangeRead($Workbook, Default, "A1:D1000")
    		_ArrayDisplay($Range)
    		For $i = 0 to Ubound($Range) -1 step 1
    			if $i <> "" then Redim $Range[Ubound($Range-1)]
    		Next
    		_ArrayDisplay($Range)
  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 11. Januar 2016 um 19:01

    Hi Peter,

    Ich meine damit, dass heute bspw. A1:A20 befüllt ist, morgen aber bspw. A1:A35.

    Die Einträge dazwischen sind alle befüllt, alle dahinter leigenden sind leer.
    Sprich das Excelsheet wächst Dinamisch an und mein Autoit-Sccript soll mir nur die befüllten in ein Array ausspucken

  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 11. Januar 2016 um 17:06

    Hi Kanashius,

    danke für deine schnelle Antwort :)

    Also wenn ich das richtig verstanden habe meinst du, dass ich das Array ca. 1000 Einträge lang machen soll, oder länger und dann die leeren Einträge herausfiltere und dann ein Array ohne leer Einträge erhalte? :)
    Und falls das Array voll ist, mit ReDim neu Diminsioniere?

    Rechenintensiv ist egal, hab dafür mehr als genug Rechenpower bereit stehen ^^

  • Excel nur gefüllte Spalten uns Zeilen auslesen

    • MadCatz
    • 11. Januar 2016 um 15:28

    Hallo Leute,

    ich bins mal wieder Madcatz ;)

    Ich habe ein Problem.

    Und zwar müsste ich aus Excel Datensätze auslesen, prinzipell weiß ich, wie es funktioniert:

    Code
    $Workbook = _Excel_BookOpen(_Excel_Open(), $Path)
    		$Range = _Excel_RangeRead($Workbook, Default, "A1:B500")
    		_ArrayDisplay($Range)

    Hier wird die Exceltabelle geöffnet und anschließend der Bereich A1:B500 in ein Array geschrieben.

    Allerdings weiß ich in meiner realen Anwendung vor dem Auslesen nicht, wie viele Datensätze pro Spalte enthalten sind.
    Was ich allerdings weiß, ist dass Splate A genauso viele Einträge besitzen wird, wie Spalte B.

    Könnt ihr mir hierbei vielleicht helfen, sodass ich keine leeren Datensätze ausgespuckt bekomme?

    Zur Info SQLite wäre im Notfall eine Option, aber dann hab ich wieder mehr arbeit :D
    Access ist auf gar keinen Fall eine Option, damit hab ich immer nur Probleme in Kombination mit Autoit ;)

    Viele Grüße,
    MadCatz :)

  • GroupEx.au3 -- User Group Control, vielseitig modifizierbar

    • MadCatz
    • 2. September 2015 um 07:29

    @BugFixer:

    Du bist genial :)

    Vielen Dank, jetzt sieht mein Tool viel besser aus, als mit den blöden anderen Groups :)

  • GroupEx.au3 -- User Group Control, vielseitig modifizierbar

    • MadCatz
    • 1. September 2015 um 12:15

    Hey, gibt es eine Möglichkeit die erstellten Groupboxen von BugFixer zu hiden?

    Ich verwende die nämlich und müsste die nach betätigen von Button auf Hide und Show setzten können


    Gruß,
    MadCatz

  • Chrome Tab/URL aktualisieren und auslesen

    • MadCatz
    • 17. August 2015 um 07:54

    Hallo Leute,

    ich bnötige nach geraumer Zeit noch einmal eure Hilfe :)

    Und zwar wollte ich ein Programm schreiben, dass überprüft, ob Chrome als Browser geöffnet ist, falls nicht, soll dieser geöffnet werden, mit einem bestimmten Link.

    Code
    If Not ProcessExists("Chrome.exe") then
       ShellExecute("Chrome.exe","http://www.blubblub.de")
    Endif

    Wenn Chrome aber bereits geöffnet ist möchte ich, dass der/die Tabs überprüft wird/werden, ob der URL mit beispielsweise "http://www.blubblub.de" übereinstimmt.
    Falls dies so ist, soll nur dieser Tab aktualisiert werden, also per F5, falls nicht, soll halt dieser besagte Tab erstellt und aufgerufen werden. (Alles muss im Hintergrund ablafen)

    Hab das mal so ausprobiert bekomm aber nichts richtiges ausgegeben.


    Code
    $2 = WinActivate("Chrome")
       Send("{F5}")
       msgBox(1,1,$2)

    Kann mir jemand weiterhelfen?

    Gruß,
    MadCatz :)

  • Prozess schleißen, wenn er öfter als einmal offen ist

    • MadCatz
    • 27. Januar 2015 um 10:38

    Hey danke, dass nur mit Processexists, hab ich ausprobiert, aber da muss ich ja die PIDs abgleichen, was ich allerdings für umständlich halte.

    Ich werde deine Lösung nachher mal ausprobieren.

    Danke :)

    @chip, dass ist der ganze Quellcode ;)

  • Prozess schleißen, wenn er öfter als einmal offen ist

    • MadCatz
    • 26. Januar 2015 um 12:45

    Hallo Zusammen,

    ich habe ein kleines Problem. Und zwar öffnet sich mein erstelltes Script immer wieder von selbst, so dass dieses öfters als einmal existiert, was nicht gerade förderlich ist.

    Ich weiß nicht warum :(

    Vielleicht könnt ihr mir ja weiterhelfen :)

    Viele Grüße,
    MadCatz

    Code
    While 1
        $CheckTime = FileGetTime($FileDatabase, 1, 0)
        $StringChange = _ArrayToString($CheckTime,".", 0, 2)
        $StringSystemDate = @Year&"."&@MON&"."&@MDAY
        $Result = StringCompare($StringChange, $StringSystemDate)
        If $Result = 0 Then
            MsgBox(1,$verName, "Die verwendete Datenbank ist aktuell.",2)
        Elseif $Result = 1 Then
            MsgBox(1,$verName,"Die Systemzeit wurde verändert und muss neu eingestellt werden.")
        ElseIf $Result = -1 Then
            ProcessClose("MSACCESS.exe")
            Sleep(100)
            FileDelete($FileDatabase)
            DriveMapAdd("L:", "\\dezntengsrv1\USB-Verwaltung$", 0, "CCTechnik01", "CCUser2010")
            If @error = 0 Then
                 SplashTextOn($verName,"Die Datenbank ist veraltet... Wird aktualisiert...", 270, 100)
                    FileCopy("L:\USB-Sticks-DB.accdb", $Copie)
                    FileSetTime($Copie, "",1)
                    DriveMapDel("L:")
                 Splashoff()
                SplashTextOn($verName,"Die Datenbank wurde erfolgreich aktualisiert...", 270, 100)
                    Sleep(1000)
                    ShellExecute($File)
                SplashOff()
            ElseIf @error = 1 Then
                MsgBox(0,$verName,"Ein Unbekannter Fehler ist aufgetreten, bitte an den Support wenden.")
            ElseIf @error = 2 Then
                MsgBox(0,$verName,"Der Freigabezugriff wurde verweigert, bitte an den Support wenden.")
            ElseIf @error = 3 Then
                MsgBox(0,$verName,"Laufwerk bereits gemapped. Wird entfernt.", 1)
                DriveMapDel("L:")
            ElseIf @error = 4 Then
                MsgBox(0,$verName,"Der Gerätename ist ungültig, bitte an den Support wenden.")
            Elseif @error = 5 Then
                MsgBox(0,$verName,"Die Freigabedaten sind nicht korrekt, bitte an den Support wenden.")
            Elseif @error = 6 Then
                MsgBox(0,$verName,"Das Kennwort ist ungültig, bitte an den Support wenden.")
            EndIf
        EndIf
        Sleep(28800000)
    WEnd
    Alles anzeigen
  • If Abfrage

    • MadCatz
    • 8. September 2014 um 14:45

    Ja ich weiß -.- manchmal weiß ich nicht wie ich das schreiben soll, da ich häufig viel zu kompliziert denke.

    Das mit StringLeft and Right funktioniert :)


    Danke =))

  • If Abfrage

    • MadCatz
    • 8. September 2014 um 14:13

    Hey,

    folgendes:

    Mein Programm soll über eine if Abfrage erfassen, ob in der Datenbank ein Eintrag exestiert, also

    [autoit]


    $Search2 = _ArraySearch($Array, $sKennwort,$Search,$Search)
    $query1 = "SELECT * FROM "&$tabellenname&" WHERE Box = '"&$sStickBox&"'"
    $strData = String(_ReadOneFld($query1, $datenbankpfad, $Spalte))
    $strData_A = String(_ReadOneFld($query1, $datenbankpfad, $Spalte3))
    If $strData = True Then
    If $strData_A <> "-"&$sTechniker&"-" Then
    MsgBox(0+64,"Fehler", "Stickbox bereits ausgeliehen",3)

    [/autoit]

    Da zu beginn zum Beispiel in der $Spalte3 zum Beipiel ein X belieber Name stehen kann, der sich auch mit der Zeit ändert weiß ich nicht so Recht wie ich das $sTechniker austauschen soll.

    $sTechniker = Name


    Der Name wird beim eintrag erstellen eingefügt. Wenn jetzt aber der Eintrag entfernt wird, so wird vor dem Namen, der den Eintrag geändert hat "-" und hinter den Namen auch "-" geschrieben.

    Wenn jetzt jemand einen Eintrag erstellen will, aber die $Spalte3 einen Eintrag enthält, der nicht dieses Format "-"Name"-" aufweist, dann soll halt die gegebene MsgBox angezeigt werden.
    Das klappt aber im momentanen Zustand nur, wenn die Namen über einstimmen, allerdings, sollte dass so sein, dass das egal ist, was zwischen den Strichen steht.

    Ich hoffe mich versteht jemand und mir kann geholfen werden :)

  • Buttonbelegungsproblem

    • MadCatz
    • 8. September 2014 um 12:09

    Hallo Zusammen,

    Im Anhang findet ihr meine GUI :)

    Ich steh mal wieder vor einem Problem:

    Ich habe den mittleren Button "OK" solange deaktiviert, bis alle vorraussetzungen erfüllt sind, wenn man auf Ausleihen oder Rückgabe klickt.
    Danach wird automatisch immer weiter überprüft, ob 7 Zeichen im Feld Sticknummer sind. Wenn 7 Zeichen drin sind, wird überprüft, ob diese Zeichenfolge in einer Datenbank vorhanden sind, dabei wird der Case $OK, also Button "OK"
    automatisch abgerufen.

    Wenn vorher Ausleihen betätigt wurde, dann wird 1. Überprüft, ob der Eintrag vorhanden wird, wenn ja, dann wird in die Datenbank der Name der Person reingeschrieben, die das Objekt ausgeliehen hat.
    Wenn vorher Rückgabe gedrückt wird, dann soll der Name entfernt werden.

    Da das ganze aber unter

    [autoit]

    Case $OK

    [/autoit]

    abläuft habe ich das Problem, dass die Rückgabe nicht funktioniert.

    Weiß jemand, wie ich dem Button "OK" zwei verschiedene Funktionen geben kann?


    Mit einer If Abfrage

    [autoit]

    If $Ausleihen = 1 then...
    Elseif $Ruckgabe = 1 then ...

    [/autoit]


    Edit BugFix: Wenn das Problem behoben ist, dann wird der Beitrag auf gelöst gesetzt und nicht gelöscht. :evil:
    [Post wiederhergestellt und auf "gelöst" gesetzt]

    Dateien

    USB-Station.JPG 27,52 kB – 0 Downloads
  • Programm Sicherheit/ Programm schließen verhindern

    • MadCatz
    • 8. September 2014 um 09:51

    Ich danke euch allen für eine Antworten :)

    Ihr habt mir sehr mit euren Ideen/Vorschlägen und Lösungen geholfen :)

  • Programm Sicherheit/ Programm schließen verhindern

    • MadCatz
    • 5. September 2014 um 15:34

    Das einzige Problem, was jetzt noch besteht, ist das der Taskmanager sich öffnen lässt, wenn die InputBox erscheint, obwohl, ich das in der While 1 die ganze zeit überprüfe

  • Programm Sicherheit/ Programm schließen verhindern

    • MadCatz
    • 5. September 2014 um 15:18

    dass ist ne sehr sehr gute Idee :D

    Ich danke dir :)

  • Programm Sicherheit/ Programm schließen verhindern

    • MadCatz
    • 5. September 2014 um 14:36

    Ja ich will ja nicht zutief ins OS eingreifen, nicht das ich mir das dann zerlege und ich alles lahm lege.

  • Programm Sicherheit/ Programm schließen verhindern

    • MadCatz
    • 5. September 2014 um 14:35

    Hab noch einen Plan B, der mir gerade in den Sinn gekommen ist, falls dass zu tief ins System eingreifen sollte :)

    Ich arbeite mit einer Datenbank, auf die dass Programm zugreift, ich kann also bei falscher Eingabe hingehen und diese Einträge blocken, damit wäre es nicht mehr möglich, weiter mit mit dem Tool zuarbeiten, dass sollte meinen Ansprüchen auch genügen ;)

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™