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

Beiträge von TheLuBu

  • Werte aus Excel Zelle auslesen

    • TheLuBu
    • 21. Juli 2011 um 08:28

    Ich geh jetzt einfach mal davon aus das die Werte in der Spalte A stehen

    Funktioniert nur wenn die Zelle so aussieht

    "05555 Musterhausen"

    Ansonsten gib mal ein paar mehr Details ;)

    [autoit]

    $Cell = _Excelreadcell($oExcel, 1, 1)
    $PLZ = Stringleft($Cell, 5)
    _ExcelWriteCell($oExcel,$PLZ, 1,2)
    $Ort = Stringtrimleft($Cell, 6)
    _ExcelWritecell($oExcel, $Ort, 1, 1)

    [/autoit]
  • SQLITE UPDATE Befehl

    • TheLuBu
    • 14. Juli 2011 um 14:46

    Ich weiß nicht, hier der richtige Platz ist, aber ich hab nicht direkt ein Problem mit AutoIt sondern mit SQLite.

    Ich habe 3 Tabellen in meiner Datenbank,
    hier erstmal die Query

    [autoit]

    "UPDATE tblErgebnis SET ColumnA= ColumnA + 1 WHERE ColumnB IN (SELECT ColumnB FROM tblData WHERE ColumnC IN (SELECT ColumnC from tblGehalt));"

    [/autoit]


    Also, die Query soll ColumnA um 1 erhöhen, wenn ColumnB in der Unterabfrage vorkommt.
    Wenn die Bedingungen zutreffen, erhöht sich auch der Wert in der Datenbank um 1.
    Wenn aber mehr als einmal die Bedingung zutrifft, soll sich auch der Wert dementsprechend erhöhen, und das passiert bei mir leider nicht.

    Ich weiß, das es Count() gibt, aber ich weiß nicht, wie ich das in diese Abfrage einbaue.
    Würde mich über Hilfe freuen ;)

  • FileReadLine gibt 1 zurück (Sets @error to 1 if file not opened in read mode or other error WTF???)

    • TheLuBu
    • 13. Juli 2011 um 14:56
    Spoiler anzeigen
    [autoit]

    $ausgabepath = "KWI_AD_LEHRER.CSV"
    $sourcepath = "KWI_AD_LEHRER(source).CSV"
    $newsourcepath = "new.csv"
    $pwdlistpath = "Neuer Ordner/ADConnector_PASSWORDS_23062011_142408l.csv"
    If FileExists($newsourcepath) Then
    FileDelete($newsourcepath)
    EndIf
    Unix2Dos($sourcepath, $newsourcepath)
    $Sourcelistarray = _CSV2Array($newsourcepath)
    $PWlistarray = _CSV2Array($pwdlistpath)
    For $i = 0 To UBound($Sourcelistarray) - 1
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    If Stringleft($Sourcelistarray[$i][2], 1) = 0 Then $Sourcelistarray[$i][2] = StringTrimLeft($Sourcelistarray[$i][2], 1)
    Next
    For $i = 0 To UBound($Sourcelistarray) - 1
    For $k = 0 To UBound($PWlistarray) - 1
    If $Sourcelistarray[$i][2] = $PWlistarray[$k][1] Then $Sourcelistarray[$i][13] = $PWlistarray[$k][7]
    Next
    Next
    $hFile = FileOpen($ausgabepath, 2)
    For $i = 0 To UBound($Sourcelistarray) - 1
    $text = ""
    For $k = 0 To UBound($Sourcelistarray, 2) - 1
    $text &= $Sourcelistarray[$i][$k] & ";"
    Next
    $text = StringTrimRight($text, 1)
    FileWriteLine($hFile, $text)
    Next
    FileClose($hFile)

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

    Func Unix2Dos(Const $in, Const $outpath)
    $h_File = FileOpen($outpath, 2)
    FileWrite($h_File, StringReplace(FileRead($in), Chr(32), ''))
    FileClose($h_File)
    EndFunc
    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, "|", " "]

    [/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
    ; 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], 7)
    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

    [/autoit]


    Hier der neue, "bessere" Code ;)

    Die Funktion CSV2Array ist nicht von mir, hab aber leider nirgends das Copywright gefunden

  • StdoutRead auslesen

    • TheLuBu
    • 13. Juli 2011 um 14:10

    Also gut, mal als Frage, wie groß sind die Dateien, die du kopieren willst?
    Robocopy arbeitet so schnell, das es nur wirklich mit Dateien größer als 50MB lohnt, einen Progress festzuhalten.
    Wenn du da jetzt nur ein paar Txt Dateien drin hast, dann zeigt er dir nix an, weil er schon fertig ist, bis die Funktion von Autoit greift ;)

    Desweiteren hast du eine Endlosschleife, mit Continueloop setzt du die Schleife fort, da müsste Exitloop stehen

  • FileReadLine gibt 1 zurück (Sets @error to 1 if file not opened in read mode or other error WTF???)

    • TheLuBu
    • 13. Juli 2011 um 12:57

    Setz mal in deine Funktion bei Zeile 107

    [autoit]

    If @error Then
    FileClose($output)
    Exitloop
    EndIf

    [/autoit]
  • Function klappt nicht so!

    • TheLuBu
    • 13. Juli 2011 um 12:40
    Spoiler anzeigen
    [autoit]

    $test = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools")
    $test1 = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr")
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    StartGUI()

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

    Func StartGUI()
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 435, 192, 124)
    $Button1 = GUICtrlCreateButton("Button1", 40, 56, 161, 65)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    Switch $test
    Case '0'
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    Case '1'
    $null = '0'
    _RegAktiv()
    _TaskAktiv()
    Case ''
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    EndSwitch
    Switch $test1
    Case '0'
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    Case '1'
    $null = '0'
    _RegAktiv()
    _TaskAktiv()
    Case ''
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    EndSwitch
    EndSwitch
    WEnd
    EndFunc

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

    ;---Aktive--oder Deaktive-----------------------------------------------------------------------------------------------------------------

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

    Func _RegAktiv()
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools")
    If @error <> 1 Then
    RegWrite ("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools","REG_DWORD",$null)
    EndIf
    EndFunc

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

    Func _TaskAktiv()
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr")
    If @error <> 1 Then
    RegWrite ("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr","REG_DWORD",$null)
    EndIf
    EndFunc

    [/autoit]

    So mehr kann ich nicht helfen, deine Ausdrucksweise ist sehr schwer verständlich ;)

  • StdoutRead auslesen

    • TheLuBu
    • 13. Juli 2011 um 11:24

    Füg mal das hier

    [autoit]

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $currentRead = ' & $currentRead & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]


    Bei Zeile 22 ein, den Wert wollte ich wissen ;)

  • StdoutRead auslesen

    • TheLuBu
    • 13. Juli 2011 um 10:16

    was gibt den

    [autoit]

    $currentRead

    [/autoit]

    zurück, debugge das mal

  • FileReadLine gibt 1 zurück (Sets @error to 1 if file not opened in read mode or other error WTF???)

    • TheLuBu
    • 13. Juli 2011 um 10:05

    dann schau dir mal den Wert $linie an,
    ich glaube der ist zu groß.
    Wenn ich das richtig lese, willst du ja die letzte Zeile auslesen, da wo der Fehler passiert.
    Die letzte Zeile wird aber mit dem parameter -1 aufgerufen

    -EDIT-
    Entferne die CSV Datei auch wieder aus deinem Post, ich sehe da personenbezogene Daten, die sollten nicht unbedingt öffentlich sein ;)

    -EDIT2-
    setz auch bitte

    [autoit]

    $listline = $listline + 1

    [/autoit]

    an den Anfang der Schleife und gib der Variablen den Wert 0, sonst überspringt der die letzte Zeile

  • FileReadLine gibt 1 zurück (Sets @error to 1 if file not opened in read mode or other error WTF???)

    • TheLuBu
    • 13. Juli 2011 um 09:45

    Debugge mal mit

    [autoit]

    $newsource = FileOpen("new.csv", 0)
    $debug = FileRead($newsource)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $debug = ' & $debug & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]
  • CTI Funktionen / Anruf bei Erhalt einer Email mit Bandansage

    • TheLuBu
    • 13. Juli 2011 um 09:31

    ich hab mal im englischen Forum gesucht, vielleicht kannst du ja damit was anfangen
    http://www.autoitscript.com/forum/topic/12…er-and-dial-it/

  • Function klappt nicht so!

    • TheLuBu
    • 13. Juli 2011 um 09:25
    [autoit]

    Func Regstart()
    $test = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools")
    $test = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr")

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

    Switch $test
    Case '0'
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    Case '1'
    $null = '0'
    _RegAktiv()
    _TaskAktiv()
    Case ''
    $null = '1'
    _RegAktiv()
    _TaskAktiv()
    EndSwitch
    EndFunc
    ;---Aktive--oder Deaktive-----------------------------------------------------------------------------------------------------------------

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

    Func _RegAktiv()
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools")
    If @error <> 1 Then
    RegWrite ("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableRegistryTools","REG_DWORD",$null)
    EndIf
    EndFunc

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

    Func _TaskAktiv()
    RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr")
    If @error <> 1 Then
    RegWrite ("HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System", "DisableTaskMgr","REG_DWORD",$null)
    EndIf
    EndFunc

    [/autoit]
  • FileReadLine gibt 1 zurück (Sets @error to 1 if file not opened in read mode or other error WTF???)

    • TheLuBu
    • 13. Juli 2011 um 09:10

    Zeile 20: $newsource = FileOpen("new.csv", 0)

    Du öffnest die Datei new.csv, aber wo liegt die Datei? Gib mal Pfade mit an, also z.B @ScriptDir oder C:\

  • 1 Taste 2 Funktionen???

    • TheLuBu
    • 11. Juli 2011 um 09:05

    Bau dir eine extra Variable ein

    [autoit]


    Global $druck = 0
    Tastendruck()
    If $druck = 0 Then
    Strg.+Shift+4
    $druck = 1
    Else
    Strg.+Shift+5
    $druck = 0
    EndIf

    [/autoit]
  • Array in SQLite DB schreiben

    • TheLuBu
    • 11. Juli 2011 um 08:54
    [autoit]

    $Timer nur Insert: 219512
    $Timer mit Transaction 402

    [/autoit]

    Viel besser ;)
    Danke an alle

  • Array in SQLite DB schreiben

    • TheLuBu
    • 9. Juli 2011 um 14:08

    Danke an Großvater und autoBert, das mit Begin Transaction;...;Commit ist genau das richtige ;)
    Ich poste Montag mal die Differenz zur Laufzeit ;)

  • Array in SQLite DB schreiben

    • TheLuBu
    • 8. Juli 2011 um 17:00

    Ich glaube du hast mich falsch verstanden :)
    Ich will nicht das Auslesen beschleunigen sondern das einspielen ^^

  • Array in SQLite DB schreiben

    • TheLuBu
    • 8. Juli 2011 um 15:37

    Hallöchen ihr lieben,
    Ich sitze grade an einem Projekt und bräuchte etwas Hilfe mit SQLite ;)
    Ich habe mehrere Arrays (mehrdimensional), welche in eine SQLite DB geschrieben werden sollen. Die Arrays sind sehr groß ( zwischen 150.000 und 600.000 Zeilen).
    Diese Arrays müssen durchsucht werden. Ich hatte es erst mit _Array2dsearch von BugFix gemacht, aber die Funktion braucht pro Suchgang ca. 150ms. Mit Einer Datenbankabfrage dauert es nur 4ms.
    Bis jetzt füge ich die Daten so ein:

    [autoit]

    For $i = 1 To UBound($Array) - 1
    _SQLite_Exec(-1, "INSERT INTO tblStornos(Spalte_ALPHA,Spalte_BETA,Spalte_GAMMA) VALUES ('" & $Array[$i][0] & "','" & $Array[$i][1] & "','" & $Array[$i][2] & "');")
    Next

    [/autoit]

    Aber das dauert auch seine zeit ^^
    Gibt es eine Möglichkeit, dies zu beschleunigen? Wäre eine mehrzeilige Query schneller? Oder gib t es noch andere Funktionen zu SQLite, die nicht in AutoIT integriert sind?
    Vielen Dank für eure Hilfe ;)

  • Windows ereignisnazeige Icons

    • TheLuBu
    • 7. Juli 2011 um 15:31

    such mal im Windows Ordner nach *.ico, da findest du einige Icons.
    Ansonsten musst du denk ich mal nen ResHacker nutzen, um an die Icons in den dll Dateien zu kommen

  • Array[3] je nachdem leer füllen

    • TheLuBu
    • 1. Juli 2011 um 12:13

    machst du doch schon ^^

    [autoit]

    If $paragroesse < 3 Then
    If Not StringIsDigit($array[$spalte]) Then ;wenn der String keine Zahl ist
    MsgBox( 16, "Fehler", "Datei ist korrupt!")
    Exit
    EndIf
    If Not StringLen($array[$spalte]) = 6 Then ;wenn der String nicht 6 Zeichen hat
    MsgBox( 16, "Fehler", "Datei ist korrupt!")
    Exit
    EndIf
    Else

    [/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™