Teste das mal. Eigentlich sollten der Link als Parameter mitgesendet werden. So funktioniert das allgemein. Wie sollte das Programm sonst wissen, was zu tun ist?
Beiträge von autoiter
-
-
Ich suche in einem Fall nach Dubletten, die ich markieren möchte.
Erst durchsuche ich die Datei. und fülle ähnlich wie oben beschrieben ein Array. Das schicke ich dann an eine Funktion, die in meinem Fall, die ganze Zeile gelb markiert.
Ich hoffe das hilft dir schon. Ansonsten antworte und erwähne mich, dann bekomme ich eine Mail.AutoIt
Alles anzeigenFunc _SetExcelRowBkColor($oWorkbook, $iRow, $iColorIndex = 36) If Not IsObj($oWorkbook) Then Return SetError(1, 0, "No Workbook object") $iColorIndex = Ceiling(Number($iColorIndex)) If $iColorIndex = 0 Then $iColorIndex = 36 If IsObj($oWorkbook.Activesheet.Rows($iRow).Interior) Then With $oWorkbook.Activesheet .Rows($iRow).Interior.ColorIndex = $iColorIndex .Range("A" & $iRow).Interior.ColorIndex = $iColorIndex EndWith Else ConsoleWrite("Beim Setzen der Hintergrundfarbe einer Zeile ist ein Fehler aufgetreten. Zeile: " & $iRow & @LF) EndIf EndFunc ;==>_SetExcelRowBkColor
-
Hallo @Sascha, du kannst die Ausgabe direkt abfangen, wenn du es mittels der Konsolenparameter von Tesseract an die Konsole ausgibst und ausliest.
ich mache das in einem Programm so:
AutoIt
Alles anzeigen_ScreenCapture_CaptureWnd(@ScriptDir & '\Data\searcharea.tif', $g_hSearchArea) If @error And $g_bDebug Then _FileWriteLog($g_hLogFile, "ScreenCapture error=") Local $sCmd = '"' & @ScriptDir & '\Tesseract-OCR\tesseract.exe" "' & _ @ScriptDir & '\Data\searcharea.tif" stdout --psm 12 --oem 1 ' & _ '--tessdata-dir "' & @ScriptDir & '\Tesseract-OCR\tessdata" -l ' & $g_sSearchLanguage Local $iPid = Run($sCmd, @ScriptDir, @SW_HIDE, BitOR($STDERR_CHILD, $STDOUT_CHILD)) If Not $iPid Then If $g_bDebug Then _FileWriteLog($g_hLogFile, "Run error! Call=" & $sCmd) Return SetError(1, 0, False) EndIf ProcessWaitClose($iPid) Local $sStdout = StdoutRead($iPid) Local $sStderr = StderrRead($iPid)
Bitte frag nicht, ob das guter Code ist. Dafür bin ich die falsche Person in diesem Forum
Eine noch einfachere Variante wäre, du liest einfach mit FileRead die Datei @MyDocumentsDir & "\result.txt" aus und speicherst das in einer Datei. Danach kannst du die Datei löschen.
-
Krass. Da schaut man mal wieder rein und sieht eine Antwort von Jos
-
Hallo HansJ54
darüber habe ich mir zuvor nie Gedanken gemacht und habe es auch nicht getestet. Allerdings kannst du in Windows Standard Apps auswählen. Unter anderem gibt es dor den Punkt "Standardeinstellungen nach App festlegen". Da könntest du wohl auf eine Exe verweisen, die du mit AutoIt erstellt hast. Innerhalb dieser Exe könntest du dann deine Geschäftslogik ausführen.
-
Ja, da lagst du schon richtig.
https://docs.microsoft.com/en-us/windows/…clipboardupdate -
Danke, aber viel zu umständlich, setze das Projekt lieber in C um.
LOL, das ist doch ein Fake Account/Beitrag. Haha, ich würde gerne seine C-Umsetzung sehen
Musashi vergiss den Troll.
-
Hi MojoeB sorry, ich bin nur mal reingeschneit und habe dein letztes Skript gesehen. Zum Topic kann ich gar nichts sagen. Aber vermeide doch so Spielereien: Func ________START_________() Das bereitet doch nur bei Aufruf mögliche Schmerzen. Genau wie das ____suche__starten___().Haben die Namen funktionale Gründe?
Außerdem scheinen alle globalen Variablen nur lokal genutzt zu werden? Dann deklariere sie dort doch auch lokal.
Schreibst du deinen Code in Notepad++ oder so? Ich frage wegen der eigenwilligen Einrückungen und unterschiedlichen Schreibweise von func und EndFunc. Probiere mal SciTE4AutoIt oder ISN Studio aus.
Die nehmen eine Menge Arbeit ab.
-
Hallo HansJ54,
ich habe nichts ausprobiert oder so. Daher rede ich nicht mit Wissen. Ich habe mir einfach bei deinem Screenshot gedacht, dass er wenig Sinn macht. Arraydisplay gibt dir einen Screenshot...
Lass dir besser über eine gewisse Zeit in kürzeren Abständen die Daten in die Konsole ausgeben und vergleiche diese Daten mit dem Taskmanager.
-
-
Ich bekomme weiter Updates mit win10
Bei mir hat der Quelltext 280 Zeilen.
IE 1909 Build 18363.1379
-
Auf dem eigenen Computer sollte das in den Griff zu bekommen sein.
Kompilierte exe eiignen sich aber einfach nicht für die Verteilung - weder professionell noch privat. Schreibt eine installierbare Ausführdatei in irgendwas und startet das Skript daraus mit einer mitgelieferten AutoIt3.exe, wenn es was hermachen soll.
-
Ich bin auch nur kurz hereingeschneit SEuBo
Die einzige reine AutoIt-Möglichkeit ist doch, dass du den zur Laufzeit in AutoIt geschriebenen Code in eine Datei schreibst und die mit deiner eigenen oder der auf dem Zielsystem installierten Au3.exe ausführst. Alle deine im Script vorhandenen Daten kannst du an das von deinem Skript geschriebene Programm übergeben. Entweder per Quelltext oder Kommandozeile, etc. Das genügt schon, wenn kein weiterer Austausch während der Laufzeit stattfinden muss. Dazu gäbe es hier Threads wie interprozesskommunikation oder so ähnlich.
-
-
Schönes Gedicht Oscar. Ich wünsche euch allen wenig Stress und schon mal schöne Feiertage.
-
Oh Mann. Ich hatte mir das Array dann auch nochmal angeschaut und gesehen, das du recht hattest. Wenn ich die ersten beiden Zeilen lösche oder nur bis 2 runter gehe, funktioniert das Skript bei mir auch
Danke dir Bitnugger.
-
Hi Bitnugger
Okay, die zwei Sätze hätte ich klarer schreiben können. Ja, es gibt sechs Minen und ich möchte meine Arbeiter möglichst effizient aufteilen, damit möglichst viele Rohstoffe produziert werden. Vielen Dank für den Hinweis.
Ich gehe bis 0, weil ich nach dem Einlesen das erste Element gelöscht habe und die Überschriften nicht mehr im Array sind - ist natürlich unnötig. EDIT: Ja, gerade gesehen dass da ja zwei Überschriften Spalten sind. Also ist 0 wirklich Quatsch.
Zur Liste. Sie zeigt auch noch die Aufteilung innerhalb einer Mine und was da produziert wird.
Das möchte ich dann später auch anzeigen und die effizienteste Variante anhand der Spalte mit der Produktion pro Tag pro Arbeiter ermitteln.
Aber eigentlich ist für meinen ersten Schritt nur die erste Spalte wichtig denke ich. Da stehen die benötigten Arbeiter drin.
Bei dem Spiel ist es so, dass ich nach und nach immer mal ein paar Arbeiter bekomme und die dann einsortieren muss. Dabei möchte ich wenn möglich in jeder Mine immer eine Aufteilung haben, die ich auch in der Liste finden kann. -
Hi Leute,
schon mit dem Titel war ich mir nicht sicher.. Gerne werden Vorschläge angenommen, den zu verbessern.Ich spiele ein Spiel, in dem es einen idle Part gibt. Man hat Arbeiter und teilt sie in Minen ein. Man hat insgesamt 6. Ich möchte sie möglichst effizient verteilen und mir die beste Aufteilung anhand der Anzahl meiner Arbeiter anzeigen lassen.
Nun habe ich eine Liste, mit möglichen Verteilungen von Arbeitern. Da wollte ich mir erst einmal alle möglichen Verteilungen in ein Array schreiben und später nach Effizienz sortieren.
Ich scheitere gerade daran, mir überhaupt die möglichen Verteilungen anzeigen zu lassen. In der ersten Spalte der csv Datei steht die Anzahl der benutzten Arbeiter.
Mein Gedanke war, ich gehe die Liste von unten durch. Sowie ich einen Eintrag erreiche, der >= die Anzahl meiner Arbeiter ist, gehe ich die Liste von diesem Punkt an immer wieder durch und ziehe die Anzahl von meinen zur Verfügung stehenden Arbeitern ab, bis ein Rest < 4 entsteht.
Was ich dann aber geschrieben habe, kommt nicht aus der Endlosschleife heraus, sowie ich einen Rest > 4 habe.AutoIt
Alles anzeigen#include <File.au3> #include <Array.au3> Global $g_iWorkers = 50 _PossibleSetting() Func _PossibleSetting() Local $aDB _FileReadToArray("Workers.CSV", $aDB, 0, ";") _ArrayDelete($aDB, 0) ;~ Exit _ArrayDisplay($aDB) Local $aResults[10000], $iResultCount = 0, $sResultString = "", _ $iHit = 0, $iWorkersTemp = $g_iWorkers For $i = UBound($aDB) - 1 To 0 Step -1 If $aDB[$i][0] <= $g_iWorkers Then $iHit = $i While $iWorkersTemp > 3 For $ii = $iHit To 0 Step -1 ConsoleWrite("$iHit= " & $iHit & @LF) If $aDB[$ii][0] <= $iWorkersTemp Then $iHit = $ii $iWorkersTemp -= $aDB[$ii][0] $sResultString &= $ii & "," ConsoleWrite("$iWorkersTemp= " & $iWorkersTemp & @LF) ConsoleWrite(" $aDB[$ii][0]= " & $aDB[$ii][0] & @LF) ConsoleWrite("$iWorkersTemp - $aDB[$ii][0]= " & $iWorkersTemp & " - " & $aDB[$ii][0] & @LF) ConsoleWrite("$iHit= " & $iHit & @LF) ConsoleWrite("$sResultString= " & $sResultString & @LF) ExitLoop EndIf Next WEnd $sResultString &= "Rest " & $iWorkersTemp $aResults[$iResultCount] = $sResultString $sResultString = "" $iResultCount += 1 $iWorkersTemp = $g_iWorkers EndIf Next ReDim $aResults[$iResultCount + 1] _ArrayDisplay($aResults) ;~ _ArrayDisplay($aDB) EndFunc ;==>_PossibleSetting
Ich bin sicher ihr könnt mir da schnell helfen. Über Einschätzungen, ob man das besser ganz anders angeht, würde ich mich auch freuen.
EDIT: Die angehängte csv hat die Endung zip, damit sie angehängt werden konnte. Einfach entfernen.
-
Verstehe. An so ein Szenario habe ich gar nicht gedacht. Leuchtet ein.
-
Machst du das wirklich? Schreibst du dort längeren Code und sendest den dann an deinen PC, um den Code dort auszuführen?
-
Nein, ich dachte innerhalb deines this Blocks nur an event.value.padStart(10, "0") oder auch anstelle des ganzen this.getField("Ausgabefeld_1").padStart(10, "0").
Ich denke das müsste klappen.