_FileWriteFromArray in E-Mail Body

  • Hallo Leutz,

    ich habe mal wieder eine kleine Frage.
    Hier mein Ansatz, momentan nicht als Func

    Spoiler anzeigen
    [autoit]

    #include <date.au3>
    #include <misc.au3>
    #include <inet.au3>
    #include <file.au3>
    #include <array.au3>
    Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
    Dim $aRecords
    $Txt = "c:\Datensicherung\Timer.prob"
    _FileReadToArray($Txt, $aRecords)
    _ArrayReverse($aRecords, 1)
    $Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
    $PID = ProcessExists("Outlook.exe")
    $Addresse = "T:\Datensicherung"
    $Ti = @HOUR & ":" & @MIN & ":" & @SEC
    $Address= ("behlke@adtg.de")
    $Subject= ("Tägliche Datensicherung vom " & _NowDate())
    $Body = (" Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
    " Die Scripte liefen " & _FileWriteFromArray("", $aRecords, 1) & @LF & @LF & _
    " Sie liegt im Pfad. " & "" & $Addresse & "" & @LF & @LF & _
    " Freundliche Grüße" & @LF & @LF & " Administrator")
    If FileExists("T:\Datensicherung\") Then
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    Else
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    EndIf

    [/autoit]

    Was will ich erreichen. Meine Datensicherung läuft Nachts mit mehreren unterschritten. Über TimerDiff/TimerDiff hole ich mir die Laufzeit, die ich in eine Datei schriebe. Per Mail möchte ich nun die Laufzeit mitteilen. Dazu lese ich es in ein Array ein. Im Body soll nun mit _FileWriteFromArray() dieses ausgegebn werden. Es wird hier nur 0. Wo liegt mein Fehler?
    Vieleicht kann man auch einen Anhang machen?

    ThomasB ;)

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Hi,
    irgendwo sollte doch bestimmt der Variable $aRecords noch ein Wert zugewiesen werden.
    Wieso verwendest du _FileWriteFromArray("", $aRecords, 1)? Der ReturnWert ist da "0" da es keine Datei "" gibt. Ich denke da wolltest du aRecords einlesen, oder?

    Gruss
    eddy_erpel

  • hi,

    welchen wert soll ich zuweisen, es stehen vier zeilen drin die in den Body sollen.

    thomasb

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • So?

    Spoiler anzeigen
    [autoit]

    #include <date.au3>
    #include <misc.au3>
    #include <inet.au3>
    #include <file.au3>
    #include <array.au3>
    Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
    Dim $aRecords
    $Txt = "c:\Datensicherung\Timer.prob"
    _FileReadToArray($Txt, $aRecords)
    _ArrayReverse($aRecords, 1)
    $Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
    $PID = ProcessExists("Outlook.exe")
    $Addresse = "T:\Datensicherung"
    $Ti = @HOUR & ":" & @MIN & ":" & @SEC
    $Address= ("behlke@adtg.de")
    $Subject= ("Tägliche Datensicherung vom " & _NowDate())
    $Body = (" Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
    " Die Scripte liefen " & $aRecords[1] & @LF & @LF & _
    " Sie liegt im Pfad. " & "" & $Addresse & "" & @LF & @LF & _
    " Freundliche Grüße" & @LF & @LF & " Administrator")
    If FileExists("T:\Datensicherung\") Then
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    Else
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    EndIf

    [/autoit]


    Dann Fehler

    C:\Programme\AutoIt3\Include\Test.au3 (17) : ==> Subscript used with non-Array variable.:
    $Body = (" Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & " Die Scripte liefen " & $aRecords[1] & @LF & @LF & " Sie liegt im Pfad. " & "" & $Addresse & "" & @LF & @LF & " Freundliche Grüße" & @LF & @LF & " Administrator")
    $Body = (" Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & " Die Scripte liefen " & $aRecords^ ERROR

    ThomasB

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Hi,
    der Fehler kommt, da das Array keine Werte enthält; Also entweder existiert am angegebenen Pfad die Datei Timer.prob nicht, oder diese enthält keine Daten.
    Wenn die Datei ("c:\Datensicherung\Timer.prob") existiert und nicht leer ist, sollte es damit gehen:

    Spoiler anzeigen
    [autoit]

    #include <date.au3>
    #include <misc.au3>
    #include <inet.au3>
    #include <file.au3>
    #include <array.au3>
    Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
    Dim $aRecords,$zeiten
    $Txt = "c:\Datensicherung\Timer.prob"
    _FileReadToArray($Txt, $aRecords)
    _ArrayReverse($aRecords, 1)
    $Outlook2003 = @ProgramFilesDir & "\Microsoft Office\Office11\Outlook.exe"
    $PID = ProcessExists("Outlook.exe")
    $Addresse = "T:\Datensicherung"
    $Ti = @HOUR & ":" & @MIN & ":" & @SEC
    $Address= ("behlke@adtg.de")
    $Subject= ("Tägliche Datensicherung vom " & _NowDate())
    for $i=1 to $aRecords[0]
    $zeiten &= $aRecords[$i] &@LF & @LF
    Next
    $Body = (" Die Tägliche Datensicherung wurde um " & $Ti & " erfolgreich erstellt." & @LF & @LF & _
    " Die Scripte liefen " & $zeiten & @LF & @LF & _
    " Sie liegt im Pfad. " & "" & $Addresse & "" & @LF & @LF & _
    " Freundliche Grüße" & @LF & @LF & " Administrator")
    If FileExists("T:\Datensicherung\") Then
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    Else
    If $PID Then
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Else
    Run($Outlook2003)
    WinWaitActive("Posteingang - Microsoft Outlook")
    _INetMail($address, $subject, $Body)
    Sleep(5000)
    Send("!s")
    Sleep(1500)
    Send("!{F4}")
    EndIf
    EndIf

    [/autoit]

    Gruss
    eddy_erpel

  • hi,

    ja eddy, es war zu diesem Zeitpunkt keine Datei vorhanden. Das hatte ich dann behoben dann gings. Allerdings mit $aRecords[1].. Bei dir ist eine Schleife drin, die ich jetzt erstmal teste. Ansonsten läuft es.

    :keks: :keks: :keks:

    Thomasb

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *