Beiträge von BugFix
-
-
==> The requested action with this object has failed.
Dasselbe habe ich auch.
Übrigens erhalte ich nur für 18 Parameter überhaupt einen Wert, 13 bleiben leer.
Diese Werte werden befüllt:
"Caption"
"CurrentLanguage"
"Description"
"InstallableLanguages"
"Manufacturer"
"Name"
"PrimaryBIOS"
"ReleaseDate"
"SerialNumber"
"SMBIOSBIOSVersion"
"SMBIOSMajorVersion"
"SMBIOSMinorVersion"
"SMBIOSPresent"
"SoftwareElementID"
"SoftwareElementState"
"Status"
"TargetOperatingSystem"
"Version"
-
ich glaube du hast was auf den Augen. Am besten du lädst die Seite nochmal
Ich kann alle Änderungen nachverfolgen
. Und in: Version vom 19. Oktober 2017, 17:18 (alpines) war dem noch so. -
alpines: Jetzt hast du ja auch die Globals in der Func belassen.

-
Wenn man allerdings - wie ich - von einem allgemeinen regelkonformen JSON-String ausgeht dann muss man auch daran denken dass Anführungszeichen escaped werden können
Stimmt, das hatte ich gar nicht bedacht. Da hatte ich zu sehr auf den Bsp-String geschaut.
-
Bei Regex führen viele Wege zum Ziel. Ich arbeite gern mit Negation, weil das das Pattern meist deutlich kürzt (und somit lesbarer macht).
$s_Type = StringRegExp($sReceived,'"id"\s*:\s*"([^"]+)', 1)[0]
EDIT:
Die Fragestellung hat ja nur am Rande mit der UDF zu tun und gehört m.M. nach in H&U.
Ich trenne daher den Bereich ab und verschiebe dorthin.
-
Da wir hier keine Bibliothek mit allen Fensterklassen/Controlnamen etc. aller existierenden Installationsprogramme rumliegen haben, wäre es mehr als hilfreich, wenn du zum Einen die Angaben zu allen Fenster-/Controlnamen bekannt gibst und zum Anderen dein bisheriges Skript zeigst.
-
Interessant und krass. Ist mir in all meinen AutoIt-Jahren nie aufgefallen. Allerdings wohl auch deshalb, weil ich im Normalfall kopiere und erst bei Erfolg die Quelle lösche.
-
wenn man die Textausrichtung ($iAlign = 0|1|2 - left|right|centered) mit angeben könnte.
Das ist machbar, werde ich aber nicht als Parameter für die Erstellung integrieren, sondern dann als Zusatzfunktion _SetAlign().
wenn man links neben dem Text noch ein Icon platzieren könnte.
Grundsätzlich ist alles machbar, was man mit einem Fenster machen kann. Jedoch würde ich mir das dann für später aufheben, weil ich dann die Größenkalkulation verändern muss. Wobei ich das Icon nicht neben den Text, sondern top links neben dem Titel platzieren würde.
Dafür benötigt man eigentlich keine zusätzlichen Funktionen.
Stimmt natürlich, ich hätte die Events auch nur gecastet - aber das wäre overdressed.

Ich mache jetzt erst mal die fehlerbereinigte Version fertig, in der auch alle Parameteränderungen zur Laufzeit funktionieren (momentan noch nicht kpl.). Dann werde ich mich den Wünschen widmen.
-
Die Links sind im gesamten Forum tot. Das hängt mit dem Umzug auf das neue Board zusammen. Ist aber in Arbeit, soweit ich weiß.
Also noch etwas Geduld.
-
Prima, da die Stolpersteine nun identifiziert sind, kann ich mich ans Feintuning machen. Ein paar Kleinigkeiten sind noch zu erledigen und dann gibt es die finale Version.
-
Tuxedo Das kann ich nicht reproduzieren. Das Verhalten ist bei mir identisch, egal ob kompiliert oder als Run in SciTE. Ich verwende die SciTE Version 3.4.4 und AutoIt Stable 3.3.14.2
Bei mir läuft Win 7 Pro x64.
So wie du es beschreibst, verursacht _Timer_KillTimer() diesen Crash.
Ich habe mal in den Tickets gesucht und #3513 dazu gefunden, geht hier um _Timer_KillAllTimers(), sollte aber vergleichbar sein.
Kernaussage:
- Wenn _Timer_KillAllTimers() mit AutoIt 64bit in SciTE4AutoIt genutzt wird, kommt es zum Crash
- Mit AutoIt 32bit in SciTE4AutoIt tritt der Fehler nicht auf
- Ebenso nicht mit der Lite-Version von SciTE
- Mit der AutoItversion (3.3.12.0) war dieses Verhalten auch nicht vorhanden
Aber wenn ich deine Fehlermeldung betrachte, wird nicht die 64bit Version von AutoIt gestartet. Insofern ist das dann wohl nicht in der Form relevant. Wobei ich aber als "Übeltäter" eindeutig _Timer_KillTimer() sehe. Vom Ablauf her ist das die einzige Möglichkeit zum Crash.
-
Danke dir. Wie es aussieht, war es das. Mal noch im Langzeittest stehen lassen, aber zumindest ist jetzt der Arbeitsspeicher konstant.
-
Ich baue das jetzt mal um, muss dazu aber den Ablauf ändern. Dann können wir neu testen.
Könnte aber etwas dauern, bis ich fertig bin.
-
OK, Danke erst mal fürs Probieren.
Ich habe eine Vermutung:
Beim Erstellen der Control verhindere ich das Kollidieren der Callbackaufrufe durch ein kleines Sleep. Aber irgendwann wird wohl in Summierung der Differenzzeiten eine Kollision unausweichlich und während eine Callbackprozedur gerade abgearbeitet wird, grätscht schon der nächste Aufruf rein. Nun muss ich mal sehen, wie da am besten eine "Warteschlange" hinbekomme.
-
Den Sample-Code verstehe fast vollständig, vom UDF-Code selbst verstehe ich leider nur etwa die Hälfte.
Beim UDF-Code ist eigentlich der Kernpunkte die _Create-Funktion. Hier werden die Fenster erstellt, ihre Parameter in Arrays gespeichert, die Arrays der zentralen Verwaltung zugeführt.
Die Timergesteuerte Callback-Funktion prüft halt nur ob - und wenn ja - was neu gezeichnet werden soll und initiiert das dann.
Alle anderen Funktionen dienen der Parameterverwaltung /-änderung.
eventuell nach einem Memory-Überlauf oder eine Art Speicherschutzverletzung.
Das klingt recht wahrscheinlich.
Und manchmal muss man Dinge einfach mal aufschreiben um nochmal besser drüber nachdenken zu können. Ich habe mir aufgrund deiner Vermutung nochmals die Callback-Funktion angeschaut: Wie es aussieht habe ich vergessen beim Freigeben der Ressourcen einen DC zu löschen.
In Zeile #653 (Gradienterstellung) hole ich mir den DC Local $hDC = _WinAPI_GetDC($hWnd), gebe ihn aber nicht wieder frei.
Das sollte sich beheben lassen, mit einem _WinAPI_DeleteDC($hDC), einzufügen in Zeile #718.
Vielleicht kannst du mal ausgiebig testen, ob es jetzt rund läuft.
Ich hatte noch als Idee, die Funktionen _GuiCtrlBusy_RegisterSingleClick($hWnd, "function") und _GuiCtrlBusy_RegisterDoubleClick($hWnd, "function") zu erstellen, die dann entsprechend Klick/Doppelklick auf das Control auswerten. Wäre das interessant/nützlich/sinnvoll?
-
Hier mal als Muster für die Dateinamen, die mit dem Datum beginnen (0516... / 2.17...)
AutoIt
Alles anzeigen; Verwende Dateinamen ohne Endung zum Umbau ; Bsp. 2.17 Dateiname.txt $sFileName = '2.17 Dateiname' $sExt = '.txt' ; mach es einfach in mehreren Schritten, ist verständlicher, als ein allumfassendes Pattern zu basteln $aMatch = StringRegExp($sFileName, '^(\d{1,2})\.*(\d+)\s*(.+)$', 3) ; $aMatch[0] = 2 ; $aMatch[1] = 17 ; $aMatch[2] = Dateiname $sResult = $aMatch[2] & ' ' & String( 2000 + Number($aMatch[1]) ) & '-' & StringFormat('%02d', $aMatch[0]) & $sExt ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sResult --> " & $sResult & @LF) -
-
So, hier mein abschliessender Beitrag.
ich habe jetzt, wie in Post #22 beschrieben, die Prüfungen vorgenommen. Dadurch sind mir auch die Dopplungen aufgefallen.
Diese Version funktioniert jetzt, die Doppel sind aber nicht enthalten:
AutoIt
Alles anzeigen#include <GUIListView.au3> Opt('GUIOnEventMode', 1) Global $SF = StringFormat Global $sPathItem = $SF('%s\defineItem.h', @ScriptDir) Global $sPathPropItem = $SF('%s\propItem.txt', @ScriptDir) Global $sPathPropItemTxt = $SF('%s\propItem.txt.txt', @ScriptDir) Global $sPathResult = $SF('%s\\result.txt', @ScriptDir) Global $timer = TimerInit() Global $aItem = StringRegExp(FileRead($sPathItem), '(?<=\r\n)#define\s+([\S\T]+)\s+(\d+)', 3) ; Index 0 (+2/4/6...) = Key II_WEA_AXE_RODNEY ; Index 1 (+2/4/6...) = Value 81 Global $oItem = ObjCreate('Scripting.Dictionary') For $i = 0 To UBound($aItem) -2 Step 2 $oItem.Add($aItem[$i], $aItem[$i+1]) ; ItemDefine = ID Next Global $aPropItem = StringRegExp(FileRead($sPathPropItem), '(?<=\r\n)\d+\t+([\w_\d]+)\t+([\S]+)\s+', 3) ; Index 1 (+2/4/6...) = Key IDS_PROPITEM_TXT_000124 ; Index 0 (+2/4/6...) = Value II_WEA_AXE_RODNEY Global $oProp = ObjCreate('Scripting.Dictionary') For $i = 0 To UBound($aPropItem) -2 Step 2 If Not $oProp.Exists($aPropItem[$i+1]) Then $oProp.Add($aPropItem[$i+1], $aPropItem[$i]) ; Text-Identifier = ItemDefine EndIf Next ; GUI $hGUI=GUICreate("Item-Lister", 900, 800) $hList = GUICtrlCreateListView("Item Code|DEFINE|Item Name|Item Text", 20, 20, 860, 650) _GUICtrlListView_SetColumn($hList, 0, 'ITEM-ID', 60, 0) ; 2. Spalte = 470 Px breit, rechts ausgerichtet _GUICtrlListView_SetColumn($hList, 1, 'Itenname', 240, 0) ; 2. Spalte = 470 Px breit, rechts ausgerichtet _GUICtrlListView_SetColumn($hList, 2, 'Itenbeschreibung', 356, 0) ; 2. Spalte = 470 Px breit, rechts ausgerichtet _GUICtrlListView_SetColumn($hList, 3, 'Define', 180, 0) ; 1. Spalte = 40 Px breit, links ausgerichtet GUISetOnEvent(-3, "_close") Global $aItemTxt = StringRegExp(FileRead($sPathPropItemTxt), '(IDS_(?:PROPITEM|UNBIND)\w+\d+)([^\r]+)', 3) ; Index 0 (+2/4/6...) = Key IDS_PROPITEM_TXT_000124 ODER: Beschreibung-Identifier ; Index 1 (+2/4/6...) = Value Rodney Axe ODER: Beschreibung-Text Global $sResult = '' Global $sLVItem = '', $iID, $sIdent, $sTxt, $sDescript For $i = 0 To UBound($aItemTxt) -2 Step 2 $sDescript = '' If $oProp.Exists($aItemTxt[$i]) Then ; Eintrag ist Text-Identifier $sIdent = $oProp.Item($aItemTxt[$i]) ; Item Define $iID = Number($oItem.Item($sIdent)) ; ID $sTxt = StringStripWS($aItemTxt[$i+1], 1+2) ; Name ; Folgeeintrag kein Text-Identifier --> Beschreibung If ($i < UBound($aItemTxt) -2) And (Not $oProp.Exists($aItemTxt[$i+2])) Then $sDescript = StringStripWS($aItemTxt[$i+3], 1+2) EndIf ; ID | Name | Beschreibung | ItemDefine ; 81 | Rodney Axe | | II_WEA_AXE_RODNEY $sLVItem = $SF('%s|%s|%s|%s', $iID, $sTxt, $sDescript, $sIdent) $sResult &= $SF('%s%s', $sLVItem, @CRLF) GUICtrlCreateListViewItem($sLVItem, $hList) EndIf Next ConsoleWrite($SF('Time used: %0.1f s', TimerDiff($timer)/1000) & @CRLF) ; Schreiben in Datei Global $fH = FileOpen($sPathResult, 2+8) FileWrite($fH, $sResult) FileClose($fH) GUISetState() While True Sleep(50) WEnd Func _close() Exit EndFunc -
Mal zu deiner Info:
Die Datei propItem.txt enthält etliche Doppel, d.h. die folgenden Schlüssel IDS_PROPITEM_TXT_... werden mehrfach verwendet:
Spoiler anzeigen
DOPPEL: IDS_PROPITEM_TXT_002080 - II_ARM_M_BLA_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001536 - II_ARM_M_BLA_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002624 - II_ARM_M_BLA_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003168 - II_ARM_M_BLA_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002148 - II_ARM_F_BLA_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001604 - II_ARM_F_BLA_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002692 - II_ARM_F_BLA_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003236 - II_ARM_F_BLA_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002488 - II_ARM_M_ELE_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001944 - II_ARM_M_ELE_HELMET05
DOPPEL: IDS_PROPITEM_TXT_003032 - II_ARM_M_ELE_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003576 - II_ARM_M_ELE_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002556 - II_ARM_F_ELE_SUIT05
DOPPEL: IDS_PROPITEM_TXT_002012 - II_ARM_F_ELE_HELMET05
DOPPEL: IDS_PROPITEM_TXT_003100 - II_ARM_F_ELE_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003644 - II_ARM_F_ELE_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002468 - II_ARM_M_PSY_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001924 - II_ARM_M_PSY_HELMET05
DOPPEL: IDS_PROPITEM_TXT_003012 - II_ARM_M_PSY_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003556 - II_ARM_M_PSY_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002536 - II_ARM_F_PSY_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001992 - II_ARM_F_PSY_HELMET05
DOPPEL: IDS_PROPITEM_TXT_003080 - II_ARM_F_PSY_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003624 - II_ARM_F_PSY_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002060 - II_ARM_M_KIN_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001516 - II_ARM_M_KIN_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002604 - II_ARM_M_KIN_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003148 - II_ARM_M_KIN_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_002128 - II_ARM_F_KIN_SUIT05
DOPPEL: IDS_PROPITEM_TXT_001584 - II_ARM_F_KIN_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002672 - II_ARM_F_KIN_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003216 - II_ARM_F_KIN_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_012950 - II_GEN_GEM_GEM_CHAINSAWKR
DOPPEL: IDS_PROPITEM_TXT_013428 - II_GEN_FOO_CHRISTMASGMCAKE01
DOPPEL: IDS_PROPITEM_TXT_006994 - II_ARM_S_CLO_MAS_ANGEL01
DOPPEL: IDS_PROPITEM_TXT_006992 - II_ARM_S_CLO_MAS_DEVIL01
DOPPEL: IDS_PROPITEM_TXT_004990 - II_ARM_S_CLO_HAT_MUSHROOM01
DOPPEL: IDS_PROPITEM_TXT_004988 - II_ARM_S_CLO_HAT_STATHAT01
DOPPEL: IDS_PROPITEM_TXT_001672 - II_ARM_M_RAG_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002216 - II_ARM_M_RAG_SUIT05
DOPPEL: IDS_PROPITEM_TXT_002760 - II_ARM_M_RAG_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003304 - II_ARM_M_RAG_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_001740 - II_ARM_F_RAG_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002284 - II_ARM_F_RAG_SUIT05
DOPPEL: IDS_PROPITEM_TXT_002828 - II_ARM_F_RAG_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003372 - II_ARM_F_RAG_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_003420 - II_ARM_M_RIN_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_001788 - II_ARM_M_RIN_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002332 - II_ARM_M_RIN_SUIT05
DOPPEL: IDS_PROPITEM_TXT_002876 - II_ARM_M_RIN_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_003488 - II_ARM_F_RIN_BOOTS05
DOPPEL: IDS_PROPITEM_TXT_001856 - II_ARM_F_RIN_HELMET05
DOPPEL: IDS_PROPITEM_TXT_002400 - II_ARM_F_RIN_SUIT05
DOPPEL: IDS_PROPITEM_TXT_002944 - II_ARM_F_RIN_GAUNTLET05
DOPPEL: IDS_PROPITEM_TXT_008848 - II_SYS_SYS_SCR_EVEAMPESS