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

  • Unterscheidungsmerkmal zwischen ID (Zahl) und String

    • BugFix
    • 7. Mai 2013 um 11:37

    Man könnte mit IsString prüfen -- aber das Lesen eines Inputs ergibt einen String. Also müßte man vorher mit Number(GuiCtrlRead($input)) umwandeln.
    Ich bevorzuge da eine RegEx-Abfrage:

    [autoit]

    $sRead = GUICtrlRead($input)
    If Not StringRegExp($sRead, "^\d+$") Then ; .. Text enthalten

    [/autoit]
  • QR-Code Creator

    • BugFix
    • 7. Mai 2013 um 11:02

    Also von der Android-App QR-Code Scan wird der Inhalt nach dem Lesen so im Anzeigefenster dargestellt:

    Max Mustermann
    Musterfirma
    Musterstrasse 1 Musterstadt
    11111 Germany
    0211 111 111
    0211 111 112
    mustermann @musterdomain.de
    http://www.musterdomain.de


    Bei Übernahme in Kontakte sieht es dann so aus:

    Vorname: Max Mustermann
    Familienname: leer
    Telefon1: 0211111111
    Telefon2: 0211 111 112
    eMail: mustermann@musterdomain.de
    Postanschrift
    ___ Strasse: Musterstrasse 1 Musterstadt
    __________11111 Germany
    ___Stadt: leer
    ___PLZ: leer
    Organisation: Musterfirma
    Webseite: leer

    Die Zuordnung passt also vorne und hinten nicht. Mit vcf habe ich mich aber bisher nie beschäftigt und die Feldbeschreibung ergibt auf den ersten Blick nicht viel Sinn.

  • aus einer geöffneten Excel-Datei / Tabellenblatt lesen, ohne diese zu aktivieren

    • BugFix
    • 7. Mai 2013 um 09:48
    Zitat von Axel

    Die Zahl in Workbooks gibt die erste/zweite/dritte... Datei an, falls in Excel mehrere Dateien geöffnet sind.
    Sheets ist das Tabellenblatt


    Ich rate eigentlich davon ab, den Index zu verwenden ohne vorher zu prüfen ob er auch auf das gewünschte Workbook/Tabellenblatt verweist. Es kann ja jederzeiz z.B. die Reihenfolge der Tabellenblätter verändert werden.
    Besser beim Workbook den Dateipfad und beim Tabellenblatt den Namen übergeben. Der Parameter läßt beides zu.

  • DROP TABLE löscht nicht die gespeicherten Daten

    • BugFix
    • 5. Mai 2013 um 22:46

    DROP TABLE löscht die Tabelle - mit Inhalt!
    Woraus schließt du, dass das nicht der Fall ist? Wo sollen sich denn dann die Daten befinden - im Nirgendwo?

    DELETE dient nur zum Löschen einzelner/aller DS einer Tabelle. Die Tabelle bleibt erhalten.

  • Script mit Countdown als Wartefenster

    • BugFix
    • 5. Mai 2013 um 21:29

    Shadowigor hat schon die richtige Lösung angeboten.
    Alles andere geht am Ziel vorbei und ist nicht zu empfehlen.

  • PSU - PrivateServingUnit

    • BugFix
    • 5. Mai 2013 um 21:25

    Es ist unhöflich den Startpost zu löschen - niemand kann dann nachvollziehen, worum es ging.

    Habe ihn wiederhergestellt und close.

  • PSU - PrivateServingUnit

    • BugFix
    • 5. Mai 2013 um 21:17

    Und wozu sollen da mehrere Leute dran arbeiten? Das Thema ist weder kompliziert noch vielschichtig. Alles Basics.
    1 (max. 2) Stunde Programmieraufwand für 1 Person und der Drops ist gelutscht.

  • Problem mit der neuen SciTE-Version

    • BugFix
    • 5. Mai 2013 um 17:14

    Ich habe bei mir noch die Installationsdatei für SciTE4AutoIt v3.2.0 gefunden und mal angehängt.

    Edit:
    Bei Heise gibt es einen Download aus der dortigen Bibliothek, der vom Datum her ebenfalls die 3.2.0 sein sollte: http://www.heise.de/download/scite4autoit3-1155624.html

  • SciTEVersion vom 05.04.2013 verwendbar?

    • BugFix
    • 5. Mai 2013 um 17:05

    Im Moment gibt es bei Nutzung der Stable noch keine Notwendigkeit die 3.3.0 zu verwenden. Was ich bisher mitgelesen habe, ist die Version etwas buggy.
    Die Unterschiede zu 3.2.0 beschränken sich im Wesentlichen auf die zu erwartenden Syntaxänderungen für eine in ferner Zukunft liegende neue Version der Stable.
    Wenn du aber die Beta nutzt ist es durchaus angenehm, wenn die Syntax auch im Editor berücksichtigt wird.

  • SciTE - Funktionsname hinter EndFunc einfügen

    • BugFix
    • 5. Mai 2013 um 09:20

    Ihr kennt das von Tidy her: Hinter EndFunc wird eingefügt " ;==>FUNKTIONSNAME".
    Ich nutze Tidy gar nicht mehr - Einrückungen mache ich sowieso beim Schreiben und zudem auch richtig bei Select und Switch (das wird in Tidy immer versemmelt).
    Das Anhängen der Funktionsnamen finde ich aber recht praktisch und habe dafür jetzt ein Lua-Skript erstellt.

    FuncNameAtEnd.lua
    Code
    -- TIME_STAMP   2013-05-04 14:32:52   v 0.1
    
    
    ----------------------------------------------------------------------------------------------------------------------------------
    -- Beschreibung..: Ermittlung der im Skript deklarierten Funktionen
    -- ..............: In der EndFunc-Zeile wird "  ;==>FUNKTIONSNAME" angehängt
    -- ..............: Nicht wirksam in auskommentierten Zeilen
    ----------------------------------------------------------------------------------------------------------------------------------
    local IsComment = function(_pos) local tComment = {1,2} if tComment[editor.StyleAt[_pos]] == nil then return false else return true end end
    local InSense   = function(_s) _s = _s:gsub("%a", function(_c) return string.format("[%s%s]", _c:upper(),_c:lower()) end) return _s end
    
    
    local pattFunc = '()('..InSense('func')..'%s+([%w_]+)%s-%b().-'..InSense('endfunc')..')'
    local t, s, firstVisible, a, f, fname, iLines, pos, e = {}, editor:GetText(), editor.FirstVisibleLine
    
    
    for a, f, fname in s:gmatch(pattFunc) do
    	_, iLines = f:gsub('\n', '\n')
    	table.insert(t, {editor:LineFromPosition(a) + iLines, fname})
    end
    editor:BeginUndoAction()
    for i = 1, #t, 1 do
    	editor:GotoLine(t[i][1])
    	pos = editor:PositionFromLine(t[i][1])
    	if not IsComment(pos) then
    		_, e = editor:GetCurLine():find(InSense('endfunc'))
    		editor:SetSel(pos + e, pos + e)
    		editor:DelLineRight()
    		editor:InsertText(pos + e, '  ;==>'..t[i][2])
    	end
    end
    editor:EndUndoAction()
    editor.FirstVisibleLine = firstVisible
    scite.MenuCommand(IDM_SAVE)
    Alles anzeigen


    Zum Einbinden in das Menü folgenden Eintrag in SciTEUser.properties erstellen (Command-Nr an vorhandene freie anpassen):

    Code
    # 30 Add FuncName
    command.name.30.$(au3)= Add FuncName to EndFunc
    command.30.*.au3=dofile $(Lua.User.Scripts.Path)\FuncNameAtEnd.lua
    command.mode.30.*=subsystem:lua,savebefore:yes
    command.shortcut.30.*.au3=Ctrl+Shift+V


    Den Pfad hinter dofile an euren Speicherort der Datei anpassen.
    Eigene Lua-Skripte sollte man keinesfalls im Standard Lua-Ordner von SciTE ablegen. Falls ihr SciTE für eine neue Version mal deinstalliert wäre das alles futsch.
    Ich habe dafür einen eigenen Ordner angelegt und diesen als Property in den Benutzereinstellungen hinterlegt:
    Lua.User.Scripts.Path=C:\Code_AutoIt\LUA
    Diese Property kann dann als Variable angesprochen werden: $(Lua.User.Scripts.Path)
    Wichtig: Es darf niemals ein abschließender Backslash verwendet werden, SciTE verwendet diesen in .properties analog zum _ in au3-Skripten.

    Dateien

    FuncNameAtEnd.lua 1,55 kB – 456 Downloads
  • _GDIPlus_Startup /_ShutDown innerhalb von UDF

    • BugFix
    • 4. Mai 2013 um 09:30
    Zitat von funkey

    es wird doch nur noch ein zusätzlicher Zähler hochgezählt


    Aha, war mir nicht bekannt. :whistling:

    Diesen Aspekt sollte man dann eigentlich auch in der Funktionsreferenz aufführen.

  • _GDIPlus_Startup /_ShutDown innerhalb von UDF

    • BugFix
    • 4. Mai 2013 um 08:55

    Wenn ihr eine UDF erstellt, die Funktionen der GDIPlus.au3 verwendet, müßt ihr ja bei der Anwendung beachten, ob nicht bereits das aufrufende Skript GDIPlus gestartet hat.
    Ich verwende dazu die nachfolgende Lösung, vielleicht auch für euch interessant:

    Edit:
    Wie sich gezeigt hat, ist diese Überprüfung nicht erforderlich, da GDIP intern die Anzahl _Startup/_ShutDown zählt und verrechnet.
    Aber nun wißt ihr, wie man es machen kann, wenn es nötig wäre. :D

    [autoit]

    Func _Irgendeine_UDF()
    ;....
    _GDIPlus_CheckRun() ; <== statt _GDIPlus_Startup()
    ; beliebige GDIPlus-Funktionen
    _GDIPlus_CheckRun(0) ; <== statt _GDIPlus_ShutDown()
    ;....
    EndFunc

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

    ;===============================================================================
    ; Function Name....: _GDIPlus_CheckRun
    ; Description......: Führt _GDIPlus_Startup/ _ShutDown nur aus, wenn GDIP nicht aktiv
    ; Parameter(s).....: $_iStart 1 (Standard) für _Startup, 0 für _ShutDown
    ; Requirement(s)...: #include <GDIPlus.au3>
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GDIPlus_CheckRun($_iStart=1)
    Local Static $fOpenLocal = False ; nur wenn GDI+ nicht aktiv wird es lokal geöffnet
    If $_iStart = 1 Then
    If $ghGDIPDll = 0 Then ; Globales GDIPlus.Dll - Handle aus der GDIPlus.au3
    $fOpenLocal = True
    _GDIPlus_Startup()
    EndIf
    Else
    If $fOpenLocal Then
    $fOpenLocal = False
    _GDIPlus_ShutDown()
    EndIf
    EndIf
    EndFunc ;==>_GDIPlus_CheckRun

    [/autoit]
  • GUIGetMsg für "fremde" GUI

    • BugFix
    • 3. Mai 2013 um 21:22

    OnEventMode oder Adlib-Funktion sind sicher einfacher zu händelnde Alternativen.

  • GUIGetMsg für "fremde" GUI

    • BugFix
    • 3. Mai 2013 um 18:21

    Ein anderes Autoit Skript? Dann kannst du doch in diesem alles notwendige ausführen?
    Ansonsten schau dir mal die Skripte zu Datenkommunikation zwischen Skripten an.

  • Problem mit der neuen SciTE-Version

    • BugFix
    • 3. Mai 2013 um 17:44

    Spiel dir einfach 3.2.0 wieder auf und du hast Ruhe.
    3.3.0 ist eh nur eine Beta-Version in Vorbereitung auf künftige Syntaxänderungen. Da ist nichts bei, was für den aktuellen Stand der Stable erforderlich ist.

  • QR-Code Creator

    • BugFix
    • 3. Mai 2013 um 14:45
    Zitat von Volumeman

    derzeit werden Sie ja in 58x58 Pixel ausgegeben...


    Das ist nicht korrekt. In der Dll ist ein Qualitätslevel hinterlegt. In Abhängigkeit von der zu kodierenden Zeichenzahl in Kombination mit dem Qualitätslevel ergeben sich unterschiedliche Zeichnungsgrößen. Deshalb paßt sich im Bsp. die GUI auch automatisch an die jeweilige Codegröße an.
    Vergleiche einfach mal den Unterschied in der Größe bei 20 und 2000 zu codierenden Zeichen.;)

  • Combo in Echtzeit für Statusbar auslesen .... ohne Flackern

    • BugFix
    • 2. Mai 2013 um 17:32

    Mit einem Blick in die Hilfe (_GUICtrlComboBox_Create) ist das alles kein Problem ;)

    [autoit]

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

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

    GUICreate('TEST')
    $combo = GUICtrlCreateCombo('', 10, 10, 150, 22, BitOR($WS_VSCROLL,$CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, 'Item1|Item2|Item3|Item4', 'Item1')
    GUICtrlCreateLabel('Aktuelle Auswahl:', 10, 80, 120)
    $inSelection = GUICtrlCreateInput('Item1', 130, 77, 100, 20)
    GUISetState()

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    Do
    Until GUIGetMsg() = -3

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iCode
    $hWndFrom = $ilParam
    $iCode = BitShift($iwParam, 16) ; Hi Word
    If $hWndFrom = GUICtrlGetHandle($combo) And $iCode = $CBN_SELCHANGE Then GUICtrlSetData($inSelection, GUICtrlRead($combo))
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • Combo in Echtzeit für Statusbar auslesen .... ohne Flackern

    • BugFix
    • 2. Mai 2013 um 14:48

    Speichere den letzten Wert der Statusbar, vergleiche in der Schleife ob die Auswahl in der Combo ungleich des letzten Wertes ist -- und NUR DANN setzt du den Wert neu und aktualisierst die Vergleichsvariable.
    Alternativ kannst du auch das Event der Auswahl in der Combo über GUIRegisterMsg auswerten und nur in diesem Fall den Vergleich anstellen und ggf. neu setzen. (WM_COMMAND, Event: $CBN_SELCHANGE)

  • Drucker

    • BugFix
    • 2. Mai 2013 um 14:34
    Zitat von Clericer

    Auf die Art werden RTF Dokumente wie txt Dateien behandelt


    Du solltest schon den LPT-Port konfigurieren. Setze den Modus auf RAW - dann solltest du keine Probleme haben.

  • Drucker

    • BugFix
    • 2. Mai 2013 um 13:13
    Zitat von Clericer

    Danke für die Antwort aber das funktioniert nur mit lokal angeschlossenen Geräten


    Nein, das geht auch mit Netzwerkdruckern - einfach auf LPTn umleiten

    Code
    NET  USE  LPTn  \\PCName\Druckername

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™