Kürzer geht nicht?
Aber klar:
Local $var = 7
[/autoit][autoit][/autoit][autoit]Switch $var
Case 0 To 4
MsgBox(0, '', 'klein')
Case 5 To 9
MsgBox(0, '', 'groß')
Case Else
MsgBox(0, '', 'Variable ist falsch')
EndSwitch
Kürzer geht nicht?
Aber klar:
Local $var = 7
[/autoit][autoit][/autoit][autoit]Switch $var
Case 0 To 4
MsgBox(0, '', 'klein')
Case 5 To 9
MsgBox(0, '', 'groß')
Case Else
MsgBox(0, '', 'Variable ist falsch')
EndSwitch
Wenn du ein Edit-Ctrl (Input ist auch Edit-Class) als Ziel hast, ist der bessere Weg mit ControlSetText zu arbeiten.
Wie nennt man denn dann die ganzen Schlüsselwörter (engl. keywords) in Autoit?
All die angeführten Schlüsselwörter sind mit Ausnahme von 'Default' nicht allein existent sondern nur innerhalb eines Kontextes. (z.B. 'ContinueLoop' gibt es nur in einer Schleife, andere Schlüsselwörter analog)
Insofern ist der Funktionsname: IsKeyword auch meiner Meinung nach nicht zutreffend, da nur 'Default' von der Funktion als zutreffend erkannt wird. Eine Umbenennung in IsDefault wurde zwar angeregt aber von den Devs abgelehnt. (Es könnten ja in Zukunft noch mehr Keywords existieren).
Ich würde da gar nicht soviel Energie drauf verschwenden um zu versuchen, die API mit AutoIt zu nutzen.
1. Willst du wirklich freiwillig Daten an Google abdrücken?
2. Die Wahrscheinlichkeit, dass diese API kostenfrei bleibt, sehe ich als nicht sehr groß an. Tante Google will auch nur Kohle machen und dann wird dasselbe passieren, wie mit der 'AdWords-API' - sie wird kostenpflichtig.
3. Wenn du den Kalender unbedingt nutzen willst, synchronisiere ihn doch mit Outlook - dafür gibt es doch ein AddOn (habe ich irgendwo gelesen).
Pee hatte es schon angesprochen, aber irgendwie habt ihr ihn ignoriert.
Es gibt kein AutoIT - unsere Sprache heißt AutoIt. Und darauf legen wir großen Wert, da es sonst sinnverfälschend ist (IT= Informationstechnik; It= es - 'automatisiere es').
warum werden die TAG's nicht mehr als Buttons zur Verfügung gestellt
Du mußt die Javaskript-Optionen des Browsers anpassen. Gilt für alle Browser.
das hast du als antwort auf einen thread gemacht *hust*
Ja warum nicht. Kannst du mal sehen, wie mich die Probleme anderer inspirieren. ![]()
Hi,
in Funktionen ist es sinnvoll für optionale Parameter das Keyword 'Default' für den Aufruf zuzulassen. Andererseits ist es in vielen Standardfunktionen Usus für Defaults die '-1' oder einen Leerstring zu verwenden.
Somit kann es sinnvoll sein, in eigenen Funktionen mehrere Defaults zuzulassen. Um die Abfrage zu vereinfachen habe ich die Funktion _IsDefault() erstellt.
Mögliche Verwendung:
[autoit]ConsoleWrite(_MyFunc('Klaus', '') & @CRLF)
ConsoleWrite(_MyFunc('Fritz', -1, 'Peter') & @CRLF)
ConsoleWrite(_MyFunc('Karla', Default, 'Susi') & @CRLF)
Func _MyFunc($a, $b='Lisa', $c='Emil')
If _IsDefault($b, '-1,', ',') Then $b = 'Lisa' ; gültig sind: -1, Leerstring u. Default
Return $a & ' ' & $b & ' ' & $c
EndFunc
;===============================================================================
; Function Name: _IsDefault($var, $sOtherDefaults='-0', $sDelim=Default)
; Description: Prüft ob Funktionsparameter mit einem/mehreren Defaultwert/en aufgerufen wurde
; Parameter(s): $var - auf Defaultwert zu prüfende Variable (auf 'Default' wird immer geprüft)
; optional $sOtherDefaults - trennzeichenbasierter String mit anderen Werten,
; die auch zur Erkennung als "Default" möglich sind
; optional $sDelim - Trennzeichen in $sOtherDefaults, Standard ist 'GUIDataSeparatorChar'
; Return Value(s): 1 - Variable wurde mit einem Default aufgerufen
; 0 - Variable enthält keinen Defaultwert
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _IsDefault($var, $sOtherDefaults='-0', $sDelim=Default)
Local $aDef[1] = [0], $match = 0
If IsKeyword($sDelim) Then $sDelim = Opt('GUIDataSeparatorChar')
If $sOtherDefaults <> '-0' Then $aDef = StringSplit($sOtherDefaults, $sDelim, 1)
If Not $aDef[0] Then Return IsKeyword($var)
For $i = 1 To $aDef[0]
If $var = $aDef[$i] Then $match = 1
Next
If Not $match Then Return IsKeyword($var)
Return 1
EndFunc ;==>_IsDefault
Ist die Einstellung "es sollte der default-Wert abgefangen werden" also gut? Das ich es weiß wenn ich eigene Funktionen schreibe und sie veröffentliche.
Dieser Ansatz ist auf jeden Fall richtig und gehört ja auch zum Errorhandling.
Ich mache z.B. bei Parametern, die nur 2 Werte annehmen dürfen einen Defaultwert. Wird das Keywort "Default" (oder meist auch noch -1) verwendet, dann erhält der Parameter den Vorgabewert. In allen anderen Fällen wird der zweite mögliche Wert zugewiesen. So kann man auch fehlerhafte Aufrufe abfangen ohne zwingend mit einem Fehler abzubrechen.
Edit:
Ansonsten werden ja keine Keywords über Funktionen übergeben oder? Wenn das zutrifft würde deine Version nämlich noch die Fälle abfangen wo jemand illegal ein Keyword verwendet, das würde es ein klein wneig praktischer machen, war das die Idee hinter dem isKeyword()?
Es gibt bisher nur ein Keyword in AutoIt - "Default" (zumindest habe ich noch nichts Gegenteiliges gehört oder gelesen). ![]()
Ich glaube, mit dem Default hast du das völlig falsch verstanden.
Ein vorbesetzter Parameter wird NICHT standardmäßig verwendet, wenn du dafür "Default" übergibst. Damit das passiert, muß es vom Programmierer in der Funktion abgeprüft werden.
Zitat von HilfeFor UDF's, it is the scripter's responsiblity to check if the parameter has been set to Default and to perform the desired behavior in this situation.
Default läßt sich wie folgt abfragen:
[autoit]ConsoleWrite(_MyFunc(1,Default) & @CRLF)
[/autoit][autoit][/autoit][autoit]Func _MyFunc($a, $b=10, $c=20)
If IsKeyword($b) Then $b = 10
Return $a + $b + $c
EndFunc
Doch das geht nur, wenn ich die Befehle klein schreibe!
Wenn du es Großbuchstaben möchtest, mußt du auch Großbuchstaben bei den Abbrevs hinterlegen.
Wobei ich den Sinn nicht verstehe. Um groß zu schreiben muß ich doch extra die Shifttaste drücken. :wacko:
BTW:
Abbrevs sind keine Hotkeys. Es wird die Zeichenfolge bei der Eingabe verglichen, deshalb hat Groß- Kleinschreibung auch Auswirkung auf die Erkennung.
Du mußt sicher in den properties noch Anpassungen vornehmen. Dort verweist ja alles auf *.au3 ![]()
Wo bleibt "Viertel Sieben"? (Ich weiss bis heute noch nicht, welche Uhrzeit das sein soll...)
Das ist doch logisch: Ein-Viertel-von-Sieben, ergo 6:15 Uhr. ![]()
Für jeden Dateityp gibt es eine TYP.properties - Datei. Kopiere einfach die au3.properties unter dem Namen class.properties. Aber schau mal, ob noch weitere Verknüpfungen sind. Ich denke mal die api wäre auch noch notwendig.
Ich sehe das nicht als Erleichterung an. Es wirkt eher gegenteilig.
Der Sinn von Funktionen liegt im Allg. darin, dass durch Tausch von Parametern verschiedene Aktionen ausgeführt werden können.
Somit kann ich mit EINER Funktion Hide, Show, Enable, Disable setzen und brauch nicht 4!! ![]()
Eines sollte man nicht vergessen: Wenn man (z.T. über Jahre) miteinander per Internet kommuniziert entwickelt man eine Vorstellung von seinem Gegenüber, die selten mit der Realität übereinstimmt.
Jahrelang gepflegte Internetfreunschaften können so in Kürze zerplatzen. Das muß nicht sein - kann aber. :wacko:
Also sollte man überlegen, ob es das Risiko wert ist.
Wieso kommen die Leute IMMER am 23.4. eines Jahres auf die Idee ein Usertreffen abzuhalten: User-Treffen ![]()
Hi,
ihr kennt das alle: Man muß für 'ne Weile weg vom PC - möchte aber gern alles, was in der SB passiert mitbekommen.
Ich hab jetzt mal ein kleines Logprogramm geschrieben, dass alle Änderungen mitschreibt.
Ich hab es ohne Login gemacht, Whispern wird also nicht erfasst. Vielleicht kann es ja wer brauchen.
Edit: Da ich bei Programmstart einen Datumseintrag mache, hatte ich nicht bedacht, dass dieser (letzte) Eintrag dazu führt, dass alles als neu angesehen wird. Jetzt korrigiert.
Und einen weiteren Fehler beseitigt: Anfangs war der gestrige Tag noch als 'Heute' zu sehen, aber später wurde es dann doch zu 'Gestern'. Wird jetzt korrekt erkannt.
#Include <File.au3>
#include <Array.au3>
HotKeySet('!+e', '_exit') ; (Shift+Alt+e) <== nach Bedarf anpassen
Func _exit()
Exit
EndFunc
Local $lastline = '', $pathLOG = @ScriptDir & '\SBautoit.log'
If Not FileExists($pathLOG) Then
FileWrite($pathLOG,@YEAR & '-' & @MON & '-' & @MDAY)
Else
$lastline = FileReadLine($pathLOG, 1)
_FileWriteToLine($pathLOG, 1, @YEAR & '-' & @MON & '-' & @MDAY)
EndIf
Local $refresh_sec = 40 ; <== Refresh-Time, aber weniger als 40 sec ist nicht sinnvoll
Local $url = 'http://www.autoit.de/index.php?page=ShoutboxContent'
Local $aSpecialChr[14][2] = [['Ä','Ä'],['Ö','Ö'],['Ü','Ü'],['ä','ä'],['ö','ö'],['ü','ü'],['ß','ß'], _
['â','µ'],['¬','€'],['"','"'],['<','<'],['>','>'],['&','&'],['§','§']]
Local $patSmilies = '(\<img src="wcf/images/smilies/.+\..+" alt=")(.+)(" />)'
Local $patCol = '\<strong>\<font color=".+">(.+)\</font></strong>:'
Local $patUrl = '(\<a href=".+" target=".+">)(.+)(\</a>)'
Local $patCont = '\<span class="light">\[.+, (\d{1,2}:\d{2}).+\r\n\t(.+)\r\n(.+)\</span>'
Local $aRet, $currContent, $aCurrent, $cnt = 0, $sNew, $indx
While True
$t = TimerInit()
$currContent = StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(BinaryToString(InetRead($url, 1)), _
$patCol, '$1'), $patSmilies, '$2'), $patUrl, '$2')
$aRet = StringRegExp($currContent, $patCont, 3)
$currContent = ''
For $i = 0 To UBound($aRet) -1
$cnt += 1
If $i = 0 Or Mod($i, 3) = 0 Then
$currContent &= '[' & $aRet[$i] & '] '
ContinueLoop
EndIf
For $j = 0 To 13
$aRet[$i] = StringRegExpReplace($aRet[$i], $aSpecialChr[$j][0], $aSpecialChr[$j][1])
Next
$currContent &= $aRet[$i] & ' '
If $cnt = 3 Then
$currContent &= @CRLF
$cnt = 0
EndIf
Next
$aCurrent = StringSplit($currContent, @CRLF, 1)
If $lastline = '' Then
$indx = UBound($aCurrent)
Else
$indx = _ArraySearch($aCurrent, $lastline)
EndIf
If $indx > 1 Then
$sNew = ''
For $i = 1 To $indx -1
$sNew &= $aCurrent[$i] & @CRLF
Next
_FileWriteToLine($pathLOG, 1, StringTrimRight($sNew, 2))
$lastline = FileReadLine($pathLOG, 1)
EndIf
Do
Sleep(1000)
Until Int(TimerDiff($t)/1000) >= $refresh_sec
WEnd
Es geht so (die While-Schleife hat in der Funktion nix verloren):
Global $hGUI2
opt("GUIOnEventMode", 1) ;Enable events on GUI
_Main()
[/autoit] [autoit][/autoit] [autoit]While True
Sleep(100)
WEnd
Func _Main()
$hGUI1 = GUICreate('GUI 1')
GUISetOnEvent(-3, 'exitMain')
$bt = GUICtrlCreateButton('Umbauhilfe', 10,10,80,20)
GUICtrlSetOnEvent(-1, 'SecondGUI')
GUISetState()
EndFunc
Func exitMain()
Exit
EndFunc
Func SecondGUI()
$hGUI2 = GUICreate("Umbauhilfe", 700, 700, 10, 10) ;Create GUI
GUISetOnEvent(-3,"CloseSecondGUI",$hGUI2)
GUICtrlCreatePic("Testbild.jpg",0,0,700,700)
GUISwitch($hGUI2)
GUISetState() ; Display the GUI
EndFunc
Func CloseSecondGUI()
GUIDelete($hGUI2)
EndFunc
ich möchte das MAX limit auslesen !
Wozu? Das setzt du doch selbst fest. ![]()