ist das von unserem BugFIX ??
Alles andere auf meiner Seite ja, aber das habe ich nur gehosted. Es stammt von prog@ndy - einem ehemaligen Forumsmitglied. Er ist aber nicht mehr mit AutoIt aktiv.
ist das von unserem BugFIX ??
Alles andere auf meiner Seite ja, aber das habe ich nur gehosted. Es stammt von prog@ndy - einem ehemaligen Forumsmitglied. Er ist aber nicht mehr mit AutoIt aktiv.
Neue Version, v 0.2 im Startpost.
Neue Version 0.6, s. Startpost
Hast Du ein vernünftiges Syntax-Highlighting für Nim gefunden?
Ich habe mal etwas geschraubt (kann man sicher noch verfeinern, wenn man den Lua-Lexer ans Laufen bringt).
Einige der Styles sind gar nicht verfügbar. Mit dem was geht, hab ich aber was Brauchbares hinbekommen. (Nicht vergessen: Lexer von nimrod auf nim stellen.)
Wichtig! - Es kann nur Dark-Theme oder Light-Theme für alle Sprachen genutzt werden, ein Switch zwischen verschiedenen Sprachen klappt nicht, da es einige Globale Darstellungen gibt (caret.line, selection).
Hier mal meine Dark und Light Themes:
# #-- D A R K --# #
# GLOBAL gültige Werte!!
# Dürfen nicht überladen werden in anderen Properties
caret.line.back=#000080
caret.fore=#FFFFFF
selection.fore=#EC6F33
selection.back=#F222F2
selection.alpha=20
fold.highlight.colour=#CF6A4C
fold.margin.colour=#002451
fold.margin.highlight.colour=#002451
# Background
style.nim.32=fore:#B7BABF,back:#002451
# Indentation line
style.nim.37=fore:#5A5A5A
# Comment
style.nim.3=fore:#6078B7,$(font.comment)
# Number
style.nim.5=fore:#FFC57F
# Double quotes
style.nim.6=fore:#A9A451
# Single quotes
style.nim.7=fore:#A9F1A9
# Keyword
style.nim.8=fore:#DC99E3
# Triple single quotes
style.nim.9=fore:#A9F1A9,back:#002433
# Triple double quotes
style.nim.10=fore:#A9A451,back:#002433
# Procedure definition
style.nim.12=fore:#BBDAFF
# Operators
style.nim.15=fore:#72FFFF
Alles anzeigen
# #-- L I G H T --# #
caret.line.back=#EFEFD0
caret.fore=#000000
selection.fore=#FF0000
selection.back=#000096
selection.alpha=20
fold.highlight.colour=#E8EAF0
fold.margin.colour=#F0F4F9
fold.margin.highlight.colour=#F0F4F9
# Background
style.nim.32=fore:#4D4D4D,back:#F0F4F9
# Indentation line
style.nim.37=fore:#CCCCCC
# Comment
style.nim.3=fore:#007F00,$(font.comment)
# Number
style.nim.5=fore:#AC00A9
# Double quotes
style.nim.6=fore:#8181C0
# Single quotes
style.nim.7=fore:#9999E6
# Keyword
style.nim.8=fore:#0000FF
# Triple single quotes
style.nim.9=fore:#9999E6,back:#FEFFE0
# Triple double quotes
style.nim.10=fore:#8181C0,back:#FEFFE0
# Procedure definition
style.nim.12=fore:#000090
# Operators
style.nim.15=fore:#FF0000
Alles anzeigen
Laut der AutoIt-Hilfe werden die restlichen Bedingungen nicht mehr beachtet, wenn die erste Bedingung erfüllt ist.
Wie kommst du darauf?
Wenn die Bedingungen mit And verknüpft sind, müssen alle Bedingungen wahr sein, damit das Gesamtresultat wahr ist. Und das steht auch in der Hilfe.
Ich habe jetzt eine eigene Properties Datei für Nim erstellt: nim_user.properties (Einträge für Nim sind dann aus der SciTEUser.properties zu entfernen)
Die vorhandene nimrod.properties ist unvollständig und verweist auch auf den nimrod Lexer.
Ich habe alle Properties umbenannt auf .nim statt .nimrod
file.patterns.nim=*.nim
shbang.nim=nim
filter.nim=Nim (nim)|$(file.patterns.nim)|
*filter.nim=$(filter.nim)
# der nim-Lexer ist auch besser als der nimrod
lexer.$(file.patterns.nim)=nim
# F5
#~ command.go.*.nim=nim c -r "$(FileNameExt)"
command.go.*.nim=$(nim.compile.line)
command.go.subsystem.*.nim=1
command.name.1.*.nim=Syntax Check
command.1.*.nim=nim check "$(FilePath)"
command.mode.1.*.nim=savebefore:yes
command.shortcut.1.*.nim=Ctrl+F5
command.name.2.*.nim=Compile / Go by User Line
command.2.*.nim=dofile $(Lua.User.Scripts.Path)/CompileNimByUserline.lua
command.mode.2.*.nim=subsystem:lua,savebefore:yes
command.shortcut.2.*.nim=Ctrl+1
# compile Ctrl+F7
command.compile.*.nim=nim c "$(FilePath)"
# build F7 --> *** forcebuild als Einzelparameter ist aber nicht sinnvoll
command.build.*.nim=nim --forcebuild "$(FilePath)"
command.build.subsystem.*.nim=1
comment.block.nim=#
# die vorhandene Definition war unvollständig
keywordclass.nim=addr and as asm \
bind block break \
case cast concept const continue converter \
defer discard distinct div do \
elif else end enum except export \
finally for from func \
if import in include interface is isnot iterator \
let \
macro method mixin mod \
nil not notin \
object of or out \
proc ptr \
raise ref return \
shl shr static \
template try tuple type \
using \
var \
when while \
xor \
yield
keywords.$(file.patterns.nim)=$(keywordclass.nim)
statement.indent.$(file.patterns.nim)=5 elif else except finally of \
for if try while
statement.lookback.$(file.patterns.nim)=0
block.start.$(file.patterns.nim)=
block.end.$(file.patterns.nim)=
view.indentation.examine.*.nim=2
#fold.quotes.nim=1
comment.block.nim=#~
# nim styles
# White space
style.nim.0=fore:#808080
# Comment
style.nim.1=fore:#007F00,$(font.comment)
# Number
style.nim.2=fore:#007F7F
# String
style.nim.3=fore:#7F007F,$(font.monospace)
# Single quoted string
style.nim.4=fore:#7F007F,$(font.monospace)
# Keyword
style.nim.5=fore:#00007F,bold
# Triple quotes
style.nim.6=fore:#7F0000
# Triple double quotes
style.nim.7=fore:#7F0000
# Class name definition
style.nim.8=fore:#0000FF,bold
# Function or method name definition
style.nim.9=fore:#007F7F,bold
# Operators
style.nim.10=bold
# Identifiers
style.nim.11=
# Comment-blocks
style.nim.12=fore:#7F7F7F
# End of line where string is not closed
style.nim.13=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
# Highlighted identifiers
style.nim.14=fore:#407090
# Decorators
style.nim.15=fore:#805000
# Matched Operators
style.nim.34=fore:#0000FF,bold
style.nim.35=fore:#FF0000,bold
# Braces are only matched in operator style
braces.nim.style=10
Alles anzeigen
Mir fehlen im VSCode/VSCodium - Editor so einige in SciTE lieb gewonnene Konfigurationsmöglichkeiten. Sicher kann man Einiges mit JS - Funktionen nachbilden, wenn man da fit ist. Aber einige Dinge sind aufgrund der Architektur auch generell nicht möglich. Z.B. gibt es nicht die Möglichkeit auf das Ereignis "BeforeSave" zu reagieren. Das ist aber für viele Tools, die ich nutze Bedingung. Reaktion auf z.B. "AfterSave" würde entweder zu einem nicht gespeicherten neuen Inhalt oder zu einem Speicher-Loop führen, wenn man jede Änderung wieder speichert.
Deshalb habe ich mal getestet, inwieweit sich SciTE zur Nim-Programmierung eignet.
Das ist jetzt also eine Erprobungsphase. ![]()
Was mir wichtig war:
Ich benötige i.d.R. für die Programme unterschiedliche Compileranweisungen. Der Code Runner ist da nicht sehr flexibel (oder ich habe noch nicht alle Konfigurationsmöglichkeiten entdeckt).
Ich habe mir angewöhnt in eine der ersten Programmzeilen als Kommentar die Kompilierzeile zu speichern, z.B. # compile: nim c --app:gui TestGui.nim .
Nun wäre es natürlich schick, wenn ich das nicht händisch ins Terminal kopieren muss, sondern per Hotkey.
Das habe ich hier mit dem Lua-Skript CompileNimByUserline.lua umgesetzt.
Wie geht's?
Zwei Schritte sind erforderlich:
Ist keine benutzerdefinierte Kompilierzeile vorhanden, wird als Standard: nim c -r "$(FileNameExt)" verwendet.
Die erforderlichen Anpassungen für die SciTEUser.properties sind im Lua-Skript aufgeführt.
-- TIME_STAMP 2022-02-08 10:50:16
--[[ CompileNimByUserline.lua by BugFix
Nim compiler user guide: https://nim-lang.org/docs/nimc.html
Insert the compilation line into one of the first programme lines:
# compile: nim command [options] [projectfile] [arguments]
example compile:
# compile: nim c --app:console Test.nim
example compile & run:
# compile: nim c -r --app:console Test.nim
This line is used for compilation.
The Lua script works in a different subsystem than Nim-Go.
This means that an execution of the menu command IDM_GO from the Lua script is not successful.
If no compilation line is included in the script, is used as default:
nim c -r "$(FileNameExt)"
Two steps for using required:
1. One Hotkey calls "CompileNimByUserline.lua"
The compile line is extracted and saved as property "nim.compile.line"
2. Another Hotkey calls command "Go".
The command "Go" executes the property "nim.compile.line".
REQUIRED CHANGES IN "SciTEUser.properties":
# ======================================================== N I M ====
# F5
#~ command.go.*.nim=nim c -r "$(FileNameExt)"
command.go.*.nim=$(nim.compile.line)
command.go.subsystem.*.nim=1
command.name.1.*.nim=Syntax Check
command.1.*.nim=nim check "$(FilePath)"
command.mode.1.*.nim=savebefore:yes
command.shortcut.1.*.nim=Ctrl+F5
command.name.2.*.nim=Compile / Go by User Line
command.2.*.nim=dofile $(Lua.User.Scripts.Path)/CompileNimByUserline.lua <<== Modify your path !!
command.mode.2.*.nim=subsystem:lua,savebefore:yes
command.shortcut.2.*.nim=Ctrl+1
# compile Ctrl+F7
command.compile.*.nim=nim c "$(FilePath)"
# build F7
command.build.*.nim=nim --forcebuild "$(FilePath)"
command.build.subsystem.*.nim=1
comment.block.nimrod=#
# ======================================================= /N I M ====
--]]
local function getCompileLine()
local text = editor:GetText()
local match, kind, go = nil, '> Compile & Go Nim by Default\n', ''
for m in text:gmatch('#%scompile:%s+([^\r\n]+)') do
match = m break
end
if match ~= nil then
if match:find('%-r') then go = '& Go ' end
kind = '> Compile '..go..'Nim by UserLine\n'
props['nim.compile.line'] = match
else
props['nim.compile.line'] = 'nim c -r '..props['FileNameExt']
end
return kind
end
if props['FileExt']:lower() == 'nim' then
local kind = getCompileLine()
output:ClearAll()
output:AppendText(kind)
-- scite.MenuCommand(IDM_GO) doesn't work, syntax error: too many chunks
end
Alles anzeigen
Natürlich ist Nim mit SciTE noch deutlich entfernt von der Funktionsvielfalt in VSCode. Ich weiß auch nicht, ob es wirklich sinnvoll ist, die Anpassung zu versuchen. Aber ein Aspekt spricht deutlich für SciTE: Die Ausführungsgeschwindigkeit. Ich habe nim check für dasselbe Programm (mit vielen Includes) einmal in VSCode und einmal in SciTE ausgeführt. Ergebnis: 21 s : 14 s - SciTE benötigt also 30% weniger Zeit, DAS spricht deutlich für SciTE.
Ich halte euch auf dem Laufenden, sofern ich hier weiter bastele (das Farbschema ist per default nicht so der Brüller
- aber das ist eher zweitrangig, Funktionalität geht vor).
warum gibt's hier im Forum keine Vote-Icons oder ähnliches,
Das hatten wir mal erwogen (vor 10 ? Jahren). Aber da wir in anderen Foren sahen, dass das zu inflationären Postings führte nur um Likes zu erhaschen, haben wir davon Abstand genommen.
Wenn wirklich mal ein bemerkenswertes Posting erscheint. kann man natürlich mit einem begeisterten Antwortpost reagieren. ![]()
Schau dir RunWait() an.
Aber was möchtest du ausführen? Vielleicht kann man das mit pur AutoIt lösen.
Wie sieht es denn mit den Benutzerrechten aus?
Die Benutzer sind angelegt als das, was Windows als Administrator bezeichnet. (Und wir alle wissen, dass es gar keine Möglichkeit gibt, einen User per Default wirklich mit Adminrechten auszustatten.
).
Ja, das ist der einfachste Weg: Stringverkettung mit & - Operator.
Die erste Frage die ich mir stelle wenn solche Probleme kommen: Ist die Software überhaupt supportet unter Windows 10?
Der Witz war gut. ![]()
Microsoft verbiegt sein OS bis zur Unkenntlichkeit und somit ist naturgegeben, dass es erst mal von bestehender Software gar keine gibt die mit Sicherheit auf dem neuen OS läuft. Da dürfen dann die Softwarehäuser an ihrer Software hinterherentwickeln, damit weitestgehend Kompatibilität mit der neuen M$-Fehlerschleuder erreicht wird.
Ergo: Selbstverständlich wird die Software nicht offiziell für Windows 10 supported. Aber ein kleiner Betrieb kann es sich nicht leisten, nur weil M$ es so will, neue Hardware zu kaufen (die ist einigermaßen erschwinglich) und auch mal eben die teuren Softwarelizenzen in den Müll zu werfen und sich dann einem ich-schröpf-die-Kunden-so-gern-mit-Abo Preisdiktat zu unterwerfen. ![]()
Wir verwenden übrigens einen echten Server (also mit Server-OS). Nur ist bei unseren paar Mitarbeitern im Büro eine Client - Server - Struktur overdressed. Deshalb die Arbeitsgruppe.
BDE ist sowas wie einen Datenbank auf sharedfiles Ebene, oder?
Das ist die Borland Database Engine. Die ist erforderlich für Kommunikation zwischen unserer Datenbank (Firebird SQL) und Office - Dokumenten. Es ist eine Schnittstellensoftware für relationale Datenbanken. Auch wenn diese schon recht betagt ist, wurde sie glücklicherweise seit vermutlich 10 oder mehr Jahren nicht mehr weiterentwickelt. Dadurch wurde nichts verschlimmbessert und sie funktioniert noch immer - auch unter Windows 10.
Du solltest zwingend SciTE4AutoIt installieren.
Dann brauchst du nur den Cursor in einen Begriff setzen, F1 drücken und bekommst die detaillierte Funktionsbeschreibung mit Beispiel.
Das erleichtert das Arbeiten ungemein, weil du nicht ständig googeln musst. Und ich kann mich an meine Anfänge erinnern, da habe ich auch jeden zweiten Befehl nachschauen müssen. Oft auch bei jeder Verwendung um die korrekten Parameter zu wissen.
Folgendes Szenario:
Bisher wurden bei uns im Büro Windows 7 PC benutzt (nie Probleme gehabt, alle waren glücklich).
Die PC nutzen gemeinsam als Arbeitsgruppe eine Warenwirtschaftssoftware auf einem zentralen PC.
Nun habe ich einige PC ersetzt, diese haben Windows 10. Und nun wird es mysteriös:
Es sind 3 PC, identisch in Hardware, OS und installierter Software.
Ich erstelle eine Verknüpfung zur WaWi-Software auf dem Server, starte die Software über den Link und bekomme, wie erwartet die Meldung "Der fehlende BDE Eintrag wurde auf dem Rechner erzeugt."
Die Software läuft und alles ist gut.
Eine Woche später ruft mich das Büro an, dass auf 2 der 3 PC die WaWi-Software nicht mehr gestartet werden kann. ![]()
Heute war ich wieder vor Ort und konnte die Ursache finden. Bei jedem Versuch die Software zu starten wurde angeblich der fehlende BDE Eintrag erstellt. Da es jedesmal passierte, bedeutet das im Umkehrschluß, dass es nie passierte! Also kann nur ein Rechteproblem die Ursache sein. - Den Link zur Ausführung als Admin eingerichtet und siehe da, es läuft.
Nun aber die Gretchenfrage:
Wieso hat es 1 Woche anstandslos funktioniert und erst danach ist dem System eingefallen, das Adminrechte ganz schick wären?
Und wieso ist dem dritten PC die Rechtefrage total schnuppe?? ![]()
Ich fühle mich irgendwie veräppelt. ![]()
Geänderte Kommandozeilenversion (mit Aufrufparametern) nimble_up_check_cmd.nim im Startpost.
Bezüglich dem Notepad++, hat der Probleme mit Autoit Code?
JA.
Notepad++ ist ohne Zweifel ein sehr guter Editor und deshalb hatte ich vor über 10 Jahren mal angefangen ihn für AutoIt fit zumachen (Notepad++ und AutoIt).
Letztlich habe ich es aber nicht weiter verfolgt, da eine m.M.n. wesentliche Funktion nicht vollständig verfügbar ist: Der Lexer kann nur eine begrenzte Anzahl von Keywords verarbeiten.
Und inzwischen habe ich all das, was NP++ an Features SciTE voraus hatte, durch entsprechende Lua-Skripte auch für SciTE verfügbar gemacht. Ich möchte sogar behaupten, dass die Funktionsvielfalt von SciTE inzwischen die von NP++ übersteigt.
Daher klare Empfehlung für Editor (meist benutzte):
Es gibt noch weitere Editoren, die gut mit AutoIt umgehen können, aber die vorgenannten besitzen, soweit ich weiß, die größte Vielfalt.
Nach laaaanger Zeit ![]()
GUI-Version im Startpost.
auch wenn eine Aktualisierun in einem bestimmten Intervall sicher cool wäre. Leider scheint es aber nicht zu funktionieren.
Liest du überhaupt unsere Antworten?!
4. Entweder ein durch User ausgelöster erneuter Funktionsaufruf (Button) oder
5. Pollen der Funktion im Hintergrund (AdlibRegister) - auf vernünftiges Intervall achten
Ich habe jetzt schon die anderen komplett deinstalliert, aber trotzdem kein vollständiges Syntax highlighting.
Ich verwende auch die Erweiterung von Damien, zusammen mit Farbdesign "Tomorrow Night Blue".
So sieht es aus: