Jump to content

Use Function to call Variable by name


Recommended Posts

Hi,

I am currently working on a homepage where I have to translate a lot (often the same words). I want to make a tool which pastes the translated words after I marked it.

I will make a variable for every translation. For example: $baum = "tree"; (baum is german & means tree).

The Script should:

1) Copy the marked Text (I just marked "baum")

2) Send the variable which is called as the copied text ("tree")

Like this:

Func _translate()
   Send("^c");
   Send($(ClipGet()))
EndFunc

Something like that. I want the variable name in the second Send function to be whatever is on the clipboard.

 

Link to comment
Share on other sites

Something like this? Mark Haus or Uhr and then hit ALT+SHIFT+d.

$myDict = _ObjDictCreate(1)
_ObjDictAdd($myDict, 'Baum', 'tree')
_ObjDictAdd($myDict, 'Uhr', 'clock')
_ObjDictAdd($myDict, 'Haus', 'house')

HotKeySet("+!d", "_translate") ; Shift-Alt-d

While 1
    Sleep(100)
WEnd

Func _translate()
   Send("^c");
   ConsoleWrite(ClipGet() & @CRLF)
   Send(_ObjDictGetValue($myDict, ClipGet()))
EndFunc




#cs
============================= OBJEKT 'Scripting.Dictionary' =======================================
*** Funktionssammlung ***

_ObjDictCreate(Modus)
        Erzeugt ein Dictionary Objekt im Binär- (default) oder Textmodus
        Gibt das Handle des Objektes zurück

_ObjDictAdd(Objekt, Schlüssel, Wert)
        Fügt einem Dictionary Objekt ein Schlüssel-Wert Paar hinzu

_ObjDictGetValue(Objekt, Schlüssel)
        Liest den Wert für einen Schlüssel aus

_ObjDictSetValue(Objekt, Schlüssel)
        Setzt einen neuen Wert für einen Schlüssel

_ObjDictCount(Objekt)
        Gibt die Anzahl der Schlüssel-Wert Paare zurück

_ObjDictSearch(Objekt, Schlüssel)
        Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden

_ObjDictDeleteKey(Objekt, Schlüssel)
        Löscht den angegebenen Schlüssel (und dessen Wert)
        Wird statt eines Schlüsselnamens '' übergeben,
        werden alle Schlüssel gelöscht (Standard)

_ObjDictList(Objekt)
        Eine GUI mit einem ListView zeigt alle Schlüssel-Wert Paare

_IniReadSectionToObjDict(Objekt, INI-Pfad, Sektion)
        Liest die angegebene INI-Sektion in das Objekt
        Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück

_IniWriteSectionFromObjDict(Objekt, INI-Pfad, Sektion)
        Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Sektion
        der INI-Datei
        Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück

_FileReadToObjDict(Objekt, TextDatei-Pfad, Seperator)
        Liest aus einer Textdatei alle Schlüssel-Wert Paare zeilenweise ein (1 Paar/Zeile)
        Standard-Seperator ist '|', kann hier angepaßt werden
        Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück

_FileWriteFromObjDict(Objekt, TextDatei-Pfad, Seperator, Overwrite)
        Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Datei (1 Paar/Zeile).
        Mit Overwrite='TRUE' (Standard) wird die angegebene Datei, falls sie bereits existiert,
        überschrieben. Mit 'FALSE' wird an eine bestehende Datei angehängt.
        Standard-Seperator ist '|', kann hier angepaßt werden.
        Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück

Autor: BugFix   ( bugfix@autoit.de )

===================================================================================================
#ce
#include <GuiConstants.au3>
#include <GuiListView.au3>
;==================================================================================================
; Parameter: $MODE
;                  0 Binär (default)
;                  1 Text
; Return:    Objekt Handle
;==================================================================================================
Func _ObjDictCreate($MODE=0)
    $oDICT = ObjCreate('Scripting.Dictionary')
    If $MODE <> 0 Then $oDICT.CompareMode = 1
    Return $oDICT
EndFunc ;==>_ObjDictCreate

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $KEY   - Schlüssel
;            $VALUE - Wert
; Return:    Erfolg:   0
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
;                      2  Schlüssel ohne Inhalt übergeben
;                      3  Wert hat keinen Inhalt
;                      4  Schlüssel bereits vorhanden
;==================================================================================================
Func _ObjDictAdd(ByRef $oDICT, $KEY, $VALUE)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $KEY = '' Then
        SetError(2)
        Return -1
    ElseIf $VALUE = '' Then
        SetError(3)
        Return -1
    ElseIf $oDICT.Exists($KEY) Then
        SetError(4)
        Return -1
    EndIf
    $oDICT.Add($KEY, $VALUE)
    Return 0
EndFunc ;==>_ObjDictAdd

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $KEY   - Schlüssel
; Return:    Erfolg:  Wert des Schlüssels
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
;                      2  Schlüssel ohne Inhalt übergeben
;                      5  Schlüssel nicht vorhanden
;==================================================================================================
Func _ObjDictGetValue(ByRef $oDICT, $KEY)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $KEY = '' Then
        SetError(2)
        Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
        SetError(5)
        Return -1
    EndIf
    Return $oDICT.Item($KEY)
EndFunc ;==>_ObjDictGetValue

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $KEY   - Schlüssel
;            $VALUE - Wert
; Return:    Erfolg:   0
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
;                      2  Schlüssel ohne Inhalt übergeben
;                      3  Wert hat keinen Inhalt
;                      5  Schlüssel nicht vorhanden
;==================================================================================================
Func _ObjDictSetValue(ByRef $oDICT, $KEY, $VALUE)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $KEY = '' Then
        SetError(2)
        Return -1
    ElseIf $VALUE = '' Then
        SetError(3)
        Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
        SetError(5)
        Return -1
    EndIf
    $oDICT.Item($KEY) = $VALUE
    Return 0
EndFunc ;==>_ObjDictSetValue

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
; Return:    Erfolg:  Anzahl der Schlüssel-Wert Paare
;            Fehler:   -1
;        Fehlerwert:   1  Objekt existiert nicht
;==================================================================================================
Func _ObjDictCount(ByRef $oDICT)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    EndIf
    Return $oDICT.Count
EndFunc ;==>_ObjDictCount

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $KEY   - Schlüssel
; Return:    Erfolg:  TRUE    Schlüssel vorhanden
;                     FALSE   Schlüssel nicht vorhanden
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
;                      2  Schlüssel ohne Inhalt übergeben
;==================================================================================================
Func _ObjDictSearch(ByRef $oDICT, $KEY)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $KEY = '' Then
        SetError(2)
        Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
        Return False
    Else
        Return True
    EndIf
EndFunc ;==>_ObjDictSearch

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $KEY   - Schlüssel (default='')
;                     mit $KEY = '' werden alle Schlüssel gelöscht
; Return:    Erfolg:   0
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
;==================================================================================================
Func _ObjDictDeleteKey(ByRef $oDICT, $KEY='')
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    EndIf
    If $KEY = '' Then
        $oDICT.RemoveAll
        Return 0
    ElseIf Not $oDICT.Exists($KEY) Then
        SetError(5)
        Return -1
    EndIf
    $oDICT.Remove($KEY)
    Return 0
EndFunc ;==>_ObjDictDeleteKey

;==================================================================================================
; Parameter: $oDICT - Handle des Dictionary-Objektes
;            $TITLE - Fenstertitel (optional)
; Return:    Erfolg:   GUI mit ListView
;            Fehler:  -1
;        Fehlerwert:   1  Objekt existiert nicht
; Requirements:       #include <GuiConstants.au3>
;                     #include <GuiListView.au3>
;==================================================================================================
Func _ObjDictList(ByRef $oDICT, $TITLE='Elemente: Objekt Dictionary')
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    EndIf
    Local $count = $oDICT.Count
    Local $SaveMode = Opt("GUIOnEventMode",0), $ListGUI, $oDictLV, $btnClose, $msg
    $ListGUI = GUICreate($TITLE, 600, 400, (@DesktopWidth - 600)/2, (@DesktopHeight - 400)/2)
    $btnClose = GUICtrlCreateButton('&Ende', 40, 360, 70, 22)
    GUICtrlSetResizing($btnClose, BitOR($GUI_DockRight, $GUI_DockBottom, $GUI_DockSize))
    GUICtrlDelete($oDictLV)
    $oDictLV = GUICtrlCreateListView('Schlüssel|Wert', 10, 10, 580, 340, BitOR($LVS_SHOWSELALWAYS, _
    $LVS_EDITLABELS), BitOR($LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_FULLROWSELECT, $LVS_EX_REGIONAL))
    If $count > 0 Then
        Local $strKey, $colKeys = $oDICT.Keys
        For $strKey In $colKeys
            GUICtrlCreateListViewItem($strKey & '|' & $oDICT.Item($strKey), $oDictLV)
        Next
    Else
        WinSetTitle($ListGUI, '', 'Das Objekt Dictionary enthält keine Elemente!')
    EndIf
    GUISetState(@SW_SHOW, $ListGUI)
    While 1
        $msg = GUIGetMsg(1)
        If $msg[1] = $ListGUI And _
          ($msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $btnClose) Then ExitLoop
    WEnd
    GUIDelete($ListGUI)
    Opt("GUIOnEventMode",$SaveMode)
EndFunc ;==>ObjDictList

;==================================================================================================
; Parameter: $oDICT   - Handle des Dictionary-Objektes
;            $PathINI - Pfad der INI-Datei
;            $SECTION - Sektion die gelesen werden soll
; Return:    Erfolg:    Anzahl der eingelesenen Schlüssel-Wert Paare
;            Fehler:   -1
;        Fehlerwert:    1  Objekt existiert nicht
;                       6  INI-Pfad nicht vorhanden
;                       7  kein Sektionsname
;                       8  INI-Sektion konnte nicht gelesen werden oder leer
;==================================================================================================
Func _IniReadSectionToObjDict(ByRef $oDICT, $PathINI, $SECTION)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf Not FileExists($PathINI) Then
        SetError(6)
        Return -1
    ElseIf $SECTION = '' Then
        SetError(7)
        Return -1
    EndIf
    Local $arSECTION = IniReadSection($PathINI, $SECTION)
    If Not IsArray($arSECTION) Then
        SetError(8)
        Return -1
    EndIf
    For $i = 1 To $arSECTION[0][0]
        $oDICT.Add($arSECTION[$i][0], $arSECTION[$i][1])
    Next
    Return $arSECTION[0][0]
EndFunc ;==>_IniReadSectionToObjDict

;==================================================================================================
; Parameter: $oDICT   - Handle des Dictionary-Objektes
;            $PathINI - Pfad der INI-Datei
;            $SECTION - Sektion die gelesen werden soll
; Return:    Erfolg:    Anzahl der geschriebenen Schlüssel-Wert Paare
;            Fehler:   -1
;        Fehlerwert:    1  Objekt existiert nicht
;                       7  kein Sektionsname
;                       9  INI-Sektion konnte nicht geschrieben werden
;==================================================================================================
Func _IniWriteSectionFromObjDict(ByRef $oDICT, $PathINI, $SECTION)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $SECTION = '' Then
        SetError(7)
        Return -1
    EndIf
    Local $arSECTION[$oDICT.Count][2], $i = 0
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
        $arSECTION[$i][0] = $strKey
        $arSECTION[$i][1] = $oDICT.Item($strKey)
        $i += 1
    Next
    If IniWriteSection($PathINI, $SECTION, $arSECTION, 0) = 1 Then
        Return $oDICT.Count
    Else
        SetError(9)
        Return -1
    EndIf
EndFunc ;==>_IniWriteSectionFromObjDict

;==================================================================================================
; Parameter: $oDICT     - Handle des Dictionary-Objektes
;            $PathFile  - Pfad der Datei
;            $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|'
; Return:    Erfolg:      Anzahl der eingelesenen Schlüssel-Wert Paare
;            Fehler:     -1
;        Fehlerwert:      1  Objekt existiert nicht
;                         6  Datei-Pfad nicht vorhanden
;                         7  Leerstring als Seperator übergeben
;                         8  Datei konnte nicht gelesen werden
;==================================================================================================
Func _FileReadToObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|')
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf Not FileExists($PathFile) Then
        SetError(6)
        Return -1
    ElseIf $SEPERATOR = '' Then
        SetError(7)
        Return -1
    EndIf
    Local $fh = FileOpen($PathFile, 0), $line
    Local $val
    If $fh = -1 Then
        SetError(8)
        Return -1
    EndIf
    While 1
        $line = FileReadLine($fh)
        If @error = -1 Then ExitLoop
        $val = StringSplit($line, $SEPERATOR)
        If $val[0] > 1 Then
            $oDICT.Add($val[1], $val[2])
        EndIf
    Wend
    FileClose($fh)
    Return $oDICT.Count
EndFunc ;==>_FileReadToObjDict

;==================================================================================================
; Parameter: $oDICT     - Handle des Dictionary-Objektes
;            $PathFile  - Pfad der Datei
;            $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|'
;            $OVERWRITE - Falls Datei existiert, wird sie überschrieben (Standard).
;                         Mit 'FALSE' wird an bestehende Datei angehängt.
; Return:    Erfolg:      Anzahl der geschriebenen Schlüssel-Wert Paare
;            Fehler:     -1
;        Fehlerwert:      1  Objekt existiert nicht
;                         7  Leerstring als Seperator übergeben
;                         8  Datei konnte nicht geschrieben werden
;==================================================================================================
Func _FileWriteFromObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|', $OVERWRITE=True)
    If Not IsObj($oDICT) Then
        SetError(1)
        Return -1
    ElseIf $SEPERATOR = '' Then
        SetError(7)
        Return -1
    EndIf
    If $OVERWRITE Then
        Local $fh = FileOpen($PathFile, 34)
    Else
        Local $fh = FileOpen($PathFile, 33)
    EndIf
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
        FileWriteLine($fh, $strKey & $SEPERATOR & $oDICT.Item($strKey))
        If @error Then
            SetError(8)
            Return -1
        EndIf
    Next
    FileClose($fh)
    Return $oDICT.Count
EndFunc ;==>_FileWriteFromObjDict

 

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Maybe this is what you asked.

 

$baum = 'tree'
_translate()

Func _translate()
   Send("^c");
   Send(Eval(ClipGet()))
EndFunc

 

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Fine, but what about using an array or dictionary object instead of many many single variables?

 

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...