Ini-Daten nutzen

  • Hallo Ihr,
    Ich bin grad an einem Rundschreib-Tool dran.
    Mein bisheriger Code:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $username = InputBox("Login", "Username:")
    $password = InputBox("Login", "Passwod:")
    $s_SmtpServer = "zensiert"

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

    #Region ### START Koda GUI section ### Form=
    $title = GUICreate("Rundmail-Tool", 418, 401, 192, 125)
    GUISetBkColor(0x000000)
    $betreff_l = GUICtrlCreateLabel("Betreff:", 16, 16, 98, 24)
    GUICtrlSetFont(-1, 14, 800, 0, "Nightclub BTN")
    GUICtrlSetColor(-1, 0xFF0000)
    $betreff = GUICtrlCreateInput("", 128, 16, 273, 21)
    $message_l = GUICtrlCreateLabel("Message", 158, 56, 100, 32)
    GUICtrlSetFont(-1, 14, 800, 0, "Nightclub BTN")
    GUICtrlSetColor(-1, 0xFF0000)
    $message = GUICtrlCreateEdit("", 8, 96, 393, 209)
    GUICtrlSetFont(-1, 10, 800, 0, "@Kozuka Gothic Pro B")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, 0x6D6D6D)
    GUICtrlSetCursor (-1, 3)
    $send = GUICtrlCreateButton("Send", 16, 328, 105, 41, $WS_GROUP)
    $clear = GUICtrlCreateButton("Clear", 152, 328, 113, 41, $WS_GROUP)
    $exit = GUICtrlCreateButton("Exit", 296, 328, 105, 41, $WS_GROUP)
    $copyright = GUICtrlCreateLabel("© by Schrubber", 304, 376, 113, 21)
    GUICtrlSetFont(-1, 8, 800, 0, "Nightclub BTN")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    if(FileExists("mail.ini")) Then
    IniReadSection("mail.ini", "alle")
    Else
    MSGBox(0, "Keine Mailaddys vorhanden", "Es ist ein Fehler mit der Mail.ini aufgetreten.")
    Exit
    EndIf

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

    func quit()
    $msgbox = MSGBox(4, "Programm beenden?", "Wollen sie das Programm wirklich beenden?")
    if($msgbox = 6) Then
    Exit
    EndIf
    if($msgbox = 7) Then
    sleep(500)
    EndIf
    EndFunc

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

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

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

    Case $exit
    quit()

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

    Case $clear
    GUICtrlSetData($betreff, "")
    GUICtrlSetData($message, "")

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

    Case $send
    ;~ $Response = _INetSmtpMailAuth ($s_SmtpServer, $username, $username, $toadress, $username, $password, GUICtrlRead($betreff), GUICtrlRead($message))

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

    EndSwitch
    WEnd

    [/autoit]


    Nun soll in der mail.ini Datei eine Section angelegt werden mit dem namen "alle". Dort werden dann alle Addy´s untereinander geschrieben.


    Meine Frage: Wie muss ich das machen, dass er jede einzelne Zeile dieser Ini-Datei ließt, und diese Addy dann als $toadress nimmt, das aber bei JEDER Mailadresse?
    Habe dazu keine Idee :/


    Danke :)
    Rubberducky

    Einmal editiert, zuletzt von Rubberducky (22. Januar 2010 um 15:03)

  • Hallo,

    schau dir mal IniReadSection an. Hiermit werden alle Eintragungen der Section in ein Array gelesen, dass du dann mit einer Schleife durchlaufen kannst.

    mfg
    Steffen

  • Lol gut :)
    Dann werd ich mich da mal durchlesen.


    Mal ne kleine Frage nebenbei:

    So stehts in der Hilfe, aber wenn ich das genau so nutze kommt bei mir:

    Zitat

    D:\AutoIt3\Include\Rundmail.au3 (71) : ==> Subscript used with non-Array variable.:
    For $i = 1 To $var[0][0]
    For $i = 1 To $var^ ERROR

  • Das liegt daran, dass du es einfach gestartet hast ohne zu überlegen:
    Die Ini Datei ist höchstwahrscheinlich nicht vorhanden (weil Beispiel);
    Ergo: IniReadSection gibt keinen Array zurück, was damit endet, dass das
    Beispielskript mit einer Fehlermeldung den Dienst quittiert.

    Du musst also auch eine vorhandene Ini Datei benutzen, um IniReadSection zu testen.

  • Hallo SEuBo,

    Das liegt daran, dass du es einfach gestartet hast ohne zu überlegen:
    Die Ini Datei ist höchstwahrscheinlich nicht vorhanden (weil Beispiel);
    Ergo: IniReadSection gibt keinen Array zurück, was damit endet, dass das
    Beispielskript mit einer Fehlermeldung den Dienst quittiert.

    Du musst also auch eine vorhandene Ini Datei benutzen, um IniReadSection zu testen.

    Wenn keine INI vorhanden steigt das Beispiel aus der Hilfe aus. Ebenso wenn, die Section fehlt oder keine Key's enthält.

    @Rubberducky: ich kann deinen Fehler nicht nachvollziehen (ausser dass laut Fehlemeldung $var kein Array ist, diese passt aber nicht zum geposteten Skript, denn dass würde keine erzeugen ), poste also dein gesamtes Skript und die dazu gehörige Ini. Du kannst aber folgendes zur Vermeidung des Abruchs tun:

    [autoit]

    $var = IniReadSection("C:\Temp\meineDatei.ini", "sektion2")
    If @error or not isArray($var) Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden, oder fehlerhaft")
    Else
    For $i = 1 To $var[0][0]
    MsgBox(4096, "", "Schlüssel: " & $var[$i][0] & @CRLF & "Wert: " & $var[$i][1])
    Next
    EndIf

    [/autoit]

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (23. Januar 2010 um 00:11)

  • Hallo AutoBert,

    Wenn keine INI vorhanden steigt das Beispiel aus der Hilfe aus. Ebenso wenn, die Section fehlt oder keine Key's enthält.

    Hast natürlich Recht. Irgendwie steh ich heute ein bisschen neben mir. Habe garnicht darauf geachtet, dass im Script eine @error Abfrage ist.

  • Hallo SEuBo,

    daran hatte ich auch zuerst gedacht und habe vorsichtshalber das Beispiel zu IniReadSection getestet. Meine Schlussfolgerung geht dahin, dass die Fehlermeldung aus seinem Skript kommt weil er das Beispiel der Hilfe nicht korrekt umgesetzt hat. Das geposteteSkript ist jedoch das Beispiel,

    mfg (Auto)Bert