Problem mit Aktuellem Script

  • Hi, ich hab da ein mehr oder weniger kleines Problem mit nem Script an dem ich heute wieder angefang hab zu arbeiten.

    Vorweg schonmal das Script:

    Spoiler anzeigen
    [autoit]

    ; ----- Includes -----
    #include <GuiRichEdit.au3>

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

    ; ----- Optionen und GUICreate -----
    $GUI = GUICreate ("Light-Map", @DesktopWidth, @DesktopHeight - 60)
    GUISetState (@SW_SHOW)
    GUISetBkColor (0x5da24b)

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

    ; ----- Gloabel-Variablen -----
    Global $msg ; Msg ( Funktionen )
    Global $MainEdit ; Edits
    Global $FontCombo, $ColorCombo, $SizeCombo ; Combos
    Global $DataMenu, $NewItem, $OpenItem, $SaveItem, $EditMenu, $CutItem, $CopyItem, $PastItem, $ExitItem, $HelpMenu, $HelpItem ; Menüs / Items

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

    ; ----- GUI-Edits, -Buttons, -Combos u.s.w... -----

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

    ; __GUI-Edit__
    $MainEdit = _GUICtrlRichEdit_Create ($GUI, 30, 50, 800, 870, $ES_DISABLENOSCROLL)

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

    ; __GUI-Combos__
    $FontCombo = GUICtrlCreateCombo ("", 30, 20, 150)
    GUICtrlSetData (-1, "Arial|Verdana|Georgia|Times New Roman", "Arial")
    $FontComboRead = GUICtrlRead ($FontCombo, 1)
    _GUICtrlRichEdit_SetFontName($MainEdit, $FontComboRead)
    $SizeCombo = GUICtrlCreateCombo ("", 200, 20, 50)
    GUICtrlSetData (-1, "2|4|6|8|10|12|14|16|18|20|22|24|26|28|30|32|34|36|38|40|42|44|46|48|50", "10")
    $SizeComboRead = GUICtrlRead ($SizeCombo, 1)
    _GUICtrlRichEdit_SetFontSize($MainEdit, $SizeComboRead)
    $ColorCombo = GUICtrlCreateCombo ("", 270, 20, 100)
    GUICtrlSetData (-1, "Rot|Gelb|Blau|Grün|Schwarz", "Schwarz")

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

    ; __GUI-Menüs__
    $DataMenu = GUICtrlCreateMenu ("Datei")
    $NewItem = GUICtrlCreateMenuItem ("Neu", $DataMenu)
    $OpenItem = GUICtrlCreateMenuItem ("Öffnen", $DataMenu)
    $SaveItem = GUICtrlCreateMenuItem ("Speichern", $DataMenu)
    $ExitItem = GUICtrlCreateMenuItem ("Schließen", $DataMenu)
    $EditMenu = GUICtrlCreateMenu ("Bearbeiten")
    $CopyItem = GUICtrlCreateMenuItem ("Kopieren", $EditMenu)
    $PastItem = GUICtrlCreateMenuItem ("Einfügen", $EditMenu)
    $CutItem = GUICtrlCreateMenuItem ("Ausschneiden", $EditMenu)
    $HelpMenu = GUICtrlCreateMenu ("Hilfe")
    $HelpItem = GUICtrlCreateMenuItem ("Hilfe", $HelpMenu)

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

    ; ----- Aktuelle Datei auslesen -----
    If Not FileRead (@ScriptFullPath) = @ScriptDir & "Light-Map.exe" Then
    _GUICtrlRichEdit_SetText($MainEdit, FileRead (@ScriptFullPath))
    EndiF

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

    ; ----- Funktionen -----
    While 1
    $msg = GUIGetMsg ()
    Select
    Case $msg = $SizeCombo
    $SizeComboRead = GUICtrlRead ($SizeCombo, 1)
    _GUICtrlRichEdit_SetFontSize($MainEdit, $SizeComboRead)
    ; #################################################################################################################################
    Case $msg = $FontCombo
    $FontComboRead = GUICtrlRead ($FontCombo, 1)
    _GUICtrlRichEdit_SetFontName($MainEdit, $FontComboRead)
    ; #################################################################################################################################
    Case $msg = $ColorCombo
    $ColorComboRead = GUICtrlRead ($ColorCombo, 1)
    If $ColorComboRead = "Rot" Then $FontColor = 0x0000FF
    If $ColorComboRead = "Gelb" Then $FontColor = 0x00FFFF
    If $ColorComboRead = "Blau" Then $FontColor = 0xFF0000
    If $ColorComboRead = "Grün" Then $FontColor = 0x00FF00
    If $ColorComboRead = "Schwarz" Then $FontColor = 0x000000
    _GUICtrlRichEdit_SetFontColor($MainEdit, $FontColor)
    ; #################################################################################################################################
    Case $msg = $NewItem
    If MsgBox(4, "Neu", "Wollen Sie wirklich ein neues Dokument erstellen?") = 6 Then
    _GUICtrlRichEdit_SetText($MainEdit, "")
    GUICtrlSetData ($FontCombo, "Arial|Verdana|Georgia|Times New Roman", "Arial")
    GUICtrlSetData ($SizeCombo, "2|4|6|8|10|12|14|16|18|20|22|24|26|28|30|32|34|36|38|40|42|44|46|48|50", "10")
    GUICtrlSetData ($ColorCombo, "Rot|Gelb|Blau|Grün|Schwarz", "Schwarz")
    EndiF
    ; #################################################################################################################################
    Case $msg = $OpenItem
    $open = FileOpenDialog ("Öffnen", @ScriptDir, "Light-Map Datei (*.lm)")

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

    _GUICtrlRichEdit_SetText($MainEdit, FileRead ($open))
    ; #################################################################################################################################
    Case $msg = $SaveItem
    $save = FileSaveDialog("Speichern...", @ScriptDir, "Light-Map Datei (*.lm)")
    If $save <> "" Then
    If Not (StringRight($save, 4) = ".lm") Then $save &= ".lm"
    FileWriteLine ($save, _GUICtrlRichEdit_GetText($MainEdit))
    EndIf
    ; #################################################################################################################################
    Case $msg = $ExitItem
    If MsgBox(4, "Beenden", "Wollen Sie das Programm wirklich beenden?") = 6 Then Exit
    ; #################################################################################################################################
    Case $msg = $CopyItem
    _GUICtrlRichEdit_Copy($MainEdit)
    ; #################################################################################################################################
    Case $msg = $PastItem
    _GUICtrlRichEdit_Paste($MainEdit)
    ; #################################################################################################################################
    Case $msg = $CutItem
    _GUICtrlRichEdit_Cut($MainEdit)
    ; #################################################################################################################################
    Case $msg = $HelpItem

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

    EndSelect
    WEnd

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


    So, erstmal, was soll es machen?
    Es ist ein kleines Schreibprogramm. Es is noch in einer sehr frühen Phase und noch lange nicht fertig.

    Das problem liegt dabei im öffnen einer gespeicherten Datei.
    Also man kann den geschriebenen Text, im moment noch ohne formatierung in einer RTF datei speichern.

    So, öffnet man diese über das Programm, so wird der Text darin ganz normal in das Eingabefeld geschrieben.
    Öffnet man es aber direkt, so wird es mit dem Schreibprogramm geöffnet. Im eingabefeld sollte dann eigl. der gespeicherte Text stehen. Das wollte ich eigl. mit den folgenden Zeilen erreichen:

    [autoit]

    ; ----- Aktuelle Datei auslesen -----
    _GUICtrlRichEdit_SetText($MainEdit, FileRead (@ScriptFullPath))

    [/autoit]

    Klappt auch soweit, allerdings steht dann stadt des gespeicherten Textes, nur MZi da.

    Es soll aber eben, der text dort im Eingabefeld stehen, der in dem RTF gespeichert ist.

    Ich hoffe ich habe das Problem verständlich rüber gebracht und ihr könnt mir dabei helfen...

    MfG

  • Soweit ich das sehe, fehlt das Öffnen der Datei, aus der du mit FileRead lesen willst. Also liest dein FileRead aus der zuletzt geöffneten Datei, und das dürfte dein compiliertes Script sein.
    Schau dir doch nochmal das Beispiel zu FileRead an. Außerdem dürfte FileReadLine für deine Zwecke besser geeignet sein.
    (Bei deinem FileWriteLine hast du vorher übrigens auch noch keine Datei zum Schreiben geöffnet.)

    Gruß Ashpool

    Gruß Ashpool

    Zitat von mir

    Bin immer wieder erstaunt, wie begrenzt ein Horizont sein kann.

  • *Sry das wars leider auch net.

    Auserdem, wenn ich das script (*.au3) öffne, steht der ganze sourcecode im Eingabefeld.
    Also ließt er es auch ohne FileOpen aus.

    Was ich net versteh, wo kommt dieses WZi her?!

    Noch jmd ne andere lösung?

  • Nein ^^
    Ich will nicht das complierte Script auslesen, sondern die RTF Datei.
    Also man Schreibt etwas in das Programm und speichert es.

    Der Text wird dann in einer RTF Datei gespeichert.
    Die RTF kann man dann öffnen. Dabei öffnet sich das Programm und der Text, der in der RTF steht, wird in das Eingabefeld geschrieben.

    Dafür ist dann diese Zeile zuständig.

  • mhh, ich probiers mal, mom

    Ok, das funzt, aber dann wirft sich eine neue Frage auf:
    Man speichert ja nicht jedes Dokument mit dem gleichen Namen, wie also bekomme ichd as hin, das der Name der Datei sozusagen neutral ist.

    z.B:
    Wenn Script1 in Ordner C:\xxx und Script 2 in C:\yyy ist. dann lässt sich das ganze ja ganz einfach mit @ScriptFullPath lösen. Das gibt ja den Path und den Dateinamen wieder. Wie aber soll ich das jetz machen?...

    • Offizieller Beitrag

    Speicher einfach den Dateinamen des zuletzt gesicherten Textes in eine Ini Datei. Wenn du das Script startest, dann kannst du die INI auslesen und das zuletzt bearbeitete Dokument öffnen. Außerdem hat Ashpool mit dem FileOpen vor den FileRead Und FileWrite recht. Du solltest immer die Datei expliziet öffnen. Desweiteren solltest du die Datei auch nach dem Bearbeiten mit FileClose wieder schließen.

  • Dann könnte ich aber nur das script öffnen, das ich zuletzt bearbeitet hab...
    Es soll ja ein Programm werden, ähnlich wie andere, richtige schreibprogramme.

    Es geht ja ledigtlich darum:

    Bei _GUICtrlRichEdit_SetText($MainEdit, FileRead (@ScriptDir & "\123.lm"))
    Wird ja nur die datei 123.lm geöffnet.

    Das heist, man müsste nur den Dateinamen neutral machen, also sozusagen sowas wie @ScriptFullPath.
    Bei ScriptFullPath wird ja der Path und der Pfad des Scripts angezeigt, das gerade ausgeführt wird. das gleiche brauch ich für diese RTF-Datei.
    Leider funzt es mit @ScriptFullPath net. Wie ich ja schon sagte, bekomme ich da nur WZi zurück...

    Kurz:
    Ich brauch das gleiche wie @ScriptFullPath, nur für einen anderen Dateityp wie *.au3 und *.exe. Eben für RTF.

    Soweit verständlich?

    • Offizieller Beitrag

    Ich verstehe Dein Problem nicht. Du hast doch einen Offnen Button und damit rufst du das FileOpenDialog auf. Als Resultat bekommst du den Pfad incl. Dateinamen . Übrigens ist @ScriptFullPath nichts anders als @SciptDir + \ + Dateinamen deines Sciptes oder auch @ScriptDir & "\" & @ScriptName. Der Scriptname hat doch nichts mir dem Dateinamen deiner RTF Datei zu tun .

  • Es geht auch nicht um den Öffnen Button.

    Öffne mal mein Prog. schreib i.was und speicher ab. Mit dem speichern erstellst du dann diese RTF-Datei.
    Dann schliest du das Programm und machst nen Doppelklick auf die RTF-Datei.

    Ich glaub dann verstehst du was ich mein...

  • So, ich hab mal was probiert:

    Ich hab einfach, bevor die While anfängt, MsgBox (0, "", @ScriptFullPath) gesetzt. Rauskam, wie ich die RTF-Datei öffnete, das der Befehl den Path zu dem eigl. Programm anzeigt, mit dem die RTF geöffnet wird.

    Und ich schätze mal, daher stammt auch dieses MZi.

    Nur wie könnte man das nun lösen?


    Edit:
    Hier nochmal das Ganze Script. Der Fehler ist Makiert...

    Spoiler anzeigen
    [autoit]

    ; ----- Includes -----
    #include <Misc.au3>
    #include <GuiRichEdit.au3>
    #include <GuiMENU.au3>
    #include <GuiEdit.au3>

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

    ; ----- Optionen und GUICreate -----
    $GUI = GUICreate ("Light-Map", @DesktopWidth, @DesktopHeight - 60)
    GUISetState (@SW_SHOW)
    GUISetBkColor (0x5da24b)

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

    ; ----- Gloabel-Variablen -----
    Global $msg ; Msg ( Funktionen )
    Global $MainEdit ; Edits
    Global $FontCombo, $ColorCombo, $SizeCombo ; Combos
    Global $DataMenu, $NewItem, $OpenItem, $SaveItem, $EditMenu, $CutItem, $CopyItem, $PastItem, $ExitItem, $HelpMenu, $HelpItem ; Menüs / Items
    ; ----- GUI-Edits, -Buttons, -Combos u.s.w... -----
    ; __GUI-Edit__
    $MainEdit = _GUICtrlRichEdit_Create ($GUI, 30, 50, 800, 870, $ES_DISABLENOSCROLL)
    ; __GUI-Combos__
    $FontCombo = GUICtrlCreateCombo ("", 30, 20, 150)
    GUICtrlSetData (-1, "Arial|Verdana|Georgia|Times New Roman", "Arial")
    $FontComboRead = GUICtrlRead ($FontCombo, 1)
    _GUICtrlRichEdit_SetFontName($MainEdit, $FontComboRead)
    $SizeCombo = GUICtrlCreateCombo ("", 200, 20, 50)
    GUICtrlSetData (-1, "2|4|6|8|10|12|14|16|18|20|22|24|26|28|30|32|34|36|38|40|42|44|46|48|50", "10")
    $SizeComboRead = GUICtrlRead ($SizeCombo, 1)
    _GUICtrlRichEdit_SetFontSize($MainEdit, $SizeComboRead)
    $ColorCombo = GUICtrlCreateCombo ("", 270, 20, 100)
    GUICtrlSetData (-1, "Rot|Gelb|Blau|Grün|Schwarz", "Schwarz")
    ; __GUI-Menüs__
    $DataMenu = GUICtrlCreateMenu ("Datei")
    $NewItem = GUICtrlCreateMenuItem ("Neu", $DataMenu)
    $OpenItem = GUICtrlCreateMenuItem ("Öffnen", $DataMenu)
    $SaveItem = GUICtrlCreateMenuItem ("Speichern", $DataMenu)
    $ExitItem = GUICtrlCreateMenuItem ("Schließen", $DataMenu)
    $EditMenu = GUICtrlCreateMenu ("Bearbeiten")
    $CopyItem = GUICtrlCreateMenuItem ("Kopieren", $EditMenu)
    $PastItem = GUICtrlCreateMenuItem ("Einfügen", $EditMenu)
    $CutItem = GUICtrlCreateMenuItem ("Ausschneiden", $EditMenu)
    $HelpMenu = GUICtrlCreateMenu ("Hilfe")
    $HelpItem = GUICtrlCreateMenuItem ("Hilfe", $HelpMenu)
    ;****************************************************************************
    ; ----- Aktuelle Datei auslesen -----
    FileOpen (@ScriptFullPath, 0) ; ------- Hier liegt der Fehler.
    _GUICtrlRichEdit_SetText($MainEdit, FileRead (@ScriptFullPath)) ; ------- Hier liegt der Fehler.
    ;~ MsgBox (0, "", @ScriptFullPath) ; Diese Zeile gibt ledigtlich den Pfad zum Hauptprogramm wieder. Jedoch nicht den Pfad der RTF-Datei!
    ;****************************************************************************

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

    ; ----- Funktionen -----
    While 1
    $msg = GUIGetMsg ()
    Select
    Case $msg = $SizeCombo
    $SizeComboRead = GUICtrlRead ($SizeCombo, 1)
    _GUICtrlRichEdit_SetFontSize($MainEdit, $SizeComboRead)
    ; #################################################################################################################################
    Case $msg = $FontCombo
    $FontComboRead = GUICtrlRead ($FontCombo, 1)
    _GUICtrlRichEdit_SetFontName($MainEdit, $FontComboRead)
    ; #################################################################################################################################
    Case $msg = $ColorCombo
    $ColorComboRead = GUICtrlRead ($ColorCombo, 1)
    If $ColorComboRead = "Rot" Then $FontColor = 0x0000FF
    If $ColorComboRead = "Gelb" Then $FontColor = 0x00FFFF
    If $ColorComboRead = "Blau" Then $FontColor = 0xFF0000
    If $ColorComboRead = "Grün" Then $FontColor = 0x00FF00
    If $ColorComboRead = "Schwarz" Then $FontColor = 0x000000
    _GUICtrlRichEdit_SetFontColor($MainEdit, $FontColor)
    ; #################################################################################################################################
    Case $msg = $NewItem
    If MsgBox(4, "Neu", "Wollen Sie wirklich ein neues Dokument erstellen?") = 6 Then
    _GUICtrlRichEdit_SetText($MainEdit, "")
    GUICtrlSetData ($FontCombo, "Arial|Verdana|Georgia|Times New Roman", "Arial")
    GUICtrlSetData ($SizeCombo, "2|4|6|8|10|12|14|16|18|20|22|24|26|28|30|32|34|36|38|40|42|44|46|48|50", "10")
    GUICtrlSetData ($ColorCombo, "Rot|Gelb|Blau|Grün|Schwarz", "Schwarz")
    EndiF
    ; #################################################################################################################################
    Case $msg = $OpenItem
    $open = FileOpenDialog ("Öffnen", @ScriptDir, "Light-Map Datei (*.lm)")

    _GUICtrlRichEdit_SetText($MainEdit, FileRead ($open))
    ; #################################################################################################################################
    Case $msg = $SaveItem
    $save = FileSaveDialog("Speichern...", @ScriptDir, "Light-Map Datei (*.lm)")
    If $save <> "" Then
    If Not (StringRight($save, 4) = ".lm") Then $save &= ".lm"
    FileWriteLine ($save, _GUICtrlRichEdit_GetText($MainEdit))
    EndIf
    ; #################################################################################################################################
    Case $msg = $ExitItem
    If MsgBox(4, "Beenden", "Wollen Sie das Programm wirklich beenden?") = 6 Then Exit
    ; #################################################################################################################################
    Case $msg = $CopyItem
    _GUICtrlRichEdit_Copy($MainEdit)
    ; #################################################################################################################################
    Case $msg = $PastItem
    _GUICtrlRichEdit_Paste($MainEdit)
    ; #################################################################################################################################
    Case $msg = $CutItem
    _GUICtrlRichEdit_Cut($MainEdit)
    ; #################################################################################################################################
    Case $msg = $HelpItem

    EndSelect
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Commander21 (4. März 2009 um 14:21)