Einen Befehl "IfWinExist" gibt es nicht. Falls du "If WinExists(..)" meinst, achte auf die Schreibweise und in welcher Form die Parameter übergeben werden. Erklärt die Hilfe ausgiebig.
Beiträge von BugFix
-
-
Wie kommt ihr zu einer Änderung der Syntaxdarstellung? Wahrscheinlich die alte SciTE-Version erst deinstalliert, dummer Fehler.

Immer schön drüberinstallieren, dann bleiben auch eure Einstellungen erhalten.Die geänderte Darstellung in der Hilfe stört mich nicht. Wär ja schlimm, wenn man Code nur versteht, wenn er in ewig gleicher Syntaxdarstellung zu lesen ist.

-
Ich möchte mal nicht unerwähnt lassen, dass wir ein Forum zum Austausch von Gedanken, Ideen etc. in Zusammenhang mit der Skriptsprache AutoIt sind!
Wir haben nicht unbegründet die schwachsinnigen Postingzahl-Anzeigen in den Postings abgeschafft. Und da sollen wir uns freiwillig wie degenerierte Affen zu einer festen Zeit einfinden und jubilieren?
Nein Danke! Ich habe noch mehr als eine Hirnzelle und die sind zudem noch funktionsfähig.Fazit: 100% Schwachsinn.
-
Kann man dieses Tool auch so erweitern, dass auch diese paarigen Zeichen " < > " verarbeitet werden ?
Das ist machbar. Aber das braucht man doch i.A. bei html als Tag-Begrenzer - dann sollte doch als schließendes Element "/>" verwendet werden, oder?Edit:
Hier mal die Lösung, ersetze einfach diese Parts in deinem Skript. D.h. aber auch, dass du nicht mehr einfach "<" schreiben kannst - du erhältst automatisch das Gegenstück dazu.Code
Alles anzeigen-- german keyboard tCode['GE'] = {} tCode['GE']['SHIFT'] = { [50] = '"', [191] = "'", [56] = '(', [57] = ')', [226] = '>' } tCode['GE']['CTRL_ALT'] = { [55] = '{', [56] = '[', [57] = ']', [48] = '}' } tCode['GE']['RAW'] = { [226] = '<' } -- paired chars local tPairs = {} tPairs['Left'] = { ['('] = ')', ['{'] = '}', ['['] = ']', ['"'] = '"', ["'"] = "'", ["<"] = ">" } tPairs['Right'] = { [')'] = '(', ['}'] = '{', [']'] = '[', ['"'] = '"', ["'"] = "'", [">"] = "<" } -
Einfach mal Google benutzen?
GUIScroll-UDF - scrollbare GUIs
[ gelöst ] Gruppe oder Bereich in GUI scrollen -
Sehr seltsam, vielleicht irgendein Problem mit meinem Win7? (OS:WIN_7 Pro/Service Pack 1 CPU:X64 OS:X64)
Ich werde mal in der VM testen. -
Ich erstelle generell alle Listview so:
[autoit]$ID_LV = GuiCtrlCreateListview(..)
[/autoit]
; Handle holen für UDF
$hLV = GuiCtrlGetHandle($ID_LV)
Und jetzt ist erstmalig dieses Phänomen aufgetreten, meine Listview wurden nicht geleert, weil meine ItemCount-Abfrage mit dem Handle nicht ausgeführt wurde. Doch bis ich das herausgefunden hatte war eine Stunde "Fehler"suche notwendig. Denn wer rechnet schon damit, dass ein bisher immer auf diesem Weg funktionierender Ablauf plötzlich versagt. -
Ich habe noch nicht alle Funktionen durchgetestet, hier ein paar, die die ich gerade beim Wickel habe und die mich zur Fehlersuche gezwungen haben:
_GUICtrlListView_DeleteAllItems(NUR HANDLE)
_GUICtrlListView_GetColumnCount(NUR ID)
_GUICtrlListView_GetItemText(NUR ID)Bei den anderen habe ich noch nicht auf Ausschließlichkeit geprüft (habe ich auch nicht unbedingt Lust zu).
Ich werde lieber zurückkehren direkt zu den _SendMessage - Funktionen (eigentlich sollte die Listview-UDF ja eine komfortable Behandlung dieser Funktion darstellen).Im EN-Forum nachfragen? - Da hast du aber mehr Resonanz, wenn du einen Stein ins Wasser wirfst.

-
Ich bin gerade so richtig stinkig und damit es euch nicht auch so ergeht, will ich euch meinen Ärger nicht vorenthalten.
Ich schreibe seit geraumer Zeit an einem recht umfangreichen Skript (bereits mehrere tausend Zeilen Code) und dort sind auch einige Listview enthalten.
Bisher hatte ich mit der letzten AutoIt-Version gearbeitet, nun verwende ich die 3.3.8.0 und hier hat sich etwas Gravierendes getan, was mit keinem Wort in den Changes erwähnt wird:
Die meisten UDF-Funktionen arbeiten ausschließlich mit der ID! Ein übergebenes Handle wird ignoriert.
Das ist ja eine Perversion in sich, da die UDF in ihrer Funktion .._Create() ein Handle zurückgibt, dass nun für die weiteren Funktion fast nutzlos ist. Die notwendige ID erhält man aber nicht und muß sie sich per WinAPI-Funktion besorgen.Ich habe bald eine Stunde damit verbracht, diesen blöden Bug zu finden. Zumal ja nicht alle Funktionen betroffen sind. Einige verwenden ausschließlich das Handle. Völlig konfus diese UDF.
Da doch öfter Fragen nach sinnvollen Aufgaben gestellt werden, was man denn skripten kann. Das wäre eine sehr nützliche Aufgabe, die Listview-UDF entbuggen und in eine AutoIt-konforme Gestalt gießen.
Es ist mir ehrlich schleierhaft, wie dieses Gemurks in die offizielle AutoIt-Version übernommen werden konnte. :wacko: -
Mir scheint, dass du etwas viel Aufwand betreibst.
[autoit]
Ich wende das i.A. so an:$picBtnActive = "Pfad_aktive_Btn.bmp"
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$picBtnDeactive = "Pfad_deaktive_Btn.bmp"
...
...
$Btn_1 = GUICtrlCreateButton('', 10, 10, 25, 25, $BS_BITMAP)
GUICtrlSetImage(-1, $picBtnActive)
...
...Func _Switch($_ID) ; Status ändern und gleichzeitig Bild wechseln
[/autoit]
If BitAND(GUICtrlGetState($_ID), $GUI_DISABLE) Then
GUICtrlSetState($_ID, $GUI_ENABLE)
GUICtrlSetImage($_ID, $picBtnActive)
Else
GUICtrlSetState($_ID, $GUI_DISABLE)
GUICtrlSetImage($_ID, $picBtnDeActive)
EndIf
EndFunc -
Beim Erstellen von Pattern kommt es auf genaue Angaben möglicher Inhalte an. Ich vermute, dass in dem ungewollten roten Bereich auch Nicht-Text-Zeichen enthalten sind (Tag-Abgrenzungen), die dann das Ergebnis verfälschen. Zumindest auf das von dir eingestellte Muster trifft das Pattern 100%-ig.

-
schade, ich war wohl zu ungenau - sorry
[autoit]
Ich versteh dich nicht: Genau das kommt als Ergebnis raus, vielleicht hast du das falsche Flag gesetzt?#include <Array.au3>
[/autoit]
$s = '<h1><a href="httpx://aa-aaaaa.aa/aaaaee-aaaaa-aaaa-aaa-aaa-aaa/">bbb.bbb.bbb.bbb.bbb-bbb</a></h1>'
$a = StringRegExp($s, '(?:">)(.+)(?></a)', 3)
_ArrayDisplay($a) -
Bitte:
'(?:">)(.+)(?></a)' -
Deine Frage ist viel zu ungenau. Daraus läßt sich kein verläßliches Pattern erstellen.
Steht dort wirklich das Wort "ignorieren" oder ein beliebiger Inhalt?
Ist der Anfang (wort) und das Ende (endesatz) ein Wort (alphabetisch) oder ist es alphanumerisch oder tatsächlich "endesatz" ?Wenn man nicht weiß, welche Zeichen in den einzelnen "Wörtern" enthalten sein können, ist es unmöglich ein treffsicheres Pattern zu gestalten.
-
Funktioniert, ist aber, wie schon erwähnt, aus meiner Sicht erher unschön.
Was ist daran "unschön"? Es ist funktionell, einfach zu handhaben und erfüllt seinen Zweck zur Zufriedenheit. Und wenn du es zur "schönen" Lesbarkeit im Skript in eine Funktion auslagerst (State setzen und Bildzuweisung) ist doch alles im grünen Bereich.
Und zusätzlich ist diese Lösung auch noch diejenige, die die wenigsten Ressourcen beansprucht - finde ich "schön".
-
Ich vermute mal (Skript hast du ja nicht gezeigt), dass du den Text mit _FileReadToArray() einliest.
[autoit]
Dann arbeitest du das ja zeilenweise ab. Einfach in der Schleife abfragen:If StringLeft($array[$i], 1) = "@" Then ContinueLoop
[/autoit] -
1. Bitte setze Code in Code-Tags (wozu haben wir die im Editor?). Code als Plain-Text läßt sich beim besten Willen nicht lesen.
2. Deine SciTEStartup.lua sollte etwa Folgendes enthalten (die zwingend erforderlichen Einträge habe ich mit "X" markiert:
Spoiler anzeigen
Code
Alles anzeigen-- A table listing all loaded files. X LoadLuaFileList = { } -------------------------------------------------------------------------------- -- LoadLuaFile(file, directory) -- -- Helper function for easily loading Lua files. -- -- Parameters: -- file - The name of a Lua file to load. -- directory - If specified, file is looked for in that directory. By default, -- this directory is $(SciTEDefaultHome)\Lua. -------------------------------------------------------------------------------- X function LoadLuaFile(file, directory) if directory == nil then directory = props["SciteDefaultHome"] .. "\\Lua\\" end table.insert(LoadLuaFileList, directory .. file) dofile(directory .. file) end -- LoadLuaFile() -- Load all the Lua files. X LoadLuaFile("Class.lua") -- Always load first. X LoadLuaFile("Common.lua") -- Always load second. LoadLuaFile("AutoItPixmap.lua") LoadLuaFile("AutoHScroll.lua") LoadLuaFile("AutoItAutoComplete.lua") LoadLuaFile("LoadSession.lua") LoadLuaFile("AutoItIndentFix.lua") LoadLuaFile("EdgeMode.lua") LoadLuaFile("SmartAutoCompleteHide.lua") LoadLuaFile("Tools.lua") X LoadLuaFile("AutoItTools.lua") LoadLuaFile("AutoItGotoDefinition.lua") -- Start up the events (Calls OnStartup()). X EventClass:BeginEvents() LoadLuaFile("CommentsDelHide.lua") LoadLuaFile("EdgingSelection.lua") LoadLuaFile("EditOperations.lua") LoadLuaFile("AutoStampSaveVersion.lua") LoadLuaFile("LUA_TEST.lua") LoadLuaFile("MyDebug.lua") LoadLuaFile("AU3FuncsShow.lua") LoadLuaFile("HiResTimer.lua") LoadLuaFile("ManageIncludes.lua") LoadLuaFile("CamelJump.lua") LoadLuaFile("script_sql.lua") X LoadLuaFile("ContinuousComments.lua") LoadLuaFile("VarGetTipp.lua")Verwende mal die OnKey-Funktion mit Konsolenausgabe:
Spoiler anzeigen
Code
Alles anzeigenfunction CommentHitKey:OnKey(_keycode, _shift) if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv local fBreak = isLFpos() print('Umbruchposition erreicht:', fBreak) -- Gibt an ob Umbruchposition erreicht true/false if fIsEnter then fIsEnter = false local s, e = getSpaces(), '' if charBreak2:len() > 0 then e = charBreak2..' ' end editor:InsertText(editor.CurrentPos, s..charComm..e) editor:LineEnd() end if _keycode == 13 then print('<ENTER>') -- Enter betätigt fIsEnter = true editor:InsertText(editor.CurrentPos, ' '..charBreak1) editor:LineEnd() elseif _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel) print('Umbruchposition und Space ==> jetzt muß Umbruch erfolgen') fNext = true -- Marker neue Zeile elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel) fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile print('<Pfeil Ab> gedrückt') elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen fNext = false if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert): editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen end print('Jetzt wird Kommentarmarkierung in Folgezeile/od. nach Pfeil-ab in aktueller Zeile geschrieben') ContinuousComment() end end return nil endDann sollte man den Fehler besser lokalisieren können.
-
ContinuousComment.NewLine.WithEnter.Enable.*.au3'
Hier mußt du natürlich den Wert für diese propertie anhängen (steht auch so in der Beschreibung), es muß also so aussehen:
ContinuousComment.NewLine.WithEnter.Enable.*.au3=1Und die Funktion hast du etwas zerlegt, so ist sie kpl. und funktionsfähig:
Spoiler anzeigen
Code
Alles anzeigenfunction CommentHitKey:OnKey(_keycode, _shift) if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv local fBreak = isLFpos() if fIsEnter then fIsEnter = false local s, e = getSpaces(), '' if charBreak2:len() > 0 then e = charBreak2..' ' end editor:InsertText(editor.CurrentPos, s..charComm..e) editor:LineEnd() end if _keycode == 13 then fIsEnter = true editor:InsertText(editor.CurrentPos, ' '..charBreak1) editor:LineEnd() elseif _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel) fNext = true -- Marker neue Zeile elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel) fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen fNext = false if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert): editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen end ContinuousComment() end end return nil end -
Also, nicht weiß, ob Defrag nicht schon vom System gestoppt wird?
Wenn du ein System kaufst mit SSD, ist durch die Management-Software Defrag bereits deaktiviert. Wer sich aber selber eine SSD einbaut und nicht allzu erfahren ist, könnte durchaus vergessen das still zu legen. Insofern ist eine solche Überprüfung als zusätzlicher Sicherheitsfaktor sicher nicht verkehrt. -
Das funktioniert ebenso unter Win7 (sowohl 32Bit als auch 64Bit).