Kann ich so etwas auch realisieren?
Ja, aber dazu benötigst du das RichEdit-Ctrl.
Sieh dir das Bsp. zu _GUICtrlRichEdit_AutoDetectURL an.
Kann ich so etwas auch realisieren?
Ja, aber dazu benötigst du das RichEdit-Ctrl.
Sieh dir das Bsp. zu _GUICtrlRichEdit_AutoDetectURL an.
Gibt es irgendwo eine Übersicht, wo all dies aufgelistet ist?
Der kürzeste Weg:
Mach es per Hand und zeichne die Aktion als Makro auf. Dann den VBA-Editor öffnen und das Makro ansehen. Im Objektkatalog des Editors findest du dann auch die Werte von verwendeten Konstanten, verfügbare Properties und Methoden. Mit diesen Angaben fällt es dann leichter unter "VBA + Begriff" zu googeln.
Und viel zum Lesen findest du dann bei MSDN (z.B. hier).
kann es sein das innerhalb der *.properties das Zeichen '/' genauso wie '\' intern reserviert sind?
Der Slash ist m.W. nicht reserviert. Nur der Backslash wird in den *.properties als Zeichen für Zeilenfortschreibung genutzt, wenn du ihn an ein Zeilenende setzt.
Falls du noch keine Style-Definitionen für die properties selbst benutzt, poste ich die mal hier. Alles ohne Highlighting liest sich einfach blöd ![]()
# ============================================= Properties styles
# Default
style.props.0=fore:#0000BA
# Comment
style.props.1=fore:#009933,$(font.comment)
# Section
style.props.2=$(colour.string),back:#E0F0F0,eolfilled
# Assignment operator
#~ style.props.3=$(colour.other.operator)
style.props.3=fore:#FF0000
# Default value (@)
style.props.4=$(colour.preproc)
# Key
style.props.5=fore:#000040,bold
# Background
style.props.32=$(font.base),back:#F0F4F9
# Matched Operators
style.props.34=fore:#0000FF,notbold
style.props.35=fore:#FF0000,notbold
comment.block.props=#~
# ===============================================================
Alles anzeigen
Sehr unkonkrete Fragestellung.
Was verstehst du darunter einen Zeilenumbruch auf die ganze Tabelle anmzuwenden? Wie würdest du das per Hand machen? Ich habe gerade nicht die geringste Vorstellung, was du meinst.
Woher weiß ich welche "Keyword-ID" zu welchem Style gehört?
Kannst du in diesem Bsp. ab Zeile 734 nachlesen. Das ist ein dynamischer Lua basierter Lexer unter Verwendung von LPeg (in etwa mit RegExp vergleichbar). Funktioniert aber, wie bereits erwähnt, wegen der Folding-Funktionen nicht in SciTE4AutoIt.
Was hällst du von der Idee SciTE zu vermitteln das es sich nicht um FB sondern um Au3 geht?
Ich befürchte das geht in die Hose. Auf jeden Fall kannst du anschließend die Darstellung in Au3 vergessen.
Mit der Lexxer.dll musst du leider leben, wie sie ist. Da gibt es nix anzupassen.
Die von dir bereits erwähnte Alternative eines Lexxers als Lua-Skript kannst du mit SciTE4AutoIt nicht vernünftig realisieren. Dazu brauchst du schon ein SciTE, das auch aktuell ist. MIt Au3SciTE kannst du z.B. kein Folding realisieren (per Lua-Skript), weil die entsprechenden User-Funktionen zum Setzen und Abfragen des Folding-Levels in dieser Version noch nicht verfügbar sind.
Ich hatte mal angefangen einen Au3-Lexxer in Lua zu schreiben, der funktionierte auch -- bis auf das Folding, und somit war er dann doch doch nicht brauchbar. Falls ich das Skript noch finde, kann ich es dir gern zur Verfügung stellen, damit du weißt, wie das gehandelt wird.
Aber ich hatte mich dabei auch nur an dem Scintilla-Bsp. orientiert: http://www.scintilla.org/ScriptLexer.html
Noch mal zur Klarstellung:
Mit dem SQLite-Include findet ausschliesslich ein Download vom AutoIt-Server statt. Dazu wird die Adresse "http://www.autoitscript.com/autoit3/files/beta/autoit/archive/sqlite/" angewählt.
Dass im Protokoll als Gegenstelle "mail.autoitscript.com" auftaucht, ist evtl. auf einen Alias zurückzuführen (reine Vermutung).
Ja, diese Vorgehensweise ist m. M. nach dreist und frech. Diese Tatsache ist zwar in der Hilfe zu _SQLite_Startup erwähnt, sollte meines Erachtens aber fett und als Warnung dort hinterlegt werden. Wer möchte schon gern, dass sein Skript "nach Hause telefoniert". ![]()
Wenn die Teile geordnet auf dem Förderband vorbei kommen, mit Lücken zwischen den Teilen, dann reicht ein optisches Element für < 5 Euro. (Sender u. Empfänger auf der einen Seite, Reflektor auf der anderen Seite)
Etwas Feintuning, dass ausschliesslich die Reflektion vom Reflektor als Durchgangssignal gewertet wird - fertig ist der Geber.
- Durchgang (1) = kein Teil
- kein Durchgang (0) = Teil
Schnittstellenkopplung über RS232 ist möglich, findest du auch entsprechende Lösungsvarianten bereits hier im Forum.
Grr, mein Fehler - Typo.
Nun funzt es - OK, Danke.
Mit deiner Funktion wird bei mir kein FontName ausgelesen (Leerstring) und somit wird wieder auf den OS-Font 'Segeo UI' zurückgegriffen.
Ich hatte diese UDF auch schon in einem Thread entdeckt - und da war auch der Hinweis, dass die Funktion ausschliesslich für Ctrl funktioniert, denen mit GuiCtrlSetFont Werte zugewiesen worden. (Was sie somit eigentlich überflüssig macht).
Global $pids[0] = 0
Grober Schreibfehler, Das Global weg und schon stimmt die Syntax. (Auf Funktionsfähigkeit habe ich nicht durchgeschaut).
Du willst eigentlich den Wert 0 zuweisen, durch Global wird es aber zu einer Deklaration, aber eines Array der Größe 0 - daher 'badly formatted' ![]()
Raupi :
Die Funktion macht dasselbe, nur dass der Zugriff vom Fenster auf den Logfont erfolgt. Ergebnis ist identisch.
Und man sieht auch, dass der Label-Text nicht vergleichbar ist.
Folgendes Problem:
GuiSetFont und GuiCtrlSetFont verwenden als Default-Parameter:
- Size 8.5
- Fontname OS-GUI-Font
Ich wollte eine Möglichkeit haben, nach Veränderungen am Font diesen auf "Default" zurückzusetzen.
Hier ein Skriptbsp., das zeigt - es ist absolut unmöglich. Weder Größe noch Aussehen des Font sind tatsächlich mit dem Original nach Ersterstellung identisch.
"Label-1" bleibt zum Vergleich unverändert.
#include <GuiConstants.au3>
#include <GuiSlider.au3>
$hGui = GUICreate('Test')
$Label_1 = GUICtrlCreateLabel('Label-1', 20, 20, 80)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Label_2 = GUICtrlCreateLabel('Label-2', 20, 45, 80)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$sFontName = _SysGetFont()[3]
GUICtrlCreateLabel('System Font: ' & $sFontName, 20, 70, 180, 20)
GUICtrlCreateLabel('Setze Font für Label-2: System, Size vom Slider', 20, 100)
$slider = GUICtrlCreateSlider(20, 120, 200, 20, $TBS_AUTOTICKS)
GUICtrlSetLimit(-1, 28, 12)
_GUICtrlSlider_SetPos($slider, 17)
$lblSize = GUICtrlCreateLabel(GUICtrlRead($slider)/2, 230, 123, 30)
$btSetFont = GUICtrlCreateButton('Setze Font', 20, 160, 60, 22)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While True
Switch GUIGetMsg()
Case -3
Exit
Case $btSetFont
GUICtrlSetFont($Label_2, GUICtrlRead($slider)/2, 400, 0, $sFontName)
Case $slider
GUICtrlSetData($lblSize, GUICtrlRead($slider)/2)
EndSwitch
WEnd
;===============================================================================
; Function Name....: _SysGetFont()
; Description......: Gets from Source the system settings for the font parameters
; Parameter(s).....: $iFontSource 0='Titlebar' (default), 1='Palette', 2='Menu', 3='ToolTip', 4='MessageBox'
; Return Value(s)..: [size, weight, attributes, fontname, quality]
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _SysGetFont($iFontSource=0)
Local $tNONCLIENTMETRICS = DllStructCreate('struct; uint cbSize;int iBorderWidth;int iScrollWidth;' & _
'int iScrollHeight;int iCaptionWidth;int iCaptionHeight;byte lfCaptionFont[60];int iSMCaptionWidth;' & _
'int iSMCaptionHeight;byte lfSMCaptionFont[60];int iMenuWidth;int iMenuHeight;byte lfMenuFont[60];' & _
'byte lfStatusFont[60];byte lfMessageFont[60];int iPaddedBorderWidth;endstruct')
DllStructSetData($tNONCLIENTMETRICS, 'cbSize', DllStructGetSize($tNONCLIENTMETRICS))
DllCall('user32', 'int', 'SystemParametersInfoA', 'int', 41, 'int', DllStructGetSize($tNONCLIENTMETRICS), _
'ptr', DllStructGetPtr($tNONCLIENTMETRICS), 'int', 0)
Local $tagLF = 'struct;long;long;long;long;long;byte;byte;byte;byte;byte;byte;byte;byte;char[32];endstruct'
Local $aFontSource[5] = ['lfCaptionFont','lfSMCaptionFont','lfMenuFont','lfStatusFont','lfMessageFont']
Local $tLogFont = DllStructCreate($tagLF, DllStructGetPtr($tNONCLIENTMETRICS, $aFontSource[$iFontSource]))
Local $aOut[5] = [ _
Abs(DllStructGetData($tLogFont, 1))*0.7, _ ; Height * size
DllStructGetData($tLogFont, 5), _ ; Weight * weight
DllStructGetData($tLogFont, 6) + _ ; Italic * attribute
DllStructGetData($tLogFont, 7) + _ ; Underline * attribute
DllStructGetData($tLogFont, 8), _ ; StrikeOut * attribute
DllStructGetData($tLogFont, 14), _ ; FaceName * fontname
DllStructGetData($tLogFont, 12)] ; Quality * quality
Return $aOut
EndFunc ;==>_SysGetFont
Hat jemand eine Idee, welche Werte tatsächlich dort verwendet werden? Nach meinem Verständnis liegt das Problem in AutoIt selbst begraben. In der Art, wie die Parameter vom Betriebssystem übernommen und umgesetzt werden. Beim Abfragen der Werte vom OS erhält man die Angaben aus dem LOGFONT als logische Größe (12). Mit dem Faktor 0.7 kann man dann näherungsweise den in AutoIt verwendeten Wert von 8.5 erreichen (rechnerisch 8.4).
Die Lösung mit der Brechstange wäre natürlich, das Ctrl zu löschen und neu zu erstellen. Dann habe ich den sauberen Ausgangszustand, allerdings habe ich auch eine neue ID und muss ggf. für alle Funktionen, die das Ctrl nutzen noch ein ID-Management vorhalten. ![]()
Ich vermute Folgendes:
Du arbeitest mit SQLite - und vor einiger Zeit wurde das SQLite-Include (SQLite.dll) aber von der AutoIt-Installation entfernt. (komplett bescheuert!!)
Dein Skript prüft mit dem vorhandenen SQLite-Include ob es lokal eien SQLite.dll findet, wenn nicht wird eine Internetverbindung aufgebaut und diese Dll vom AutoIt-Server heruntergeladen. Inwiefern das evtl. zusätzlichen Mailverkehr mit autoitscript.com anschiebt, kann ich nur raten.
In Projekten empfiehlt es sich immer, die SqLite.dll als eigene Datei mit in den Skriptpfad zu installieren z.B. mit FileInstall.
Startup muss dann so aussehen: _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)
Vor einiger Zeit hatte ich die Dll auch mal als Binärdatei-Include erstellt (so, wie es früher von Haus aus war). Den Post finde ich gerade nicht, kannst ja mal suchen.
und Syntax-Highlighting !
Na, beim Highlighting solltest du lieber nicht beschränken auf CaseSensitive Darstellung, denn intern wird ja auch die CaseInsensitive Darstellung vom Interpreter korrekt erfasst. Sonst erfasst dein Highlighting z.B. nur True aber nicht true. ![]()
Edit:
Ich lese mir die Daten immer aus der "C:\Program Files (x86)\AutoIt3\SciTE\api\au3.api" aus.
Und die WM-Messages findest du unter: "C:\Program Files (x86)\AutoIt3\Examples\Helpfile\Extras\WMDebug.au3"
Leider hat AutoIt keine eigene Syntaxregel für Konstanten, sie sind von Variablen nicht zu unterscheiden. Das ist beim Parsen echt unterirdisch, weil du alle Variablen des Skriptes auslesen musst um sie dann gegen deine Liste mit allen existierenden Konstanten aus Includes und deklariert im aktuellen Skript gegenzuprüfen.
wozu benötigt du die genaue Rechtschreibung der Funktionen?
Ich vermute mal, für die Autovervollständigung. Das Thema hatte ich mit SublimeText nämlich auch.
@MaxChri
Ich bin fast seit Anbeginn dieses Forums dabei. Solch oberschlaue Typen, wie du, schlagen hier ab und an mal auf.
Nur sind wir gar nicht davon angetan, wenn Leute, die meinen die Weisheit mit Löffeln gefressen zu haben, uns mit ihren geistigen Ergüssen beglücken wollen.
Oder um es unmissverständlich und ohne jeden Zweifel zu sagen: Wir wünschen die einen angenehmen Tag auf der Suche nach einer anderen Informationsquelle. Du darfst deinen Besuch hier gern als ein temporäres Ereignis betrachten.
[CLOSED]
Such mal hier im Forum nach meiner Funktion "_StringBalanced", damit kannst du das aufdröseln.