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.
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.
Shadowigor hat schon die richtige Lösung angeboten.
Alles andere geht am Ziel vorbei und ist nicht zu empfehlen.
Es ist unhöflich den Startpost zu löschen - niemand kann dann nachvollziehen, worum es ging.
Habe ihn wiederhergestellt und close.
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.
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
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.
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.
-- 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):
# 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.
es wird doch nur noch ein zusätzlicher Zähler hochgezählt
Aha, war mir nicht bekannt. ![]()
Diesen Aspekt sollte man dann eigentlich auch in der Funktionsreferenz aufführen.
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. ![]()
Func _Irgendeine_UDF()
;....
_GDIPlus_CheckRun() ; <== statt _GDIPlus_Startup()
; beliebige GDIPlus-Funktionen
_GDIPlus_CheckRun(0) ; <== statt _GDIPlus_ShutDown()
;....
EndFunc
;===============================================================================
; 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
OnEventMode oder Adlib-Funktion sind sicher einfacher zu händelnde Alternativen.
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.
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.
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.;)
Mit einem Blick in die Hilfe (_GUICtrlComboBox_Create) ist das alles kein Problem ![]()
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
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()
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit][autoit][/autoit][autoit]Do
Until GUIGetMsg() = -3
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
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)
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.
Danke für die Antwort aber das funktioniert nur mit lokal angeschlossenen Geräten
Nein, das geht auch mit Netzwerkdruckern - einfach auf LPTn umleiten
Aber auch diese Variante ist vom Grundsatz falsch:
Wenn du einen String als Parameter erwartest, dann solltest du bei optionaler Vorbelegung des Parameters diesen logischerweise auch mit einem String belegen. Und dann gibt es auch keine Probleme mit Typumwandlung.
Da 8 auf 3 sowieso nicht geht brauchst du immer n*3 8er Pakete, sonst geht es ja nicht auf. Insofern halte ich das eh für wenig sinnhaft, da diese Bedingung deinen Ausgangsdaten vorgegeben werden muß.
Aber um es in 3er Blöcke zu setzen:
einfach alle 8er als String zusammenklöppeln und anschließend mit StringTrimLeft(STRING-8, 3) in 3er Blöcke zerlegen oder einfacher mit Regex "([10]{3})" zerlegen.
Wenn man das Pattern etwas ändert, erhältst du auch gleich alle anderen Daten der INI-Sektion in einem Aufwasch:
$SerNum = "YLS01123548"
$SearchPattern = "\[(\w+)\]\r\nuser=(\w+)\r\nip=([\d\.]+)\r\n\w+=" & $SerNum
;~ $sRead = FileRead('Deine.INI')
[/autoit] [autoit][/autoit] [autoit]$sRead = _
"[Computername_A]" & @CRLF & _
"user=xyz" & @CRLF & _
"ip=10.1.0.2" & @CRLF & _
"ser_moni=YLS01123548" & @CRLF & _
@CRLF & _
"[Computername_B]" & @CRLF & _
"user=abc" & @CRLF & _
"ip=10.1.0.3" & @CRLF & _
"ser_moni=YLS01123666" & @CRLF
$aRet = StringRegExp($sRead, $SearchPattern, 3)
ConsoleWrite('+> Monitor mit der SerNr: ' & $SerNum & @LF)
ConsoleWrite('>> PC-Name ' & $aRet[0] & @LF)
ConsoleWrite('>> User-Name ' & $aRet[1] & @LF)
ConsoleWrite('>> IP-Adresse ' & $aRet[2] & @LF)