Beiträge von HassanMullah

    Hallo Bugfix,


    ich war mal so frei die Funktion von dir zu nutzen, allerdings bin ich mir jetzt nicht sicher ob ich die falsch verstehe, oder falsch anwende. Anbei mal das kleine Stückchen Code:


    In Zeile 21 (MsgBox) bekomme ich als Ergebnis entweder eine 0 oder eine 1. Ich dachte ich erhalte hier eine formatierte Telefonnummer.
    Was muss ich den genau machen, damit ich die Nummer bekomme ?


    Gruß Hassan


    Nachtrag 17:03 Uhr: Ich habe es verstanden - mein Fehler!!!

    Hallo GtaSpider,


    ich werde mich jetzt mal zu den "fauleren" bzw. zu den "unwissenderen" zählen. Ich habe jetzt SciTE auf die Version hier vom Portal upgedated. Laut "About SciTE" ist das die Version 3.4.1 vom 30. März 2014 - 21:57:28). Ist die aktuell genug. Dein "+" macht mich unsicher. Es wird zwar eine Datei mit der Syntax Scriptname_stripped.au3 erzeugt, die aber genau identisch mit meiner Scriptname.au3 ist.


    Da ich aber #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <MSSQL.au3>
    #include <Array.au3>
    #include <Constants.au3>
    #include <GUIConstantsEx.au3>
    #include <Misc.au3>
    im Script habe, muss die eigentlich viel länger sein.


    Was mache ich falsch ?

    Hallo Leute,


    ich steht gerade so dermaßen auf dem Schlauch (Kopfweh) und brauche einen kleinen Stupser.


    Textdateibeispiel:


    vorname1|nachname1
    vorname2|nachname2
    vorname3|nachname3


    Ich sollte das File auslesen und in ein Array schreiben, habe aber sowas von einer Matchbirne. Bitte um kleinen Beispielcode.


    Danke


    Lösung gefunden:



    Local $aFile = ""
    _FileReadToArray(@TempDir & "\XFDL_User.log", $aFile)
    Local $a2D[$aFile[0]][2]
    For $i = 1 To $aFile[0]
    $aSplit = StringSplit($aFile[$i], "|")
    $a2D[$i - 1][0] = $aSplit[1]
    $a2D[$i - 1][1] = $aSplit[2]
    Next
    _ArrayDisplay($a2D)

    Hallo,


    hier mal der Code

    $sUserLog = FileOpen(@TempDir & "\XFDL_User.log", 0); öffne XFDL User Log - nur lesend
    $aXFDL_USER = FileReadToArray($sUserLog); Lese XFDL User Log ins Array
    $aUniqXFDLUser = _ArrayUnique($aXFDL_USER, Default, Default, 1)
    _ArrayDisplay($aUniqXFDLUser, "Eindeutig"); wird angezeigt und ist OK
    $aSortXFDLUser = _ArraySort($aUniqXFDLUser)
    _ArrayDisplay($aSortXFDLUser, "Sortiert"); wird nicht mehr angezeigt - WARUM ?

    Ich möchte gerne eine Liste in ein Array einlesen, auf Eindeutigkeit prüfen (geht noch) und dann sortieren (geht nicht mehr).
    Was habe ich vergessen ?

    Danke für die Tips :-)))))))))


    Hier das neue Script:



    Global $sfile


    $sfile = @ScriptDir & "\textdatei.log"; Ist das ca. 300 MB Logfile
    Local $LogFile = FileOpen(@ScriptDir & "\lalala.txt", 2)


    Example()


    Func Example()
    FileWriteLine($LogFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & ": Verzeichnis " & @ScriptDir & "\lalala.txt erstellt" & @CRLF & @CRLF)
    ; Read the current script file into an array using the filepath.
    Local $iXFDLPosition
    Local $aArray = FileReadToArray($sfile)
    If @error Then
    FileWriteLine($LogFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & ": Fehler beim Lesen von" & $sfile & "@error: " & @error & @CRLF & @CRLF)
    Else


    For $i = 0 To UBound($aArray) - 1 ; Loop through the array.
    $iXFDLPosition = StringInStr($aArray[$i], "XFDL:", 1)
    If $iXFDLPosition <> 0 Then
    FileWriteLine($LogFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & ": Zeile " & $i & ": " & ($aArray[$i]) & @CRLF)
    EndIf
    Next
    EndIf
    FileWriteLine($LogFile, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & ": Verzeichnis " & @ScriptDir & "\TextLog.txt beendet" & @CRLF & @CRLF)
    FileClose($LogFile)
    ConsoleWrite("Fertig")
    EndFunc ;==>Example


    Ergebnis: Von ca. 12 Minuten auf 4 Sekunden runtergebrochen.


    Vielen Vielen Vielen DANK !!!!!!

    Hallo,


    ich habe eine Logdatei die ca. 300 MB groß ist. Wenn ich diese via Notepad++ öffne dauert das ca. 3 Sekunden. Wenn ich dann via Strg+F suche und dort die Option "Alle in aktiver Datei suchen" anklicke, habe ich nach ca. 7 Sekunden mein Ergebnis, welches ich brauche.


    Ich will das natürlich nicht mit Notepad++ lösen, sondern mit einem Autoitscript, welches ich mal hier kurz zusammen geklopft habe



    Global $sfile


    $sfile = @ScriptDir & "\textdatei.log"; Ist das ca. 300 MB Logfile


    Example()


    Func Example()
    ; Read the current script file into an array using the filepath.
    Local $aArray = FileReadToArray($sfile)
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "", "There was an error reading the file. @error: " & @error) ; An error occurred reading the current script file.
    Else
    For $i = 0 To UBound($aArray) - 1 ; Loop through the array.
    Local $iXFDLPosition = StringInStr($aArray[$i], "XFDL:", 0)
    If $iXFDLPosition = 0 Then
    ConsoleWrite("Zeile " & $i & ": Kein XFDL in Zeile enthalten" & @CRLF)
    Else
    ConsoleWrite("Zeile " & $i & ": " & ($aArray[$i]) & @CRLF)
    EndIf
    Next
    EndIf
    EndFunc ;==>Example


    Mein Problem: Bis meine Ergebnisliste fertig ist, dauert das ca. 12 Minuten.


    Wie kann ich sowas schneller hinbekommen ?

    Hallo,


    wie trimme ich folgende Strings ?


    Vorname Nachname
    Vorname Nachname
    Vorname Nachname


    Ergebnis soll sein, das 1 Leerzeichen zwischen Vor und Nachnamen bleibt, aber beim Vorkommen von 2 und mehr Leerzeichnen sollen dies gelöscht werden, sodass nur noch 1 Leerzeichen übrig bleibt


    Danke

    Habe es mal so abgeändert, aber immer noch kein Ergebnis:
    #include <Excel.au3>
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    #include <StringConstants.au3>


    Global $aFolder = _GetFilesFolder_Rekursiv('.', 'xlsx', 0, 0); Suche XLSX Dateien ab dem Root Verzeichnis wo diese Datei hier liegt
    ;~ _ArrayDisplay($aFolder, "Gefundene XLSX Dateien")
    ;~ Local $Counter = 1; Setze Counter auf 1
    For $i = 1 To UBound($aFolder) - 1
    Local $oExcel, $oWorkbook, $aWorkbook
    $oExcel = _Excel_Open() ;Neues leeres Excel Objekt erstellen
    $oWorkbook = _Excel_BookOpen($oExcel, $aFolder[$i], False, True); gefundene Exceldatei öffnen (beschreibbar und sichtbar)
    $aWorkbook = _Excel_RangeRead($oWorkbook, 1, Default, 3, True); Lese den kompletten Range ins Array (erste Sheet, Alles, angezeigter Text, verwende _ArrayTranspose)
    ConsoleWrite("Return value = " & $aWorkbook & @CRLF & "Value of @error is: " & @error & @CRLF & "Value of @extended is: " & @extended & @CRLF & @CRLF); Display the return value, @error and @extended value.
    _ArrayDisplay($aWorkbook, "Ergebnis aus Excel"); Zeige Inhalt vom Array
    _Excel_Close($oExcel, False, True); Schließe Excelobjekt (nichts speichern, Schließung erzwingen)
    ;~ $Counter = $Counter + 1; Counter um 1 hochzählen
    Next
    Console:
    >"C:\MyApps\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /beta /ErrorStdOut /in "Z:\_TEMP\XFDL User\Test\FindEmail.au3" /UserParams
    +>12:18:01 Starting AutoIt3Wrapper v.2.1.4.5 SciTE v.3.3.7.0 Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0409)
    >Running AU3Check (3.3.11.5) from:C:\MyApps\AutoIt3\Beta input:Z:\_TEMP\XFDL User\Test\FindEmail.au3
    +>12:18:01 AU3Check ended.rc:0
    >Running:(3.3.11.5):C:\MyApps\AutoIt3\Beta\autoit3.exe "Z:\_TEMP\XFDL User\Test\FindEmail.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    Return value =
    Value of @error is: 0
    Value of @extended is: 0


    +>12:18:02 AutoIt3.exe ended.rc:0
    +>12:18:02 AutoIt3Wrapper Finished..
    >Exit code: 0 Time: 1.732

    Hallo water,


    ich brauche mal dringend Deine Hilfe. Hier mal mein neuer Code. Ich lasse das mit ALT+F5 laufen, damit die Beta rangezogen wird



    #include <Excel.au3>
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    #include <StringConstants.au3>


    Global $aFolder = _GetFilesFolder_Rekursiv('.', 'xlsx', 0, 0); Suche XLSX Dateien ab dem Root Verzeichnis wo diese Datei hier liegt
    ;~ _ArrayDisplay($aFolder, "Gefundene XLSX Dateien")
    ;~ Local $Counter = 1; Setze Counter auf 1
    For $i = 1 To UBound($aFolder) - 1
    Local $oExcel, $oWorkbook, $aWorkbook
    $oExcel = _Excel_Open() ;Neues leeres Excel Objekt erstellen
    $oWorkbook = _Excel_BookOpen($oExcel, $aFolder[$i], False, True); gefundene Exceldatei öffnen (beschreibbar und sichtbar)
    $aWorkbook = _Excel_RangeRead($oWorkbook, 1, Default, 3, True); Lese den kompletten Range ins Array (erste Sheet, Alles, angezeigter Text, verwende _ArrayTranspose)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $aWorkbook = ' & $aWorkbook & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    _ArrayDisplay($aWorkbook, "Ergebnis aus Excel"); Zeige Inhalt vom Array
    _Excel_Close($oExcel, False, True); Schließe Excelobjekt (nichts speichern, Schließung erzwingen)
    ;~ $Counter = $Counter + 1; Counter um 1 hochzählen
    Next

    und hier die Consolenausgabe:

    >"C:\MyApps\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /beta /ErrorStdOut /in "Z:\_TEMP\XFDL User\Test\FindEmail.au3" /UserParams
    +>11:57:12 Starting AutoIt3Wrapper v.2.1.4.5 SciTE v.3.3.7.0 Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0409)
    >Running AU3Check (3.3.11.5) from:C:\MyApps\AutoIt3\Beta input:Z:\_TEMP\XFDL User\Test\FindEmail.au3
    +>11:57:12 AU3Check ended.rc:0
    >Running:(3.3.11.5):C:\MyApps\AutoIt3\Beta\autoit3.exe "Z:\_TEMP\XFDL User\Test\FindEmail.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    @@ Debug(14) : $aWorkbook =
    >Error code: 0
    +>11:57:13 AutoIt3.exe ended.rc:0
    +>11:57:13 AutoIt3Wrapper Finished..
    >Exit code: 0 Time: 1.821

    Mir ist klar, das ich in Zeile 14 das Array "$aWorkbook" so nicht ausgeben kann (ich weiß gerade nicht wieviel eckige Klammern ich brauche und was ich da eintragen muss), aber im Anschluss wir via "_ArrayDisplay" auch gar nichts geöffnet und das Excel schließt sich dann.


    Ich bräuchte mal ein wenig Hilfe, wie ich den Fehler besser abfangen kann (vielleicht ein wenig Codeschnipsel) - Danke

    Hallo water,


    danke für den Tip, werde ich mal versuchen.


    BTW: Bisher hatte ich mit den Beta's nicht gearbeitet, von daher eine Frage zum Include der Excel.au3. Wenn ich mein Script mit der Beta compiliere, nimmt er dann automatisch auch die Excel.au3 aus dem Betaverzeichnis, oder muss ich die speziell angeben ? Wenn ja, wie ?

    Ich habe das ganze jetzt mal auf ein "_ExcelReadCell" umgeschrieben. Bei der letzten "gute" Zelle bekomme ich einen Error Code 0 noch mitgeteilt. Bei der ersten "schlechten" Zelle fliegt Autoit komplett raus, d.h. ich bekomme keinen Error Code mitgeteilt und kann somit auch nicht gegen steuern.


    Hier meine Consolenausgabe:

    >Error code: 0
    Durchgang 58 :a.b@def.com
    !>16:29:49 AutoIt3.exe ended.rc:-1073741819
    +>16:29:49 AutoIt3Wrapper Finished..
    >Exit code: -1073741819 Time: 5.928


    Wie geht man in so einem Fall vor ?



    For $j = 1 To 100
    Local $sExcel = _ExcelReadCell($oExcel, $j + 1, 4)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Local $sExcel = _ExcelReadCell($oExcel, $j + 1, 4) = ' & _ExcelReadCell($oExcel, $j + 1, 4) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    If @error = 0 Then
    ConsoleWrite("Durchgang " & $j & " :" & $sExcel & @CRLF)
    Else
    MsgBox(4096, "Fehler", "Im Durchgang " & $j & " kam es zu einem Fehler!")
    EndIf
    Next


    Eigentlich dachte ich, es würde eine Messagebox erscheinen, aber zu dem Zeitpunkt ist Autoit schon "finished"

    Hallo,


    Ich muss einige Exceldateien in ein Array schreiben lassen. Die Exceldateien liegen mir "unbearbeitet" vor, d.h. ich muss auslesen, was ich bekomme. Hierbei gibt es einige Zellen, die sich auf Grund einer Formel befüllen. Mir ist dabei aufgefallen, das es Zellen gibt, die Fehlerhaft sind, d.h. in der Zelle steht nur #NV und links oben das kleine Dreieck mit "Fehler: Der Wert ist nicht verfügbar".


    Wenn ich diese Felder komplett lösche und das Excel nochmals speichere, dann wird alles sauber ins Array geschrieben. Da ich diesen händischen Schritt aber nicht machen kann, wollte ich mal fragen, wie ich hier mit einer Fehlerbehandlung umgehen kann. Als erstes habe ich mal folgendes versucht, aber das haut noch gar nicht hin:


    Global $aFolder = _GetFilesFolder_Rekursiv('.', 'xlsx', 0, 0); Suche XLSX Dateien ab dem Root Verzeichnis wo diese Datei hier liegt
    ;~ _ArrayDisplay($aFolder, "Gefundene XLSX Dateien")
    Local $Counter = 1; Setze Counter auf 1
    For $i = 1 To UBound($aFolder) - 1
    ;~ ConsoleWrite("Counter: " & $Counter & " " & $aFolder[$i] & @CRLF)
    Local $oExcel = _ExcelBookOpen($aFolder[$i]) ;Create new book, make it visible
    ;~ Local $iNumberOfWorksheets = $oExcel.Worksheets.Count
    ;~ MsgBox($MB_SYSTEMMODAL, "Count", "Number of sheets found = " & $oExcel.Worksheets.Count)
    _ExcelSheetActivate($oExcel, 1)
    Local $aArray = _ExcelReadSheetToArray($oExcel) ;Using Default Parameters
    If @error = 0 Then
    MsgBox(0, "Kein Fehler", "alles OK")
    EndIf
    If @error = 1 Then
    MsgBox(4096, "Fehler", "Specified object does not exist")
    EndIf
    If @error = 2 Then
    MsgBox(4096, "Fehler", "Start parameter out of range")
    EndIf
    If @error = 3 Then
    MsgBox(4096, "Fehler", "Count parameter out of range")
    EndIf
    _ArrayDisplay($aArray, "Excel ausgelesen")
    _ExcelBookClose($oExcel) ; And finally we close out
    $Counter = $Counter + 1
    Next


    Es sind *.XLSX Dateien aus Office 2013 mit AutoIt Version: 3.3.10.2.

    Hallo,


    ich bekomme folgende Meldung beim Compilieren

    Code
    >16:39:50 Performing the Program Resource Update steps:
    ...>Updating Program Version information.
    ...>Setting Program ExecutionLevel Manifest information to None
    ...>Setting Program Compatibility Manifest information to Windows8.1
    UpdateResources other: $result[0] = 0 - LastError:1359:Interner Fehler.
    ...>Updating Program Manifest information.
    !>16:39:50 Error: EndUpdateResource: Returncode = 0 - LastError:1359:Interner Fehler.rc:2
    !>16:39:50 Error: Program Resource updating Failed. The output program will not contain the Resource updates!rc:2


    Leider kann ich damit mal so gar nichts anfangen. Das kleine Script läuft trotzdem (noch).
    Wie geht man bei sowas an die Fehlersuche ran ?

    Hallo zusammen,


    habe seit ein paar Tagen einen neuen Windows 8.1 Rechner und habe jetzt Autoit wieder installiert. Bisher hatte ich noch die Version 3.3.8.1 im Einsatz.
    Jetzt fiel mir auf, das ganz viele SciTE Funktionen gar nicht mehr vorhanden sind (z.B. Tidy). Ebenso gab es früher beim Compilieren noch ein vorgeschaltete Maske, wo ich z.B. ein Icon definieren konnte usw. Die gibt es auch nicht mehr, d.h. es wird sofort compiliert. Somit kann ich auch nicht aussuchen ob x32 oder x64. Dann fehlt mir auf dem Desktop auch die Option ein neues Autoit Script zu erstellen (recht Maus im Kontextmenü). Lief hier was bei der Installation schief ? Um jeden Tip dankbar.


    Gruß Hassan