unerklärliches Verhalten von Msgbox

  • Hallo,

    ich bin AutoIt Anfänger und habe Probleme mir ein bestimmtes Verhalten der Msgbox zu erklären. Ich verwende folgenden Code:

    Dabei wird zwischen "Das bestehende Benutzerverzeichnis wurde umbenannt in:" und der Ausgabe des Inhalts von $CmdLine[1] mit einem(!) "& @CRLF" eine sichtbare Leerzeile erzeugt, zwischen "xxx wird jetzt neu gestartet, dabei wird automatisch ein neues xxx-Benutzerverzeichnis:" und $CmdLine[2] geschieht das jedoch nur wenn ich 2 "& @CRLF" verwende. Gleiches gilt bei der Verwendung von "@CR".

    Warum ist das so?

    Hinweis:
    die zweite, längere Zeile ("xxx wird jetzt neu gestartet, dabei wird automatisch ein neues xxx-Benutzerverzeichnis:") wird in der Msgbox am Bildschirm umgebrochen und AutoIt verhält sich dann scheinbar so als wenn quasi eines der "& @CRLF" für die umgebrochene Zeile 'in Rechnung' gestellt würde.


    Grüße Michael

  • Da ich nicht ganz verstehe, was du meinst, bitte ich dich, deinen vollständigen SourceCode zu posten. Und schreibe um AutoIt-Code in Zukunft bitte kein "Code" und "/Code" in die Klammern, sondern "AutoIt" und "/AutoIt"; Somit kommt dann Syntax-Highlighting dazu.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Ich hatte eigentlich den vollständigen Code gepostet denn die Funktion help() habe ich irgendwo aus dem Internet kopiert und sie steht in keinem Zusammenhang mit der Funktion meines Skripts.
    Hier jedoch ist der absolut vollständige Code im derzeitigen Zustand (ich probiere und teste herum, deswegen sieht der Code so aus):

    [autoit]

    If $CmdLine[0] <> 2 Then help()

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

    ;$msg = $CmdLine[1]
    ;Msgbox(64, "Parameter 1", $CmdLine[1])
    $msg2 = $CmdLine[2]
    ;Msgbox(0, "Parameter 1", $msg2)

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

    $mld = "Das bestehende Benutzerverzeichnis wurde umbenannt in:" & @CRLF & _
    " " & CHR(34) & $CmdLine[1] & CHR(34) & @CRLF & @CRLF & @CRLF & _
    "OpenOffice wird jetzt neu gestartet, dabei wird automatisch ein neues OpenOffice-Benutzerverzeichnis:" & @CRLF & @CRLF & _
    CHR(34) & $CmdLine[2] & CHR(34) & @CRLF & "erstellt." & @CRLF & _
    @CRLF & @CRLF & @CRLF & _
    "Hinweis:" & @CRLF
    Msgbox(64, "Openoffice wird neu gestartet", $mld)

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

    Func help()
    $msg = "Cleanup is a command line utility that deletes files older than a given age." & @CRLF & _
    @CRLF & "Syntax:" & @CRLF & _
    @CRLF & "CLEANUP ""path_and_mask"" [days_old] [/R] [/D]" & @CRLF & _
    @CRLF & " path_and_mask I.E. C:\folder\sub-folder\*.* (use quotes if there are spaces)" & _
    @CRLF & " days_old age of files to delete (default is 30)" & _
    @CRLF & " /R recursive (default is non-recursive)" & _
    @CRLF & " /D delete the files, without /D it just shows a list matching the mask" & @CRLF & _
    @CRLF & "Examples:" & _
    @CRLF & "CLEANUP ""C:\test fol\*.txt"" 60 /R /D" & _
    @CRLF & "CLEANUP C:\test\*.log /R /D" & _
    @CRLF & "CLEANUP C:\test\*.* 25 /D" & @CRLF
    MsgBox(0, "Cleanup Help", $msg)
    Exit
    EndFunc ;==>help

    [/autoit]

    Grüße Michael

  • Mach mal ein Screen von deiner MessageBox. Ich weiß gerade nicht wie du das genau meinst.

    Hier ist ein Screenshot:

    autoit.de/wcf/attachment/25266/

    und ich meine das die Zeile:

    [autoit]

    8.$mld = "Das bestehende Benutzerverzeichnis wurde umbenannt in:" & @CRLF & _

    [/autoit]

    in der Bildschirmdarstellung der MsgBox eine Leerzeile erzeugt, jedoch die Zeile

    [autoit]

    "OpenOffice wird jetzt neu gestartet, dabei wird automatisch ein neues OpenOffice-Benutzerverzeichnis:" & @CRLF & @CRLF & _

    [/autoit]

    das nicht tut.

    Ich kann das auch unter anderen Umständen nicht nachvollziehen sonder einzig bei dem geposteten Script und dem Aufruf des kompilierten Scripts mit Parametern.

    Grüße Michael

  • Ich habs gerade mal ohne deine arrays getestet:

    [autoit]

    $mld = "Das bestehende Benutzerverzeichnis wurde umbenannt in:" & @CRLF & _
    " " & CHR(34) & "C:\Blah\Blah" & CHR(34) & @CRLF & @CRLF & @CRLF & _
    "OpenOffice wird jetzt neu gestartet, dabei wird automatisch ein neues OpenOffice-Benutzerverzeichnis:" & @CRLF & @CRLF & _
    CHR(34) & "C:\Blah\Blah" & CHR(34) & @CRLF & "erstellt." & @CRLF & _
    @CRLF & @CRLF & @CRLF & _
    "Hinweis:" & @CRLF
    Msgbox(64, "Openoffice wird neu gestartet", $mld)

    [/autoit]

    Hier funktioniert es. Lass dir mal mit

    [autoit]

    MsgBox(0, "", "$CmdLine[1]:" & @CRLF & $CmdLine[1] & @CRLF & @CRLF & "$CmdLine[2]:" & @CRLF & $CmdLine[2])

    [/autoit]


    ausgeben, wie die Arrays aussehen. Vielleicht ist der zweite arraystring falsch formatiert.

  • "Cleanup is a command line utility that deletes files older than a given age." < Ach sowas gibts? Ich hatte mir mal selbst sowas gebaut, für das SQL-Backup. "Lösche alle Dateien älter als 21 Tage"..

    Jedenfalls habs auch ich mal getestet, aber nicht mit ner echten CmdLine, sondern nur mit Array:

    [autoit]


    dim $CmdLines[3]

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

    $CmdLines[0] = 2
    $CmdLines[1] = "C:\Users\blablabla\AppData\Roaming\HeidiSQL"
    $CmdLines[2] = "C:\Users\blablabla\AppData\Roaming\HeidiSQL\12-23-45-1234567890"

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

    $mld = "Das bestehende Benutzerverzeichnis wurde umbenannt in:" & @CRLF & _
    " " & CHR(34) & $CmdLines[1] & CHR(34) & @CRLF & @CRLF & @CRLF & _
    "xxx wird jetzt neu gestartet, dabei wird automatisch ein neues xxx-Benutzerverzeichnis:" & @CRLF & @CRLF & _
    CHR(34) & $CmdLines[2] & CHR(34) & @CRLF & "erstellt." & @CRLF & _
    @CRLF & @CRLF & @CRLF & _
    "Hinweis:" & @CRLF

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

    Msgbox(64, "xxx wird neu gestartet", $mld)

    [/autoit]

    Aber ich glaube mich zu erinnern, dass ich mal ein ähnliches Problem hatte - ist leider nur schon ein paar Jahre her :pinch:

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.