1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • X mal Wiederholung

    • BugFix
    • 19. September 2012 um 21:21

    "Dont feed the Troll!" kann ich da nur sagen.
    Ich denke, es hat sich jedem erschlossen, was hier passieren soll. :pinch:
    Und damit hat sich dieser Thread erledigt.

    [CLOSED]

  • Alles Gute, Gun-Food :)

    • BugFix
    • 19. September 2012 um 21:02

    Auch von mir Alles Gute!
    Bleib uns noch schön lange erhalten. :D

  • Deutsche Sprache - Schwere Sprache (?)

    • BugFix
    • 18. September 2012 um 19:12
    Zitat von Xorianator

    Ich denke es wehre besser


    Aua aua aua - Der Thread dient eigentlich nicht dazu, die Sprache noch mehr zu verunglimpfen. :S
    Dieses Wort wird mit dem netten Umlaut ä geschrieben und enthält definitiv kein h. :wacko:

  • SciTE - vereinfachten UDF-Header aus Funktionsdeklaration (aktuelle Zeile) erstellen

    • BugFix
    • 17. September 2012 um 19:27

    Hi,
    Ich habe mal ein kleines Skript geschrieben, das aus der Funktionsdeklaration der aktuellen Zeile einen Header in kleinerem Umfang erstellt.
    Dabei werden die Parameter einzeln aufgelistet und evtl. Vorbelegungen als "(Default: Wert)" angegeben.

    EDIT:

    Nach 10 Jahren habe ich das Skript nochmal etwas aufgefrischt. Es ist jetzt auch für Lua-Skripte nutzbar.


    Muster
    Funktions Deklarationszeile:

    AutoIt
    Func _RandomString($_sType='[', $_iLow=2, $_iHigh=16)


    Eingefügt wird darüber:

    Code
    ; #FUNCTION# =======================================================================================
    ; Name ..........: RandomString
    ; Description ...: 
    ; Parameter(s)...: $_sType  [optional] (Default: '[')
    ; ....[optional].: $_iLow   (Default: 2)
    ; ....[optional].: $_iHigh  (Default: 16)
    ; Return values .: Success  
    ; ...............: Failure  
    ; Author ........: USER_NAME aus ..\SciTE\properties\au3.properties  Wert:UDFCreator
    ; Remarks .......: 
    ; ==================================================================================================
    Alles anzeigen


    • In der au3.properties den Usernamen eintragen
    • Die Datei HeaderFromCurrFunc.lua abspeichern
    • In der SciTEUser.properties einen neuen Eintrag mit Shortcut zum Aufruf der Funktion anlegen (Nummer und Shortcut bei Bedarf anpassen).

    Code
    # 37 Funktionsheader
    command.37.*=dofile "DEIN_PFAD/HeaderFromCurrFunc.lua"
    command.name.37.*=Funktionsheader aktuelle Funktion
    command.mode.37.*=subsystem:lua,savebefore:yes
    command.is.filter.37.*=1
    command.shortcut.37.*=Ctrl+Shift+H

    Einfach den Cursor in die Zeile mit der Funktionsdeklaration setzen, geht die Deklaration über mehrere Zeilen, dann in die erste Zeile der Deklaration. Mit dem Shortcut wird der Header erstellt und eingefügt.

    HeaderFromCurrFunc
    Lua
    -- TIME_STAMP 2022-03-21 16:14:43 v 0.4
    -- coding:utf-8
    
    local FunctionHeader = {}
    
    
    FunctionHeader.SelectExt = function(self)
        local ext = props['FileExt']:lower()
        if ext == 'au3' then
            self:AU3()
        elseif ext == 'lua' then
            self:LUA()
        else
            print('!> There is no header function for "*.'..ext..'"!')
        end
    end
    
    
    FunctionHeader.AU3 = function(self)
        local caret = editor.CurrentPos
        local line = editor:LineFromPosition(caret)
        local textline = editor:GetLine(line)
        local text = ''
        -- line has continuation mark ?
        while true do
            text = text .. textline
            if not textline:find('%s_[\r\n]-') then break end
            line = line +1
            textline = editor:GetLine(line)
        end
        -- remove continuation mark & line break, shorten many %s to one
        text = text:gsub('%s_[\r\n]-', ' '):gsub('%s+', ' ')
        -- extract name and params
        local fname, param = text:match('([%w_]+)%s-(%b())')
        if fname == nil then print('!> No function declaration in this line!') return end
        param = param:sub(2,-2)
        local tTemp, tParam, len = {}, {}, 7 -- {{$var,default-value,Const/ByRef}}, min var-len=7
        if param ~= '' then
            for m in param:gmatch('%s*([^,]+)') do table.insert(tTemp, m) end
            local var, defval
            for i=1, #tTemp do
                if tTemp[i]:find('^[Cc][Oo][Nn][Ss][Tt]') then
                    var = tTemp[i]:match('(%$[%w_]+)')
                    if tTemp[i]:find('%s[Bb][Yy][Rr][Ee][Ff]') then
                        table.insert(tParam, {var, nil, 'Const ByRef'})
                    else
                        table.insert(tParam, {var, nil, 'Const'})
                    end
                elseif tTemp[i]:find('^[Bb][Yy][Rr][Ee][Ff]') then
                    var = tTemp[i]:match('(%$[%w_]+)')
                    table.insert(tParam, {var, nil, 'ByRef'})
                elseif tTemp[i]:find('%$[%w_]+%s*=%s*') then
                    var, defval = tTemp[i]:match('^(%$[%w_]+)%s*=%s*(.+)')
                    table.insert(tParam, {var, defval})
                else
                    var = tTemp[i]:match('^(%$[%w_]+)')
                    table.insert(tParam, {var})
                end
                if var:len() > len then len = var:len() end
            end
        end
    
        local n, sHeader, sIntro, sDots, sOpt, sAdd, sSpace = "\r\n", "", "", "; ...............: ", "; ....[optional].: ", "", ""
        sHeader = sHeader .. "; #FUNCTION# " .. string.rep("=", 87) .. n
        sHeader = sHeader .. "; Name ..........: " .. fname .. n
        sHeader = sHeader .. "; Description ...: " .. n
        sHeader = sHeader .. "; Parameter(s)...: "
    
        if #tParam > 0 then
            sSpace = (" "):rep(len +2 -tParam[1][1]:len())
            if tParam[1][2] ~= nil then sAdd = "[optional] (Default: ".. tParam[1][2] ..")" end
            if tParam[1][3] ~= nil then sAdd = "(".. tParam[1][3] ..")" end
            sHeader = sHeader .. tParam[1][1] .. sSpace .. sAdd
        end
    
        if #tParam > 1 then
            sHeader = sHeader .. n
            for i=2, #tParam do
                sAdd, sIntro, sSpace = "", sDots, (" "):rep(len +2 -tParam[i][1]:len())
                if tParam[i][2] ~= nil then sAdd, sIntro = "(Default: ".. tParam[i][2] ..")", sOpt end
                if tParam[i][3] ~= nil then sAdd = "(".. tParam[i][3] ..")" end
                sHeader = sHeader .. sIntro .. tParam[i][1] .. sSpace .. sAdd .. n
            end
        else
            sHeader = sHeader .. n
        end
    
        sHeader = sHeader .. "; Return values .: " .. "Success " .. n
        sHeader = sHeader .. "; ...............: " .. "Failure " .. n
        sHeader = sHeader .. "; Author ........: " .. props['UDFCreator'] .. n
        sHeader = sHeader .. "; Remarks .......: " .. n
        sHeader = sHeader .. "; " .. string.rep("=", 98) .. n
    
        local posIns = editor:PositionFromLine(editor:LineFromPosition(caret))
        editor:InsertText(posIns, sHeader)
    end
    
    
    FunctionHeader.LUA = function(self)
        local caret = editor.CurrentPos
        local line = editor:LineFromPosition(caret)
        local home = editor:PositionFromLine(line)
        local text = editor:GetLine(line)
        if text == nil then print('!> No function declaration in this line!') return end
        if not text:find('function') then print('!> No function declaration in this line!') return end
        -- match "local function fname(param)"
        local p, fname, param = text:match('()local function ([%w_]+)%s-(%b())')
        -- match "function fname(param)"
        if fname == nil then
            p, fname, param = text:match('()function ([%w_]+)%s-(%b())')
        end
        -- match "local fname = function(param)"
        if fname == nil then
            p, fname, param = text:match('()local ([%w_]+)%s-=%s-function(%b())')
        end
        -- match "table.fname = function()"
        if fname == nil then
            p, fname, param = text:match('()([%w_]+%.[%w_]+)%s-=%s-function(%b())')
        end
        -- match "fname = function(param)"
        if fname == nil then
            p, fname, param = text:match('()([%w_]+)%s-=%s-function(%b())')
        end
        param = param:sub(2,-2)
        local tParam = {} -- {var}
        if param ~= '' then
            for m in param:gmatch('%s*([^,]+)') do
                m = m:match('%s*([^%s]+)%s*')
                table.insert(tParam, m)
            end
        end
        local n, sHeader, sDots, sIndent= "\n", "", ".............: ", ""
        if p > 1 then sIndent = (' '):rep(p-1) end
        sHeader = sHeader .. sIndent .. "--[[ #FUNCTION# " .. n
        sHeader = sHeader .. sIndent .. " Name ........: " .. fname .. n
        sHeader = sHeader .. sIndent .. " Description .: " .. n
        sHeader = sHeader .. sIndent .. " Parameter(s).: "
    
        if #tParam > 0 then
            sHeader = sHeader .. tParam[1]
        end
    
        if #tParam > 1 then
            sHeader = sHeader .. n
            for i=2, #tParam do
                sHeader = sHeader .. sDots .. tParam[i] .. n
            end
        else
            sHeader = sHeader .. n
        end
    
        sHeader = sHeader .. sIndent .. " Return ......: " .. "Success " .. n
        sHeader = sHeader .. sIndent .. " .............: " .. "Failure " .. n
        sHeader = sHeader .. sIndent .. " Author ......: " .. props['UDFCreator'] .. n
        sHeader = sHeader .. sIndent .. " Remarks .....: " .. n
        sHeader = sHeader .. sIndent .. "]]\n" .. sIndent .. string.rep("-", 100) .. n
    
        editor:InsertText(home, sHeader)
    end
    
    
    
    FunctionHeader:SelectExt()
    Alles anzeigen

    Dateien

    HeaderFromCurrFunc.lua 6,37 kB – 389 Downloads
  • Werte von einer Internetseite in eine Exceldatei verschieben

    • BugFix
    • 17. September 2012 um 15:07

    Als erstes solltest du in den AGB des Seitenbetreibers nachlesen, ob ein automatisierter Zugriff auf diese Daten überhaupt zulässig ist. Viele Anbieter untersagen das explizit, das ist dann für dich bindend und ein Ignorieren dieser Tatsache wäre illegal.

  • Wo ist der fehlende 1€?

    • BugFix
    • 17. September 2012 um 14:53
    Zitat von xXxProGamerxXx

    Make-Grafik hatte schon recht^^


    Quatsch.

    Wenn man eine Frage stellt, die bereits eine falsche Antwort impliziert, kann man niemals recht haben, sondern sollte sich schleunigst das Schulgeld zurückzahlen lassen. :rofl:

    Die Frage nach dem "fehlenden Euro" kann doch nur gestellt werden, wenn man eine falsche Rechnung durchführt.
    Die einzig richtige Antwort lautet:
    Es gibt keine Antwort, da keine den Tatsachen entsprechende Frage gestellt wurde. - Ohne Frage keine Antwort. Punkt. :P

  • WinEX UDF v0.1 - 473 Funktionen um die Windows-Standard-Dll

    • BugFix
    • 17. September 2012 um 14:45

    Für mich noch immer die Nr. 1 (und sollte auf keinem PC fehlen) API-Guide. Funktionen ausführlich mit Beschreibung, Parametern und Beispielen in VB, die sich recht einfach zu AutoIt portieren lassen.
    Auch wenn die Seite "AllAPI.net" nicht mehr als solche exitiert ist dieses Werk nicht zu verachten.

    Alle (oder die meisten) Funktionen der user32 oder kernel zu extrahieren und in AutoIt gangbar zu machen halte ich für wenig sinnvoll. Z.B. ist es doch eher sinnfrei eine MsgBox oder noch kranker eine GUI mittels der Dll-Befehle zu erstellen. Dann könnte man auch gleich Räder quadratisch gestalten, der Effekt ist ähnlich. :D

  • WinAPI_more.au3

    • BugFix
    • 17. September 2012 um 10:19

    Eine der meistgenutzten Strukturen ist die RECT-Struktur.
    Ich finde es immer lästig, 5 Zeilen Code zu schreiben um die Struktur zu erstellen und mit Werten zu befüllen.

    Ich habe jetzt eine Funktion erstellt (und in die WinAPI_more eingefügt), die folgendes ermöglicht:
    • Erstellen UND Befüllen einer RECT-Struktur gleichzeitig
    • Befüllen einer bestehenden RECT-Struktur
    • Übergabe RECT-Struktur ODER Pointer auf RECT-Struktur
    • Werte einzeln ODER als 4-Elemente Array übergeben
    • Aufruf der RECT-Struktur ohne Werte (Defaultwerte "-1" werden verwendet) leert die Struktur

    Funktion _WinAPI_DllStructRECT_Set
    [autoit]


    ;===============================================================================
    ; Function Name..: _WinAPI_DllStructRECT_Set()
    ; Description....: Erstellt und/oder füllt eine RECT-Struktur, optional Leeren eines RECT
    ; Parameter(s)...: $_tRECT Leere Variable zur Aufnahme der RECT-Strukt oder Variable m. RECT-Strukt oder Pointer auf eine RECT-Strukt
    ; ...............: $_iLeft RECT left ODER Array mit allen 4 RECT-Werten (top, right, bottom werden dann ignoriert)!
    ; ...............: $_iTop RECT top
    ; ...............: $_iRight RECT right
    ; ...............: $_iBottom RECT bottom
    ; ...............: Mit "-1" für alle 4 RECT-Werte (Standard) wird die übergebene Struktur geleert
    ; Return Value(s): Erfolg 1
    ; Fehler 0 set @error = Errorwert aus DllCall oder "-1" = Wertearray übergeben mit falscher Dimensionsgröße
    ; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WinAPI_DllStructRECT_Set(ByRef $_tRECT, $_iLeft=-1, $_iTop=-1, $_iRight=-1, $_iBottom=-1)
    Local $fSetEmpty = False, $fNewStruct = False
    If IsArray($_iLeft) Then
    If UBound($_iLeft) <> 4 Or UBound($_iLeft,0) > 1 Then Return SetError(-1,0,0)
    $_iTop = $_iLeft[1]
    $_iRight = $_iLeft[2]
    $_iBottom = $_iLeft[3]
    $_iLeft = $_iLeft[0]
    EndIf
    If $_iLeft = -1 And $_iTop = -1 And $_iRight = -1 And $_iBottom = -1 Then $fSetEmpty = True
    If Not IsPtr($_tRECT) Then
    If Not IsDllStruct($_tRECT) Then
    $_tRECT = DllStructCreate("struct; long Left;long Top;long Right;long Bottom; endstruct")
    $fNewStruct = True
    EndIf
    If $fSetEmpty And (Not $fNewStruct) Then
    Local $ret = DllCall("user32", 'long', 'SetRectEmpty', 'ptr', DllStructGetPtr($_tRECT))
    If @error > 0 Then Return SetError(@error,0,0)
    Else
    Local $ret = DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($_tRECT), 'long', $_iLeft, 'long', $_iTop, 'long', $_iRight, 'long', $_iBottom)
    If @error > 0 Then Return SetError(@error,0,0)
    EndIf
    Else
    If $fSetEmpty Then
    Local $ret = DllCall("user32", 'long', 'SetRectEmpty', 'ptr',$_tRECT)
    If @error > 0 Then Return SetError(@error,0,0)
    Else
    Local $ret = DllCall("user32", 'long', 'SetRect', 'ptr', $_tRECT, 'long', $_iLeft, 'long', $_iTop, 'long', $_iRight, 'long', $_iBottom)
    If @error > 0 Then Return SetError(@error,0,0)
    EndIf
    EndIf
    Return 1
    EndFunc ;==>_WinAPI_DllStructRECT_Set

    [/autoit]
    Bsp.
    [autoit]


    #include "WinAPI_more.au3"

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

    ; == Test 1
    ; == Struktur Erstellen und gleichzeitig Befüllen
    ; == Übergabe leere Variable und Werte einzeln, mit denen die Struktur befüllt werden soll
    Local $tRectangle
    $ret = _WinAPI_DllStructRECT_Set($tRectangle, 10, 10, 110, 50)
    If Not $ret Then
    ConsoleWrite('Fehler: ' & @error & @CRLF)
    Else
    ConsoleWrite('!> Test 1 >> ' & _WinAPI_GetRectValue($tRectangle) & @CRLF)
    EndIf

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

    ; == Test 2
    ; == bestehenden Struktur Befüllen
    ; == Übergabe Strukturvariable existierender Struktur und Werte einzeln
    $ret = _WinAPI_DllStructRECT_Set($tRectangle, 20, 100, 200, 150)
    If Not $ret Then
    ConsoleWrite('Fehler: ' & @error & @CRLF)
    Else
    ConsoleWrite('!> Test 2 >> ' & _WinAPI_GetRectValue($tRectangle) & @CRLF)
    EndIf

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

    ; == Test 3
    ; == bestehenden Struktur Befüllen
    ; == Übergabe Strukturvariable existierender Struktur und Werte im Array
    Local $aValue1[4] = [300,100,500,200]
    $ret = _WinAPI_DllStructRECT_Set($tRectangle, $aValue1)
    If Not $ret Then
    ConsoleWrite('Fehler: ' & @error & @CRLF)
    Else
    ConsoleWrite('!> Test 3 >> ' & _WinAPI_GetRectValue($tRectangle) & @CRLF)
    EndIf

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

    ; == Test 4
    ; == bestehenden Struktur Befüllen
    ; == Übergabe Pointer auf Strukturvariable existierender Struktur und Werte im Array
    Local $pRectangle = DllStructGetPtr($tRectangle)
    Local $aValue2[4] = [330,110,550,220]
    $ret = _WinAPI_DllStructRECT_Set($pRectangle, $aValue2)
    If Not $ret Then
    ConsoleWrite('Fehler: ' & @error & @CRLF)
    Else
    ConsoleWrite('!> Test 4 >> ' & _WinAPI_GetRectValue($tRectangle) & @CRLF)
    EndIf

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

    ; == Test 5
    ; == bestehenden Struktur Entleeren
    ; == Übergabe Pointer auf Strukturvariable
    $ret = _WinAPI_DllStructRECT_Set($pRectangle)
    If Not $ret Then
    ConsoleWrite('Fehler: ' & @error & @CRLF)
    Else
    ConsoleWrite('!> Test 5 >> ' & _WinAPI_GetRectValue($tRectangle) & @CRLF)
    EndIf

    [/autoit]


    Die neue Version der WinAPI_more.au3 habe ich in Post #1 aktualisiert

  • WinMove funzt net

    • BugFix
    • 16. September 2012 um 22:39

    Also WinMove funktioniert tadellos, leider wird das Child nicht als MDI_CHILD registriert, dann brauchtest du es nicht separat bewegen, sondern die Msg vom Parent würde auch für das Child gelten.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $notePID = RUN("NOTEPAD.EXE")
    $hNotepad = WinWait('[Class:Notepad]')

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

    global $hGui = GuiCreate("BLA", -1, -1, -1, -1, -1, $WS_EX_MDICHILD, $hNotepad)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT")
    WinSetTrans($hGUI, "", 150)

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

    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Parent = ' & WinGetTitle(_WinAPI_GetParent($hGui)) & @crlf) ;### Debug Console

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

    guisetstate(@SW_SHOW, $hGui)

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

    HotKeySet("{SPACE}","_MyMove")

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

    while(true)
    sleep(300)
    WEnd

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

    func _EXIT()
    ProcessClose($notePID)
    exit
    EndFunc

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

    func _MyMove()
    WinMove($hGui,"",200,200)
    EndFunc

    [/autoit]
  • WinMove funzt net

    • BugFix
    • 16. September 2012 um 21:50

    Chesstiger, du solltest lernen die Hilfe zu lesen! ( <AutoIt> <Using AutoIt> <Window Titles and Text (Advanced)> )
    Statt Titel kannst du (was auch viel sinnvoller, da eindeutiger ist) immer das Handle verwenden! "When you have a handle you may use it in place of the title parameter in any of the function calls that use the title/text convention."

  • WinMove funzt net

    • BugFix
    • 16. September 2012 um 21:42
    Zitat von taugenix

    Also $obj.hGUI=GuiCreate(BLABLA)


    Vielleicht zeigst du mal deinen Code. Das hier ist kein natives AutoIt und wäre nur mit der AutoItObject UDF machbar.
    AutoIt selbst ist keine objektorientierte Sprache.

    Mit nativem Code sieht das so aus:

    [autoit]

    $hGUI = GuiCreate(..)

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

    WinMove($hGUI,...)

    [/autoit]
  • Phasenverschiebung zwischen Strom und Spannung in einer Spule bei Wechselspannung

    • BugFix
    • 16. September 2012 um 21:17
    Zitat von @night@

    hohe induzierte Spannung entgegengesetzt der Spannung des Netzteils


    Ist zwar schon über 30 Jahre her bei mir - aber wenn ich mich recht erinnere, ist es nicht die Spannung, die das Besondere der Induktion ausmacht, sondern der Strom: Dieser ist immer der Ursache des Induktionsvorgangs entgegengesetzt.

  • Neues Control: Living Graph

    • BugFix
    • 16. September 2012 um 18:24
    Zitat von juloko1

    Also das der Graph nicht die alten Werte überschreibt (- wieder von vorne anfängt), sondern nur nach links aus dem GUI schiebt?


    Das ist die Variante, ständig am rechten Control-Rand zu zeichnen. Machbar ist das sicher, muss allerdings die Verwaltung umgestellt werden. Vielleicht werde ich das noch einbauen. Im Moment habe ich aber viele andere Dinge um die Ohren.

  • _StringWidth, Breite eines Labels herausfinden (vor dem Erstellen)

    • BugFix
    • 15. September 2012 um 18:08

    ..und im Deutschen Forum gibt es bereits sehr lange eine Lösung dazu: TextMeter ;)

  • Ausgabe in CMD mittlerweile möglich ?

    • BugFix
    • 15. September 2012 um 12:19

    Es gibt dazu auch etwas neuere Threads. z.B. hier

  • Variablen Problem. (Not Easy)

    • BugFix
    • 15. September 2012 um 08:57
    Zitat von Cake14

    Was sollte ich den in der Array speichern? Die einzelnen Variablen der Buttons? Weil ich habe ja schone on Textdokoment wo halt die Map drinne steht.


    Was nützt dir die Info in dem Textdokument? Willst du jedesmal neu aus dem Textdokument auslesen, wenn du den Wert einer dort gespeicherten Variablen benötigst? Das ist ineffektiv.
    Du lädst den gesamten Inhalt der Textdatei in das Array und hast dann jederzeit blitzschnell Zugriff auf die einzelnen Werte. Ändern sich Werte, so änderst du diese im Array und schreibst am Programmende den aktuellen Arrayinhalt zurück in die Textdatei. Somit bist du immer UpToDate. ;)

    Wenn du Probleme hast die einzelnen Elemente über deren Index anzusprechen, da $array[$i][$j] nun mal nicht assoziativ ist, kannst du dir für den Anfang eine Brücke bauen.
    Ich zeig das mal am Beispiel einer kleinen Liste:

    ***** GebDat Wohnort Beziehungsstatus
    Peter 11.05.89 A-Dorf Single
    Maria 23.04.76 B-Dorf Geschieden
    Anton 12.12.94 C-Dorf Verheiratet
    Gerda 28.09.87 D-Dorf Single

    In deiner Datei kannst du das z.B. so abspeichern:

    [font='Courier New, Courier, mono']Peter=11.05.89|A-Dorf|Single
    Maria=23.04.76|B-Dorf|Geschieden
    Anton=12.12.94|C-Dorf|Verheiratet
    Gerda=28.09.87|D-Dorf|Single

    [font='Arial, Helvetica, sans-serif']Im Skript definierst du jetzt Index-Variablen für jede Zeile und Spalte (geht natürlich nur bei fester Anzahl von Elementen).

    [autoit]


    ; für die Zeilen:
    Global $Peter = 0, $Maria = 1, $Anton = 2, $Gerda = 3
    ; alternativ kannst du dafür auch mit Enum arbeiten:
    Global Enum $Peter, $Maria, $Anton, $Gerda ; Enum startet, wenn nicht anders festgelegt, mit 0 -- somit brauchst du den Indexwert nicht extra vorbelegen

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

    ; dasselbe für die Spalten:
    Global Enum $GebDat, $Wohnort, $Beziehungsstatus

    [/autoit]

    Nun lassen sich die Zeilen/Spalten-Kombinationen mit "Begriffen" ansprechen:

    [autoit]


    ConsoleWrite( $array[$Peter][$Beziehungsstatus] & @CRLF ) ; gibt "Single" aus
    ConsoleWrite( $array[$Gerda][$Wohnort] & @CRLF ) ; gibt "D-Dorf" aus

    [/autoit]
  • Nachrichten abfangen wie Winspector

    • BugFix
    • 14. September 2012 um 19:36

    Wenn es gelöst ist, setze bitte im Startpost das Präfix auf "gelöst".

  • Array bereitet Probleme :/

    • BugFix
    • 14. September 2012 um 09:07
    Zitat von teamnoobPDB

    Ich möchte aber herausfinden welche Kominationsmöglichkeiten es gibt der oben angegebenen Werte.


    Kann es sein, dass du Kombinationen und Variationen verwechselst? :whistling:

  • Editbox nur mit tastatur steuern

    • BugFix
    • 14. September 2012 um 08:53

    Ich hab dir mal ein kleines Bsp. erstellt, wie du das übersichtlich lösen kannst:

    Spoiler anzeigen
    [autoit]

    $gui = GUICreate('Test')
    $edit = GUICtrlCreateEdit('', 10, 10, 380, 300)

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

    $Text1 = GUICtrlCreateDummy()
    $Text2 = GUICtrlCreateDummy()
    $Text3 = GUICtrlCreateDummy()

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

    Global $aAccelerators[3][2] = [['^{NUMPAD1}', $Text1],['^{NUMPAD2}', $Text2],['^{NUMPAD3}', $Text3]] ; Strg+Numpad_1 = Text 1 usw.
    GUISetAccelerators($aAccelerators)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $Text1, $Text2, $Text3
    _InsertText($msg)
    EndSwitch
    WEnd

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

    Func _InsertText($_TextID)
    Switch $_TextID
    Case $Text1
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 1" & @CRLF)
    Case $Text2
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 2" & @CRLF)
    Case $Text3
    GUICtrlSetData($edit, GUICtrlRead($edit) & _
    "Das ist Textblock 3" & @CRLF)
    EndSwitch
    EndFunc

    [/autoit]
  • Prüfen ob dedizierte Excel Tabelle (neben gleichzeitig anderen geöffneten Excel Dateien) geöffnet ist, wenn ja save and close

    • BugFix
    • 12. September 2012 um 22:29

    Ich würde testen, ob sich auf die gewünschte Datei ein Objekt referenzieren läßt. Wenn ja ist sie offen, wenn nein nicht.

    [autoit]

    $oTest = ObjGet("DATEIPFAD","Excel.Application")
    If IsObj($oTest) Then
    ; Datei ist offen
    Else
    ; Datei ist geschlossen
    EndIf

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™