Funktion zum Markieren eines Textausschnittes in einem Edit?

  • Hallo mal wieder!
    Ich bin aud der siche nach einem Befehl so wie diesen:

    [autoit]

    _stringmarkiere($input,$edit)

    [/autoit]


    Es soll aus dem Input($input) was lesen und ins Edit($edit) einfügen. Habe im Forum nix gefunden.

    MfG. tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    Einmal editiert, zuletzt von tobi_girst (19. März 2009 um 21:11)

  • Hi,
    sind das denn net eigentlich nur 2 Zeilen?


    Hä? Was meinst du damit? Quellcode? Die Func ist das:

    Spoiler anzeigen
    [autoit]

    func _qcode()
    $hcode=_iebodyreadhtml($ie)
    guicreate('Code',640,580, _
    (@desktopwidth-640)/2,(@desktopheight-580)/2, _
    $ws_overlappedwindow+$ws_visible+$ws_clipsiblings+$ws_clipchildren)
    $edit_code=guictrlcreateedit($hcode,0,0,640,580-20,$es_readonly+$ws_vscroll+$ws_hscroll)
    guictrlsetresizing($edit_code,2+4+64+32)
    $findlabel=guictrlcreatelabel('Find: ',10,563)
    guictrlsetresizing($findlabel,2+8+64+256+512)
    $find=guictrlcreateinput('',50,560,150,20)
    guictrlsetresizing($find,2+8+64+256+512)
    $findbutton=guictrlcreatebutton('GO!',205,560,30,20)
    guictrlsetresizing($findbutton,2+8+64+256+512)

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

    while 1
    $msg=guigetmsg()
    if $msg=$gui_event_close then
    guidelete()
    exitloop
    endif
    if $msg=$findbutton then
    ;_stringmarkiere($find,$edit_code) <----------------- Diese Zeile
    endif
    wend
    endfunc

    [/autoit]


    MfG. tobi_girst
    Edit:/ Spoiler verwendet

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Bei der Funktion wird ja nur der Quellcode von einer I-Net Seite ausgegeben(im Edit), aber die Suchfunktion, um den Quellcode auf Wörter / Phrasen / Img-Code / ... zu durchsuchen fehlt. Ich glaube nicht, dass wenn in einer Funktion das Herzstück fehlt, sie vorhanden ist.
    Tja, schade dass du mir nicht helfen kannst, aber was soll's. Gibt sicher jemanden der mir bitte htlft!

    MfG. tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Danke, aber das funzt auch net wirlkich (bei mir).
    Da bin ich zu blöd, glaube ich!

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Ja, klar, sry
    Also, ich hab das Script einfach in eine Func mit HotKey gepackt und Zeile 8 in

    [autoit]

    Global $sFile = _iebodyreadhtml($ie)

    [/autoit]

    umgeändert.
    Error:

    Code
    >"***.au3"    
    C:\Program Files\AutoIt3\Include\Security.au3 (59) : ==> "Func" statement has no matching "EndFunc".:
    Func _Security__AdjustTokenPrivileges($hToken, $fDisableAll, $pNewState, $iBufferLen, $pPrevState = 0, $pRequired = 0)
    
    
    >Exit code: 1    Time: 0.435


    Kommt beim starten vom Programm

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • Sry, klar!

    Spoiler anzeigen
    [autoit]

    #include<guiconstantsex.au3>
    #include<windowsconstants.au3>
    #include<ie.au3>

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

    _ieerrorhandlerregister ()

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

    if not dirgetsize('data\settings') then dircreate('data\settings')
    if not fileexists('data\settings\home.dat') then config()
    ;~ config()

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

    hotkeyset('^u','_qcode')
    $ie=_ieCreateembedded()
    guicreate("MyBrowser 0.1.0",640,580, _
    (@desktopwidth-640)/2,(@desktopheight-580)/2, _
    $ws_overlappedwindow+$ws_visible+$ws_clipsiblings+$ws_clipchildren)
    $ieobj=guictrlcreateobj($ie, 0, 025, 640, 580-5-20)
    guictrlsetresizing($ieobj,102);guictrlsetresizing($ieobj,$GUI_DOCKAUTO+128+32);guictrlsetresizing($ieobj,2+4+64)
    $ieback=guictrlcreatebutton("Back", 0, 0, 100, 25)
    $ieforward=guictrlcreatebutton("Forward", 100, 0, 100, 25)
    $iehome=guictrlcreatebutton("Home", 200, 0, 100, 25)
    $iestop=guictrlcreatebutton("Stop", 300, 0, 100, 25)
    $url=guictrlcreateinput('http://www.google.at',400,0,580-400)
    $urlgo=guictrlcreatebutton('|>',580,0,20)
    guictrlsetresizing($ieback,2+8+256+512)
    guictrlsetresizing($ieforward,2+8+256+512)
    guictrlsetresizing($iehome,2+8+256+512)
    guictrlsetresizing($iestop,2+8+256+512)
    guictrlsetresizing($url,2+8+256+512)
    guictrlsetresizing($urlgo,2+8+256+512)

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

    guisetstate() ;Show GUI

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

    $home2=fileread('data\settings\home.dat');Standard: 'www.google.at'
    _ienavigate ($ie,$home2)

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

    ;#cs ~~~~~ SETTINGS START ~~~~~
    func config()
    guicreate('Settings',250,95)
    guictrlcreategroup('Main',5,-1,240,55)
    guictrlcreatelabel('Bitte geben Sie die gewünschte Startseite ein: ',10,10)
    $home=guictrlcreateinput(fileread('data\settings\home.dat'),10,25)
    $save=guictrlcreatebutton('OK',10,60,50)
    $cancel=guictrlcreatebutton('Cancel',65,60,50)
    guisetstate()
    while 1
    if guigetmsg()=$gui_event_close then
    guidelete()
    exitloop
    endif
    if guigetmsg()=$save then
    fileopen('data\settings\home.dat',2)
    filewrite('data\settings\home.dat',guictrlread($home))
    guidelete()
    exitloop
    endif
    if guigetmsg()=$cancel then
    guidelete()
    exitloop
    endif
    wend
    endfunc
    ;#ce ~~~~~ SETTINGS END ~~~~~

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

    func _qcode()
    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $iHit = 0
    Global $sFile = _iebodyreadhtml($ie)

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

    $hGui = GUICreate('Text suchen', 720, 480)

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

    $hEdit = GUICtrlCreateEdit(FileRead($sFile), 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput('Bitte Suchbegriff eingeben!', 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    guidelete()
    Exitloop
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)
    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd
    endfunc
    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput And $nNotifyCode = 256 Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, '')
    $iHit = 0
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

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

    ;#cs ~~~~~ MAIN LOOP START ~~~~~
    ; Waiting for user to close the window
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $iehome
    _IENavigate ($ie,$home2)
    Case $msg = $ieback
    _IEAction ($ie, "back")
    Case $msg = $ieforward
    _IEAction ($ie, "forward")
    Case $msg = $iestop
    _IEAction ($ie, "stop")
    case $msg=$urlgo
    _ienavigate($ie, guictrlread($url))
    EndSelect
    WEnd
    ;#ce ~~~~~MAIN LOOP END ~~~~~

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

    GUIDelete()

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

    Exit

    [/autoit]

    Edit:/ die Datei \data\settings\home.dat

    Code
    http://www.google.at

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    • Offizieller Beitrag

    Es ist keine gute Idee mehrere Scripte einfach so "zusammenzuklatschen". Du solltest Dich schon bemühen, die fremden Scripte auch zu verstehen, sonst endet das immer in einer "Fehler-Orgie". ;)

    Naja, ich habe Dein Script mal etwas debugt. Und statt der Datei solltest Du für die Einstellungen lieber eine Inidatei nehmen.
    So ist es zwar immer noch etwas chaotisch, aber es funktioniert wenigstens:

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <IE.au3>
    #include <ScrollBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $iHit = 0, $hInput, $hSearch, $home

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

    _IEErrorHandlerRegister()
    If Not FileExists(@ScriptDir & '\data\settings') Then DirCreate(@ScriptDir & '\data\settings')
    If Not FileExists(@ScriptDir & '\data\settings\home.ini') Then config()
    $home = IniRead(@ScriptDir & '\data\settings\home.ini', 'Settings', 'Home', 'www.google.at')

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

    HotKeySet('^u', '_qcode')
    $ie = _IECreateEmbedded()
    GUICreate("MyBrowser 0.1.0", 640, 580, _
    (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
    $ws_overlappedwindow + $ws_visible + $ws_clipsiblings + $ws_clipchildren)
    $ieobj = GUICtrlCreateObj($ie, 0, 025, 640, 580 - 5 - 20)
    GUICtrlSetResizing($ieobj, 102);guictrlsetresizing($ieobj,$GUI_DOCKAUTO+128+32);guictrlsetresizing($ieobj,2+4+64)
    $ieback = GUICtrlCreateButton("Back", 0, 0, 100, 25)
    $ieforward = GUICtrlCreateButton("Forward", 100, 0, 100, 25)
    $iehome = GUICtrlCreateButton("Home", 200, 0, 100, 25)
    $iestop = GUICtrlCreateButton("Stop", 300, 0, 100, 25)
    $url = GUICtrlCreateInput($home, 400, 0, 580 - 400)
    $urlgo = GUICtrlCreateButton('|>', 580, 0, 20)
    GUICtrlSetResizing($ieback, 2 + 8 + 256 + 512)
    GUICtrlSetResizing($ieforward, 2 + 8 + 256 + 512)
    GUICtrlSetResizing($iehome, 2 + 8 + 256 + 512)
    GUICtrlSetResizing($iestop, 2 + 8 + 256 + 512)
    GUICtrlSetResizing($url, 2 + 8 + 256 + 512)
    GUICtrlSetResizing($urlgo, 2 + 8 + 256 + 512)

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

    GUISetState() ;Show GUI

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

    _IENavigate($ie, $home)

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

    ;#cs ~~~~~ MAIN LOOP START ~~~~~
    ; Waiting for user to close the window
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $iehome
    _IENavigate($ie, $home)
    Case $ieback
    _IEAction($ie, "back")
    Case $ieforward
    _IEAction($ie, "forward")
    Case $iestop
    _IEAction($ie, "stop")
    Case $urlgo
    _IENavigate($ie, GUICtrlRead($url))
    EndSwitch
    WEnd
    ;#ce ~~~~~MAIN LOOP END ~~~~~

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

    GUIDelete()

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

    Exit
    ;#cs ~~~~~ SETTINGS START ~~~~~
    Func config()
    $hConfig = GUICreate('Settings', 250, 95)
    GUICtrlCreateGroup('Main', 5, -1, 240, 55)
    GUICtrlCreateLabel('Bitte geben Sie die gewünschte Startseite ein: ', 10, 10)
    $home = GUICtrlCreateInput('', 10, 25)
    $save = GUICtrlCreateButton('OK', 10, 60, 50)
    $cancel = GUICtrlCreateButton('Cancel', 65, 60, 50)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $cancel
    ExitLoop
    Case $save
    IniWrite(@ScriptDir & '\data\settings\home.ini', 'Settings', 'Home', GUICtrlRead($home))
    ExitLoop
    EndSwitch
    WEnd
    GUIDelete($hConfig)
    EndFunc ;==>config
    ;#ce ~~~~~ SETTINGS END ~~~~~

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

    Func _qcode()
    $sFile = _IEBodyReadHTML($ie)

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

    $hGui = GUICreate('Text suchen', 720, 480)

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

    $hEdit = GUICtrlCreateEdit($sFile, 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput('Bitte Suchbegriff eingeben!', 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    GUIDelete($hGui)
    ExitLoop
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)
    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>_qcode

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

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput And $nNotifyCode = 256 Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, '')
    $iHit = 0
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]