Beiträge von autoBert
-
-
Wollte deinen Updater gerade loben, schien problemlos durchzulaufen doch nach 88%:54_ISN AutoIt Studio - Update.jpg
passierte mir mit FF bei Downloads von deiner Seite auch immer, aber was solls spätestens am 14.05. kann ich es problemlos ziehen. Ich hoffe, daß damit die Bug's die ich nach Änderung der Schrift und deren Größe hatte dann erledigt sind. Im Moment zoome ich die Schriftgröße im Editor wieder per MousePadgesten. Wenn ich es über dein Einstellungen mache wirkt sich dies auch auf andere Fenster aus.Was ich bisjetzt gesehen habe sieht gut aus so daß ich es evtl. weiter benutze, besonders der Scriptbaum gefällt mir. Eigentlich wollte ich nur checken, ob der DAU oder ISN Schuld ist an Func in Func, es ist der DAU wie schon erwartet.
-
Ja, ich habe es in Programme installieren wollen. Versuche es jetzt mit dem Installer in c:\ISN AutoIt Studio hat geklappt. Wie groß ist denn das Update?
Edit: Habe gleich eine Frage, lassen sich die Farben individuell einstellen? Der Kontrast bei weißem Hintergrund geht etwas arg auf meine alte Augen.
-
Ist mit den diversen BugFixes auch die scheiternde Installation behoben? Ich habe gestern (neuer Nutzungszeitraum = HighSpeed surfen) 20% meines Volumens für nichts geopfert. Sowohl beim Installer als auch mit dem Zipfile lande ich in einer Installationschleife. Ich will Portable Installation installieren, habe alles durchgeklickt, nach der 'Viel Spaß...'-Meldung. startet aber wieder die Sprchauswahl.
Nächsten Versuch kann ich zwar erst am 14. Mai wieder starten (Highspeedvolumen verbraucht) will es dann aber nicht wieder unnütz opfern. Ohne schlägt der Download leider immer fehl.
-
Diesem Post: https://www.autoitscript.com/forum/topic/181840-stop-a-service-require-an-answer/?do=findComment&comment=1305905 entnehme ich, daß es über die Kommandozeile funktioniert.
-
-
Nice, aber Traue keiner
StatistikNormalverteilung, wenn du sie nicht selbst gefakt hast. -
na ja solange du nicht selbst auf dem Ast sitzt kannst du ja daran sägen und dich wundern warum es nicht klappt.
Schlimmer wäre es so:
Ast.gifSpoiler anzeigen
ZitatIch habe aber keine Einwände dagegen, wenn man sich einzelne Grafiken auf dem eigenen Rechner abspeichert und verwendet, ohne den Copyright - Hinweis zu entfernen.
-
Tur mir Leid, dass ich deine Zeit verschwende - ich verstehe es einfach nicht.
Ich hab jetzt alles ausprobiert, die Hilfe gelesen, aber ich verstehe die Terminologie einfach nicht; begreife noch nicht Mal zu 100%, was welcher Befehl tatsächlich macht.mit etwas Übung könnte gelingen, außerdem scheint mir du bist von der Mächtigkeit der StringRegExpReplace-Funktion überfordert.
Jetzt verstehe ich auch, warum ihr Programmierer so gut bezahlt werdet.
bei mir hat der letzte Job zu einem schicken Avatar gereicht 
Vielleicht ist @Kanashius ja auch mit einem :cookie oder
zufrieden? Muß ja nicht jeder so ein schickes Auto haben

-
das ging jetzt aber fix. Hat es Dich nicht in Ruhe gelassen ?
wenn ich am Samstag nicht etwas vorgehabt hätte, wäre es sicher noch am Samstag erledigt gewesen. War im Endeffekt nur eine Zeile einfügen, zuvor hatte ich eine vorsichtshalber geändert. Da die Änderung keinen Erfolg hatte, habe ich zur Ursachesuche diese 1 Zeile eingesetzt und eine MsgBox dahinter. Die Anzeige vor der MsgBox lieferte das erwartete Ergebnis und auch das danach erfolgende Resizing funktionierte noch. Jetzt mußte ich nur noch die MsgBox entfernen und den Parameter von GuiSetState abändern, damit das nervige Anzeigeverhalten bei der Erstellung weg war und fertig.
P.S. Deine Ideen in Sachen ArrrayDisplay sind gut - und nice to have. Erinnert dann ja fast an eine Excel Tabelle.
Aber sicherlich muss man abschätzen wie Aufwand zu Ertrag steht ..Nein, ich will das SpreadSheet nicht neu erfinden, Formeln kommen mit Sicherheit keine. Der Aufwand hält sich in Grenzen, ist ja schon für andere eigene Projekte teilweise vorhanden. Also Copy&Paste danach Search&Replace, dann noch vervollständigen. Da ich nur Zeilenweise Einfärben bzw. Tooltip anzeigen lassen will ist es einfach und dürfte auch noch performat genug sein. Das dies auch für einzelne Zellen möglich ist weiß ich, befürchte aber einerseits Performanceverlust und für ein einfaches Debug-/Anzeigetool übertrieben.
Gruß (auto)Bert
-
Schau dir das Besipspiel-Skript zu _GUIScrollBars_Init an.
-
Im Entwicklerforum gibt's eine Chrome UDF, die sollte dies doch können.
Meineswissens wird mit STRG+F6 in allen Browsern die Url markiert, und an STRG+C hält sich doch wohl auch jeder. Ein anschließendes ClipGet holt sich dann die URL aus dem ClipBoard.
Eine dauerhafte Lösung wäre natürlich besser also diese URL sperren.
Was ich aber nicht verstehe: Wie jemand auf deinem Laptop überhaupt eine URL von anderen aufgerufen werden kann während du daran arbeitest? Einfach zu Beginn des Unterichts neustarten und bei evtl. Pausen sperren!
-
an den Schnipseln kann ich keine Ursache erkennen, habe den HotKeySet in Verdacht. Außerdem könntest du den Code nach Opt('GUICloseOnESC') durchsuchen und auf 1 setzen.
Wenn du das ganze Skript postest bzw. per PN schickst, versuch ich mal den/die Bugs zu finden. -
Falls diese AddOn nicht das hält was es verspricht:
Mit eazyAuction wird das Handeln auf Amazon und eBay direkt aus unserer Warenwirtschaft zum Kinderspiel.Angebotserstellung, -überwachung und -abwicklung werden direkt in JTL-Wawi bewerkstelligt. Mit Hilfe eines integrierten Hintergrunddienstes kann der Abgleich zu Ihren Marktplätzen komplett automatisiert durchgeführt werden. Dabei ist eazyAuction auf große Angebotsvolumen bestens vorbereitet.
kann doch spätestens mit diesem Wissen:
Eingesetzt wird JTL-Wawi bereits von vielen Tausend kleinen und mittleren Unternehmen zwischen 1-100 Mitarbeitern und einem Sendungsaufkommen von bis zu 50.000 Sendungen im Monat. Dank neuster .Net Technologie sowie einer leistungsstarken Microsoft SQL Server Datenbank ist JTL-Wawi auf große Datenvolumina und gleichzeitige Nutzung beliebig vieler Ihrer Mitarbeiter bestens vorbereitet.
und einer Analye von JTL-Wawi und deren eingestzten Module und des Datenbankdesigns zumindest ein Spezilist den Datenabgleich programmieren.
-
Hier ist die aktualisierte _MyArrayDisplay:
Spoiler anzeigen
AutoIt
Alles anzeigen#include-once #include <array.au3> #include <GuiListview.au3> Func _MyArrayDisplay(Const ByRef $avArray, $sTitle = "Array: ListView Display", $sCols = 0, $iItemLimit = -1, $iTranspose = 0, $sSeparator = "", $sReplace = "|", $sHeader = "") ;last changed autoBert 10.04.2016 If Not IsArray($avArray) Then Return SetError(1, 0, 0) $aCols = StringSplit($sCols, "|") ; Dimension checking Local $iDimension = UBound($avArray, 0), $iUBound = UBound($avArray, 1) - 1, $iSubMax = UBound($avArray, 2) - 1 If $iDimension > 2 Then Return SetError(2, 0, 0) ; Separator handling ;~ If $sSeparator = "" Then $sSeparator = Chr(1) If $sSeparator = "" Then $sSeparator = Chr(124) ; Check the separator to make sure it's not used literally in the array If _ArraySearch($avArray, $sSeparator, 0, 0, 0, 1) <> -1 Then For $x = 1 To 255 If $x >= 32 And $x <= 127 Then ContinueLoop Local $sFind = _ArraySearch($avArray, Chr($x), 0, 0, 0, 1) If $sFind = -1 Then $sSeparator = Chr($x) ExitLoop EndIf Next EndIf ; Declare variables Local $vTmp, $iBuffer = 64 Local $iColLimit = 250 Local $iOnEventMode = Opt("GUIOnEventMode", 0), $sDataSeparatorChar = Opt("GUIDataSeparatorChar", $sSeparator) ; Swap dimensions if transposing If $iSubMax < 0 Then $iSubMax = 0 If $iTranspose Then $vTmp = $iUBound $iUBound = $iSubMax $iSubMax = $vTmp EndIf ; Set limits for dimensions If $iSubMax > $iColLimit Then $iSubMax = $iColLimit If $iItemLimit < 1 Then $iItemLimit = $iUBound If $iUBound > $iItemLimit Then $iUBound = $iItemLimit ; Set header up If $sHeader = "" Then $sHeader = "Row " ; blanks added to adjust column size for big number of rows For $i = 0 To $iSubMax $sHeader &= $sSeparator & "Col " & $i Next EndIf ; Convert array into text for listview Local $avArrayText[$iUBound + 1] For $i = 0 To $iUBound $avArrayText[$i] = "[" & $i & "]" For $j = 0 To $iSubMax ; Get current item If $iDimension = 1 Then If $iTranspose Then $vTmp = $avArray[$j] Else $vTmp = $avArray[$i] EndIf Else If $iTranspose Then $vTmp = $avArray[$j][$i] Else $vTmp = $avArray[$i][$j] EndIf EndIf ; Add to text array $vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1) $avArrayText[$i] &= $sSeparator & $vTmp ; Set max buffer size $vTmp = StringLen($vTmp) If $vTmp > $iBuffer Then $iBuffer = $vTmp Next Next $iBuffer += 1 ; GUI Constants Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 0x66 Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 0x40 Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 0x0200 Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 0x2 Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 0x4 Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3 Local Const $_ARRAYCONSTANT_LVIF_PARAM = 0x4 Local Const $_ARRAYCONSTANT_LVIF_TEXT = 0x1 Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (0x1000 + 29) Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (0x1000 + 4) Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (0x1000 + 44) Local Const $_ARRAYCONSTANT_LVM_INSERTITEMW = (0x1000 + 77) Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54) Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (0x1000 + 76) Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 0x20 Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 0x1 Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 0x8 Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 0x0200 Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 0x00010000 Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 0x00020000 Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 0x00040000 Local Const $_ARRAYCONSTANT_tagLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns" Local $iAddMask = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM) Local $tBuffer = DllStructCreate("wchar Text[" & $iBuffer & "]"), $pBuffer = DllStructGetPtr($tBuffer) Local $tItem = DllStructCreate($_ARRAYCONSTANT_tagLVITEM), $pItem = DllStructGetPtr($tItem) DllStructSetData($tItem, "Param", 0) DllStructSetData($tItem, "Text", $pBuffer) DllStructSetData($tItem, "TextMax", $iBuffer) ; Set interface up Local $iWidth = 64, $iHeight = 480 Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX)) Local $aiGUISize = WinGetClientSize($hGUI) GUISetState(@SW_HIDE) Local $hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[1] - 26, $iHeight - 48, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS) Local $hCopy = GUICtrlCreateButton("Copy Selected", 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20) GUICtrlSetResizing($hListView, 102);$GUI_DOCKBORDERS GUICtrlSetResizing($hCopy, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE) ; Fill listview Local $aItem For $i = 0 To $iUBound If GUICtrlCreateListViewItem($avArrayText[$i], $hListView) = 0 Then ; use GUICtrlSendMsg() to overcome AutoIt limitation $aItem = StringSplit($avArrayText[$i], $sSeparator) DllStructSetData($tBuffer, "Text", $aItem[1]) ; Add listview item DllStructSetData($tItem, "Item", $i) DllStructSetData($tItem, "SubItem", 0) DllStructSetData($tItem, "Mask", $iAddMask) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $pItem) ; Set listview subitem text DllStructSetData($tItem, "Mask", $_ARRAYCONSTANT_LVIF_TEXT) For $j = 2 To $aItem[0] DllStructSetData($tBuffer, "Text", $aItem[$j]) DllStructSetData($tItem, "SubItem", $j - 1) GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETITEMW, 0, $pItem) Next EndIf Next ;************************************************************************************ $iWidth = _GUICtrlListView_GetColumnWidth($hListView,0) $iColCount = _GUICtrlListView_GetColumnCount($hListView) ;ConsoleWrite($aCols) For $i = 1 To $iColCount - 1 If IsArray($aCols) Then _GUICtrlListView_SetColumnWidth($hListView, $i, Number($aCols[$i])) ConsoleWrite($i & ": " & $aCols[$i]&@CRLF) If $aCols[$i] = -1 Then ;ConsoleWrite(" AutoSize") _GUICtrlListView_SetColumnWidth($hListView, $i, $LVSCW_AUTOSIZE) EndIf EndIf $iWidth += _GUICtrlListView_GetColumnWidth($hListView,$i) ConsoleWrite('With: ' &$iWidth&@CRLF) Next ;************************************************************************************ #cs ; adjust window width $iWidth = 0 For $i = 0 To $iSubMax + 1 $iWidth += GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0) Next #ce If $iWidth < 250 Then $iWidth = 230 $iWidth += 20 If $iWidth > @DesktopWidth Then $iWidth = @DesktopWidth - 100 WinMove($hGUI, "", (@DesktopWidth - $iWidth) / 2, Default, $iWidth) ; Show dialog GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE ExitLoop Case $hCopy Local $sClip = "" ; Get selected indices [ _GUICtrlListView_GetSelectedIndices($hListView, True) ] Local $aiCurItems[1] = [0] For $i = 0 To GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0) If GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $i, 0x2) Then $aiCurItems[0] += 1 ReDim $aiCurItems[$aiCurItems[0] + 1] $aiCurItems[$aiCurItems[0]] = $i EndIf Next ; Generate clipboard text If Not $aiCurItems[0] Then For $sItem In $avArrayText $sClip &= $sItem & @CRLF Next Else For $i = 1 To UBound($aiCurItems) - 1 $sClip &= $avArrayText[$aiCurItems[$i]] & @CRLF Next EndIf ClipPut($sClip) EndSwitch WEnd GUIDelete($hGUI) Opt("GUIOnEventMode", $iOnEventMode) Opt("GUIDataSeparatorChar", $sDataSeparatorChar) Return 1 EndFunc ;==>_MyArrayDisplayLag am Resizing, die mir unbekannte Konstante durch eine MagicNumber ersetzt. Außerdem mußte ich noch ein GuiSetState einfügen(@SW_Hide). Ich bin am überlegen ob ich wirklich eine eigene ArrayDisplay schreibe. Bisher zusätzlich angedacht: Sortierung durch Spaltenklick, individuelle Sortierung über mehrere Spalten, ganze Zeilen einfärben mit GUICtrlSetTip Info zu jeweiliger Spezialzeile anzeigen. Weitere Vorschläge sind willkommen.
Dann harre ich mal der Dinge die kommen und warte auf das 'solved' flag.
Thema auf gelöst mußt du immer noch selber setzen.
mfg autoBert
-
Ich gehe im Moment davon aus, dass der Sleep-Befehl nicht greift, weil die Anwendung in den Status "Keine Rückmeldung" geht nach dem STRG+A und deswegen das AutoIT Script ins Schwanken kommt. Denn selbst nach mehr als 5 Minuten kommt kein Kontextmenü.
wie soll eine App die mehr als ausgelastet ist noch auf (autimatisierte) Eingaben reagieren? Unmöglich oder zumdinest nicht sinnvoll. Das is als wolltest du dich mit deinem Urgroßvater (sorry) unterhalten, er hat aber sein Hörgerät vergessen auftzuladen. Deshalb taugen hier nach kurzer Wartezeit abfgefeurte Eingaben auch gar nichts, sie erzeugen nur Stress für den Rechner. Deshalb WinWaitActive + evtl. WinWaitClose verwenden oder gleich wieder mit WinWaitActive auf das nächste Fenster warten. Dies ist sicherer als sich darauf zu verlassen, daß das Programm nach X Sekunden bereit für die nächste Anweisung ist. Du hättest bei dem ganzen künstlich aufgebautem Stress schon einen Herzinfarkt oder Nervenzusammenbruch, würdest danach durch einen noch flexibleren und leistungsfägigeren Mitarbeiter ausgetauscht, sprich ein Hardware- tausch oder -aufrüstung wäre auch kein Fehler, zuvor sollte aber ein Spezialist schauen von welchen Aufgaben der Computer so beschäftigt wird, daß er die Routineaufgaben nicht erledigen kann.
Das ein Fenster existiert heist noch lange nicht, daß es auch aktiv ist. Du solltest besser abfragen ob das nächste Fenster aktiv geworden ist (WinWaitActive) in diesen Zwischenzeiten sollte dein Skript also nicht versuchen etwas einzugeben, die Kunst besteht daran das richtige Timing zu finden. Besser etwas zu lange warten als in einem undefiertem Zustand der fernzusteuernden Anwendung eine Anweisung zu geben, die zu diesem (weil nicht im erwarteten Zustand) etwas anderes bewirkt als beabsichtigt.
Xorianator: hast du die (mir unbekannte) zu fernsteuernde Anwendung auf deinem Rechner installiert oder bist du per Fernwartungssofware verbunden? Nein, dann kannst du nur davon ausgehen, daß es funktionieren sollte aber nicht behaupten. Der TE ging bei der Skripterstellung auch davon aus, trotzdem geht etwas schief!
Abhilfe für das Chaos können imho nur WinWait*- in Zusammenarbeit mit Control*-Funktionen schaffen. Ich beneide dich nicht um diese Aufgabe und sehe leider eine große Gefahr, daß die Arbeit irgenwann in der Tonne landet.
-
... autoBert, wenn ich unveränderliche Werte wollte, hätte ich Konstanten genommen .
ich sehe du mußt noch viel meh lernen als ich gedacht habe. Wenn ich von
da eine UDF imho nur Sinn macht wenn sie mehrfach verwendet wird, ist es am sinnvollsten die Variable in der UDF Global zu deklarieren.
Variablen rede meine ich Variablen und keine Konstanaten!
Zitat von MerksatzEine Variable heißt Variable weil ihr variable Werte zugewiesen werden können. Nicht zu verwechseln mit einer Konstante, hier würde eine 2. Wertzuweisung einen Fehler erzeugen. Eine Konstante heißt also Konstante weil die 1. Wertzuweisung unwiederruflich ist!
-
welche AutoItversion benutzt du denn aktuell und funktioniert meine Funktion dort noch. Gerade beim _ArrayDisplay wurde vor kurzem etwas geändert. Immer wieder schön wenn man Frühwerke sieht, auch wenn sie nicht unbedingt meinem heutigen Programmierstil entsprechen.
Mit der aktuellen AutoItversion habe ich auch das Problem, jetzt heisst es suchen. Ich tippe auf konstanten die sich evtl verändert haben, jedenfalls klappt weder die automatische noch die mauelle LV-Breitenermittlung bzw. das Resizing. Poblem sollte lösbar sein allerdings kann ich dir (noch) keinen Termin nennen bis wann.
-
-
Ich würde ganz auf den ternären Operator verzichten und grundsätzlich eins auf result von Mod zählen, ich bin mir noch nicht einmal sicher was schneller abgearbeitet wird, lesbarer ist es für Ungeübte aber auf jeden Fall und schlanker auch:
CodeFor $x = 1 To 120 ConsoleWrite($x & " | " & Mod($x, 4)+1 & " | " & Ceiling($x / 4)+1 & @CRLF) Nextdas Ergebnis ist nachweislich identisch, 120 mal die Auswertung des ternären Operators und 90 mal die 2. Mod Auswertung gespart, dafür 120 zusätzlich Additionen.
[OT]Die Perversion im Schreiben von Einzeilern habe ich auf dem C64 gesehen, die komplette Osterformel mit Datum vom Ostersonntag als Ausgabe. Bin mir aber nicht sicher ob die Simon's Basic Erweiterung Voraussetzung war[/OT]Damals hatte ich noch gute Augen, aber lesbarer Code ist etwas anderes.