Wenn es den Speicher deines AutoIt-Scripts auslesen soll google mal nach der memory.au3 ... Dann kannst du dir das ausgeben lassen indem du mit @AutoItPID arbeitest.
Beiträge von Yaerox
-
-
Funktioniert bei jemanden von euch der Link?
-
-
Kommentiere mal Zeile 153 ("_GUICtrlListView_RegisterSortCallBack($list_ping)") aus.
So wie ich das sehe wird da aller einer Sekunde die Callback-Funktion registriert aber die vorhergehende nicht deregistriert.Mit sowas hab ich gerechnet

-
Ich bräuchte die Excel UDF einmal bitte, dann könnte ich sofern gewünscht auch mal schauen ob ich eine bessere Lösung finde

-
Ich habe grad nicht genug Zeit um mir das Script mal ganz anzuschauen, aber ein kleiner Hinweis zu AdlibRegister: Achte, dass du die Funktion nicht mehrmals in einem Intervall aufrufst, bei dem das Zeitintervall kleiner ist als die auszuführende Funktion. Ich hatte damals ein Speicherproblem das zum größten Teil durch meine fehlerhafte Anwendung von AdlibRegister aufgetreten ist.
Grüße
-
Ich persönlich würde Variante 1 benutzen, da nicht alle Arrays im ersten Element die Anzahl der Elemente habenRecht hast du, allerdings nutzt er die UDF FileListToArray ja so oder so mit default Parametern sprich das erste bleibt die Anzahl von daher

Ich würde sagen wichtiger ist sich das zu merken und den Fehler nicht nochmal zu machen

Grüße
-
Ich hatte in C++ mal das Problem das ich dachte der läuft bei einer ähnlichen Schleife nur 1x durch, allerdings hat er in wirklichkeit die Schleife mehrmals durchlaufen, leider aber immer im gleichen Case, der Grund dafür war, dass ich die "Switch-Variable" nicht neu gesetzt hatte ... In AutoIt hatte ich das Problem bisher noch nicht, aber wenn du dir das mal durch den kopf gehen lässt könntest du das ja mal ausprobieren ...
Wenn du dir das in C++ vorstellst steht nach jedem Case ein break und da gab mir jemand den Tipp und meinte ich solle mal überlegen welchen Wert eine Variable nach einer Abbruchbedingung habe

Grüße
-
UBound($Files[0]) ... fällts dir auf
[autoit]
#include <File.au3>
[/autoit]
#include <Array.au3>
$Files = _FileListToArray(@ScriptDir)
For $i = 1 to $Files[0]
$Open = FileOpen($Files[$i])
$Read = FileRead($Open)
ConsoleWrite($Read)
FileClose($Open)
NextGrüße

-
Also der Ordner tmp auf C ist ein von dir erstellter Ordner richtig?
Ich habe mir den Ordner ebenfalls mal angelegt und auch den Ordner AA und bei mir funktioniert dein Script einwandfrei...
Grüße
-
Wenn ich ehrlich bin sieht das für mich aus als könne das so gar nicht funktionieren ... kannst du vielleicht dein Script mal ganz posten, bzw. erklären was du vor hast das man es nachbauen kann (oder du ein Testscript schreibst)?
Mich wundert grad GUIGetMsg(): Returns an event, or an array depending on the "advanced" parameter. Also gehe ich davon aus, dein Array $abMarkt 10 Events aus der Hilfe eingetragen hat?
Was macht die Funktion GetLang und __f_Inventar_Open? Sind das funktionen einer UDF oder von dir? Mir sind diese bisher nicht bekannt...
Grüße
-
Ich denke der einzige Weg sowas zu realisieren wäre eine Datei anzulegen indem eine Art Index der Datei geschrieben wird bei dem gestartet werden kann ... üblicherweise wird sofern das Programm geschlossen wird ja alles an Speicher freigegeben ... falls ich im unrecht bin belehrt mich bitte

Womit man dann u.U. sagen müsste es darf dann halt kein weiteres Bild dazu kommen da es sonst mit dem Index Probleme geben könnte ...
Grüße
-
Wobei er dann immer noch net die gesamte Bibliothek nimmt ... Er schmiert zwar nicht mehr ab, aber er findet scheinbar keine Bilder und als Pfad wird lediglich "Bilder/" eingetragen ...
Schnellste Spontanlösung die mir da einfällt wäre die Standardbibliotheken abzufangen von wegen:
If $sSourcePath = "Bilder" Then $sSourcePath = C:\User\username\Pictures
-
Sieht doch ganz schick aus

Aufgefallen ist mir, dass beim ersten starten man am oberen Bildschirmrand ca. 5px breit einen "Strich" sieht, sofern man allerdings den GUI 1x eingeblendet hat und dann wieder ausblenden lässt ist dieser auch weg. Ansonsten ist es halt nicht 100% flüssig, allerdings habe ich bisher noch keine ähnliche Animation in AutoIt flüssig gesehen, also schließe ich mal das es nicht deine Schuld ist

Grüße
-
Speziell in Kategorien wie diesen würde ich dir raten direkt spezifisch zu werden
z.B. Bilder (wenn auch mit Paint gemalt) die zeigen, wie das Formular auszusehen hat, ob die E-Mail ein bestimmtes Format haben muss, oder haben darf (sprich der programmierer legt eins an), etc. ... nutzt du bereits eine Software zum versenden von E-Mails oder ist dort freie Wahl?Wie gesagt, sofern du etwas spezieller wirst, könnten vll. einige Leute eher auf die Idee kommen wenn mal ein bisschen Luft ist sowas zu schreiben

Grüße
-
Ich finds echt spitze, gute Arbeit!

Für die englischen Freunde unter uns, da ich englisch auch bevorzuge aber immer ein wenig vorsichtiger bin ... bin ich mal beim Suchen diverser Sätze wie: Es wird für keinerlei Schäden gehaftet o.ä. auf https://autoit.de/www.linguee.de gestoßen. Bisher hat es soweit immer geholfen

Grüße
-
Alles anzeigen
Ich hatte gerade mal Lust sowas zu programmieren und weil ich einiges davon sowieso schonmal gebraucht hatte, ist bisher das hier fertig:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]Global $iPreviewLeft = 10
[/autoit] [autoit][/autoit] [autoit]
Global $iPreviewTop = 70
Global $iPreviewMaxWidth = 800
Global $iPreviewMaxHeight = 600
Global $aPicFilenames[1] = [0], $iCount = 0, $pState = False, $aParts[3] = [$iPreviewMaxWidth / 2 + 100, $iPreviewMaxWidth / 2 + 250, $iPreviewMaxWidth / 2 + 350]
Global $sSourcePath = '', $sDestPath = ''$hGui = GUICreate('Fotosortierer', $iPreviewMaxWidth + 20, $iPreviewMaxHeight + 140)
[/autoit] [autoit][/autoit] [autoit]
GUISetFont(9, 400, 0, 'Verdana')
GUICtrlCreateLabel('Quellverzeichnis:', 10, 12, 120, 25)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
$ID_SourceDir = GUICtrlCreateInput('', 130, 10, $iPreviewMaxWidth - 170, 25, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xFFFFEE)
$ID_SourceSel = GUICtrlCreateButton('...', $iPreviewMaxWidth - 38, 10, 32, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)GUICtrlCreateLabel('Zielverzeichnis:', 10, 42, 120, 25)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)
$ID_DestDir = GUICtrlCreateInput('', 130, 40, $iPreviewMaxWidth - 170, 25, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xFFFFEE)
$ID_DestSel = GUICtrlCreateButton('...', $iPreviewMaxWidth - 38, 40, 32, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Verdana', 5)$hPreviewGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
[/autoit] [autoit][/autoit] [autoit]$ID_Prev = GUICtrlCreateButton('Vorheriges Bild', $iPreviewMaxWidth / 2 - 200, $iPreviewMaxHeight + 80, 110, 25)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState(-1, $GUI_DISABLE)
$ID_Copy = GUICtrlCreateButton('Bild kopieren', $iPreviewMaxWidth / 2 - 60, $iPreviewMaxHeight + 76, 130, 32)
GUICtrlSetState(-1, $GUI_DISABLE)
$ID_Next = GUICtrlCreateButton('Nächstes Bild', $iPreviewMaxWidth / 2 + 100, $iPreviewMaxHeight + 80, 110, 25)
GUICtrlSetState(-1, $GUI_DISABLE)$hStatus = _GUICtrlStatusBar_Create($hGui)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlStatusBar_SetParts($hStatus, $aParts)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillRect($hPreviewGraphic, $iPreviewLeft, $iPreviewTop, $iPreviewMaxWidth, $iPreviewMaxHeight)While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hPreviewGraphic)
_GDIPlus_Shutdown()
Exit
Case $ID_Prev
$iCount -= 1
_ShowStatus()
_ShowImage($aPicFilenames[$iCount])
$pState = False
Case $ID_Next
$iCount += 1
_ShowStatus()
_ShowImage($aPicFilenames[$iCount])
$pState = False
Case $ID_Copy
GUICtrlSetState($ID_Copy, $GUI_DISABLE)
_GUICtrlStatusBar_SetText($hStatus, 'Bitte Warten! Bild wird kopiert...', 0)
If FileCopy($aPicFilenames[$iCount], $sDestPath) Then
_GUICtrlStatusBar_SetText($hStatus, 'Das Bild wurde erfolgreich kopiert.', 0)
Else
_GUICtrlStatusBar_SetText($hStatus, 'Fehler beim kopieren!', 0)
EndIf
$pState = False
Case $ID_SourceSel
$sPath = FileSelectFolder('Bitte Quellverzeichnis auswählen', '', 6, $sSourcePath, $hGui)
If $sPath <> '' Then
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$sSourcePath = $sPath
GUICtrlSetData($ID_SourceDir, $sPath)
_GUICtrlStatusBar_SetText($hStatus, 'Bitte Warten! Verzeichnis wird eingelesen...', 0)
$aPicFilenames = _RecursiveFileListToArray($sPath, '(?i).+\.(jpg|jpeg|gif|bmp)', 1)
If $aPicFilenames[0] > 0 Then
$iCount = 1
_ShowStatus()
_ShowImage($aPicFilenames[$iCount])
Else
$iCount = 0
_GUICtrlStatusBar_SetText($hStatus, 'Keine Bilder im Quellverzeichnis vorhanden!', 0)
EndIf
$pState = False
EndIf
Case $ID_DestSel
$sPath = FileSelectFolder('Bitte Zielverzeichnis auswählen', '', 6, $sDestPath, $hGui)
If $sPath <> '' Then
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$sDestPath = $sPath
GUICtrlSetData($ID_DestDir, $sPath)
$pState = False
EndIf
EndSwitch
If Not $pState Then
$pState = True
If $aPicFilenames[0] > 0 Then
If FileExists($sDestPath) Then
If Not FileExists($sDestPath & StringRegExpReplace($aPicFilenames[$iCount], '.+\\(.+)', '$1')) Then
GUICtrlSetState($ID_Copy, $GUI_ENABLE)
Else
GUICtrlSetState($ID_Copy, $GUI_DISABLE)
EndIf
Else
GUICtrlSetState($ID_Copy, $GUI_DISABLE)
EndIf
If $iCount > 1 Then
GUICtrlSetState($ID_Prev, $GUI_ENABLE)
Else
GUICtrlSetState($ID_Prev, $GUI_DISABLE)
EndIf
If $iCount < $aPicFilenames[0] Then
GUICtrlSetState($ID_Next, $GUI_ENABLE)
Else
GUICtrlSetState($ID_Next, $GUI_DISABLE)
EndIf
Else
GUICtrlSetState($ID_Prev, $GUI_DISABLE)
GUICtrlSetState($ID_Copy, $GUI_DISABLE)
GUICtrlSetState($ID_Next, $GUI_DISABLE)
EndIf
EndIf
WEndFunc _ShowStatus()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlStatusBar_SetText($hStatus, StringReplace($aPicFilenames[$iCount], $sSourcePath, '', 1), 0)
_GUICtrlStatusBar_SetText($hStatus, StringFormat(' Bild %i von %i', $iCount, $aPicFilenames[0]), 1)
EndFuncFunc _ShowImage($sImgFile)
[/autoit] [autoit][/autoit] [autoit]
Local $iVector, $iPreviewHeight, $iPreviewWidth, $aPixelFormat
Local $hPreviewBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
If $hPreviewBitmap = 0 Then
_GDIPlus_GraphicsFillRect($hPreviewGraphic, $iPreviewLeft, $iPreviewTop, $iPreviewMaxWidth, $iPreviewMaxHeight)
_GDIPlus_BitmapDispose($hPreviewBitmap)
Return
EndIf
$iPreviewWidth = _GDIPlus_ImageGetWidth($hPreviewBitmap)
$iPreviewHeight = _GDIPlus_ImageGetHeight($hPreviewBitmap)
$aPixelFormat = _GDIPlus_ImageGetPixelFormat($hPreviewBitmap)
_GUICtrlStatusBar_SetText($hStatus, StringFormat(' %i x %i px , %i Bit', $iPreviewWidth, $iPreviewHeight, $aPixelFormat[1]), 2)
If $iPreviewWidth > $iPreviewMaxWidth Or $iPreviewHeight > $iPreviewMaxHeight Then
$iVector = $iPreviewWidth / $iPreviewHeight
Do
$iPreviewWidth -= $iVector
$iPreviewHeight -= 1
Until $iPreviewHeight <= $iPreviewMaxHeight And $iPreviewWidth <= $iPreviewMaxWidth
EndIf
_GDIPlus_GraphicsFillRect($hPreviewGraphic, $iPreviewLeft, $iPreviewTop, $iPreviewMaxWidth, $iPreviewMaxHeight)
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, $iPreviewLeft + ($iPreviewMaxWidth - $iPreviewWidth) / 2, $iPreviewTop + ($iPreviewMaxHeight - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
_GDIPlus_BitmapDispose($hPreviewBitmap)
EndFunc ;==>_PreviewShowImageFunc _GuiCtrlSetPath($nID, $sPath, $iFit = 0)
[/autoit] [autoit][/autoit] [autoit]
;coded by funkey
;2011, Nov 24th
Local $hCtrl = GUICtrlGetHandle($nID)
Local $hDC = _WinAPI_GetDC($hCtrl)
Local $tPath = DllStructCreate("char[260]")
Local $pPath = DllStructGetPtr($tPath)
DllStructSetData($tPath, 1, $sPath)
Local $hFont = _SendMessage($hCtrl, 49, 0, 0, 0, "wparam", "lparam", "hwnd") ;WM_GETFONT
Local $hFont_old = _WinAPI_SelectObject($hDC, $hFont)
Local $aPos = ControlGetPos($hCtrl, "", "")
DllCall("Shlwapi.dll", "BOOL", "PathCompactPath", "handle", $hDC, "ptr", $pPath, "int", $aPos[2] - $iFit)
_WinAPI_SelectObject($hDC, $hFont_old)
_WinAPI_DeleteDC($hDC)
GUICtrlSetData($nID, DllStructGetData($tPath, 1))
Return DllStructGetData($tPath, 1)
EndFunc ;==>_GuiCtrlSetPath;===============================================================================
[/autoit]
; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $fRecursion][, $sDelim])
; Description:: gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $fRecursion = Verzeichnisse rekursiv durchsuchen
; False = Nein
; True = Ja
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
; und: AspirinJunkie (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)
Local $hSearch, $sFile, $sReturn = '', $aD
Local Static $hDll
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*')
If @error Or $hSearch = -1 Then Return SetError(1, 0, $sReturn)
If $fOpenDLL Then $hDll = DllOpen('kernel32.dll')
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
$aD = DllCall($hDll, 'dword', 'GetFileAttributesW', 'wstr', $sPath & $sFile)
If @error Or BitAND($aD[0], 0x400) Then ContinueLoop
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $fRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, True, $sDelim, False)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $fOpenDLL Then DllClose($hDll)
If $iFormat And $sReturn = '' Then Return SetError(0, 1, StringSplit($sReturn, '', $iFormat))
If $iFormat Then Return SetError(0, 2, StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat))
Return $sReturn
EndFuncDie Idee finde ich total genial. Ich habe mal die Variante von Oscar genutzt, jedoch funktioniert die Quellverzeichnisauswahl bei mir nicht so wie ich persönlich sie mir als Nutzer vorstellen würde...Wähle ich meinen Bilderordner aus ließt er scheinbar alle Bilder aus, auch wenn dort noch Ordner sind, wenn ich aber z.B. die Bibliotheken aus Windows auswähle crashed es:
Zeile 80 : ==> Subscript used with non-Array variable.:
If $aPicFilenames[0] > 0 Then
If $aPicFilenames^ ERROR -
Für Webprogrammierung würde ich dir HTML, PHP, CSS, JavaScript und (besonders) jQuery empfehlen. Fallst du Daten iwo her benötigst schreibe ich dort meine Scripte mit Perl.
-
Hallo Midakox3 und willkommen im Forum.
Sofern es dir weiterhilft würde ich die meine Erfahrung mit AutoIt mal kurz schildern. Ich bin derzeit in einer Ausbildung als Anwendungsentwickler, hatte relativ früh dann ein eigenens Projekt das ich in AutoIt umetzen sollte. Mir war AutoIt somit vorgeschrieben. Mit der Zeit habe ich festgestellt, dass AutoIt eine sehr einfache aber dennoch geniale Sprache ist. In der Schule hatte ich bereits mit HTML, COMAL und PASCAL programmiert, was mir das (ich nenne es) Programmiererdenken gelernt hatte. Sofern du weisst was es für Programme werden sollen würde ich an deiner Stelle die Programmiersprache suchen, die am besten dafür geeignet ist. Mir macht AutoIt sehr viel spaß, ich finde die Art des Codes genial und die Möglichkeiten der Oberflächengestaltung einfach. Ich mag sowas sehr gern programmieren, gedoch bin ich an meinem ersten Projekt an die Grenzen von AutoIt gekommen denke ich. Wenn du Programme schreibst die 24/7 laufen über Wochen/Monate und vll. nur bei einem Serverreboot abgeschaltet werden wäre ich jetzt allerdings etwas vorsichtiger mit AutoIt. Ich hatte dort enorme Speicherprobleme. In der Berufsschule nun reden alle immer AutoIt wäre kein richtiges programmieren ... es sei wie Webprogrammierung mit Dreamweaver: ein bisschen klicken hier, ein bisschen da und fertig. Ich finde jedoch viel schlimmer das sowas meist von Leuten kommt die erzählen sie können 10 Sprachen wie PHP, JavaScript, Perl, C, C++, C# und alles mögliche, allerdings in der Berufsschule an den einfachsten Aufgaben jedesmal scheitern.
Daher rate ich dir suche dir was dir zum einen am ehesten zusagt, zum anderen was am besten geeignet ist.
Ich bin mittlerweile von COMAL -> HTML -> PASCAL -> AutoIt -> ein wenig Batch -> Perl -> C/C++ -> JQuery -> VBS umhergewandert da ich das nutze was ich vorgeschrieben bekomme oder ich denke es am besten geeignet ist. Grundsätzlich behaupte ich kannst du ziemlich alles in AutoIt auch schreiben, sofern es nicht etwas ist das auf einem sehr hohen Niveau des programmierens basiert.
Ich für meinen Teil habe eine Sprache gesucht die mir im späteren Berufsleben noch weiter helfen kann. Aber da jeder etwas anderes nutzt und es unmöglich ist 10 Sprachen zu 100% zu können versuche ich einen möglichst großen Einblick in alle zu kriegen, Vor und Nachteile herauszufinden und dann heißt es sofern es speziell wird so oder so Hilfe und/oder Google. Man sucht sich was man braucht, wenn man etwas aus einer Sprache kennt findet man über Google fast immer etwas in einer anderen Sprache dazu, auch wenn es dort so nicht genannt wird.
Mir z.B. wird derzeit immer erwähnt ich solle versuchen alles mit Perl umzusetzen. Perl ist auch eine Sprache mit der du ziemlich alles richtig genial programmieren kannst, Ausnahme Oberflächen, aber dafür gibt es ja andere Wege und Mittel Scripte mit Oberflächen zu verbinden

Wenn du einfache Sachen programmieren möchtest kann ich dir somit nur sagen AutoIt macht Spaß und wird dich ans Ziel bringen

-
Du könntest vielleicht noch den Beitrag auf gelöst setzen (ersten Beitrag bearbeiten).