Beiträge von Oscar
-
-
Ja, das ist ein Bug!
Wenn die Zeile gelöscht werden soll, wird trotzdem ein @CRLF eingefügt. Das ist natürlich Unsinn!
Ich habe die Funktion mal entsprechend abgeändert:
C
Alles anzeigenFunc _FileWriteToLineNew($sFilePath, $iLine, $sText, $bOverWrite = False, $bFill = False) If $bOverWrite = Default Then $bOverWrite = False If $bFill = Default Then $bFill = False If Not FileExists($sFilePath) Then Return SetError(2, 0, 0) If $iLine <= 0 Then Return SetError(4, 0, 0) If Not (IsBool($bOverWrite) Or $bOverWrite = 0 Or $bOverWrite = 1) Then Return SetError(5, 0, 0) If Not IsString($sText) Then $sText = String($sText) If $sText = "" Then Return SetError(6, 0, 0) EndIf If Not IsBool($bFill) Then Return SetError(7, 0, 0) ; Read current file into array Local $aArray = FileReadToArray($sFilePath) ; Create empty array if empty file If @error Then Local $aArray[0] Local $iUBound = UBound($aArray) - 1 ; If Fill option set If $bFill Then ; If required resize array to allow line to be written If $iUBound < $iLine Then ReDim $aArray[$iLine] $iUBound = $iLine - 1 EndIf Else If ($iUBound + 1) < $iLine Then Return SetError(1, 0, 0) EndIf ; Write specific line - array is 0-based so reduce by 1 - and either replace or insert $aArray[$iLine - 1] = ($bOverWrite ? $sText : $sText & @CRLF & $aArray[$iLine - 1]) ; Concatenate array elements Local $sData = "" For $i = 0 To $iUBound $sData &= $aArray[$i] & ($aArray[$i] <> '' ? @CRLF : '') Next $sData = StringTrimRight($sData, StringLen(@CRLF)) ; Required to strip trailing EOL ; Write data to file Local $hFileOpen = FileOpen($sFilePath, FileGetEncoding($sFilePath) + $FO_OVERWRITE) If $hFileOpen = -1 Then Return SetError(3, 0, 0) FileWrite($hFileOpen, $sData) FileClose($hFileOpen) Return 1 EndFunc ;==>_FileWriteToLineNew -
Die Funktion kann jetzt auch ein FileMove statt FileCopy ausführen.
Alle erfolgreich kopierten Dateien werden im Quellverzeichnis gelöscht.
Neue Version in Post#1.
-
Wäre eine AutoIt.de-eigene 'SammelUDF', die die gängigsten Macken mittels Wrapperfunktionen beseitigt, ein gangbarer Weg ?
Das halte ich für keine gute Idee!
Selbst wenn sich jemand findet, der das pflegt, bleibt immer noch, dass man bei jeder Frage hier im Forum nachfragen muss, ob die "AutoIt.de"-UDF oder die originale UDF verwendet wurde.
Und im Laufe der Zeit wird es dann auch noch verschiedene Versionen der "AutoIt.de"-UDF geben (andere Versionsnummern).
-
Hättest nur ein bisschen kommentieren können, lieber Oscar
Ist der so kompliziert?
Naja gut, vielleicht ist das für Anfänger wirklich noch zu viel. Ich habe das Script mal ausgiebig kommentiert (siehe Anhang in Post #8).
-
Ich hatte gerade mal Lust dazu, eine Stoppuhr zu schreiben.
Vielleicht willst Du das Script ja weiterverwenden (siehe Anhang).
Screenshot:
-
Beide im Format HH:MM:SS.
Und da liegt der Fehler!
_DateDiff erwartet Datum und Uhrzeit, nicht nur die Uhrzeit:
Input Start/End date in the format "YYYY/MM/DD[ HH:MM:SS]" Das bedeutet, dass Du zwar die Uhrzeit weglassen kannst, aber auf keinen Fall das Datum.
-
Vielleicht so:
C
Alles anzeigen#include <GUIConstantsEx.au3> #include <SendMessage.au3> #include <WinAPIGdiDC.au3> #include <WinAPIGdiInternals.au3> #include <WinAPIHObj.au3> #include <WinAPISysInternals.au3> #include <WindowsConstants.au3> Global $hGui = GUICreate('Test', 1000, 600) GUISetFont(12, 400, 0, 'Arial') Global $idLabel = GUICtrlCreateLabel('Das ist ein Test 1234', 10, 20) GUICtrlSetFont(-1, 32, 400, 2, 'Times New Roman') GUICtrlSetBkColor(-1, 0xAAAAEE) _ChangeLabelSize($idLabel) GUISetState(@SW_SHOW, $hGui) MsgBox(0, 'Test', 'Textgroesse veraendern') GUICtrlSetData($idLabel, 'Ein neuer Text 5678') GUICtrlSetFont($idLabel, 64, 600, 2, 'Times New Roman') _ChangeLabelSize($idLabel) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE Func _ChangeLabelSize($idCtrl) Local $hWnd, $hDC, $hFont, $hSelectObject, $tSIZE $hWnd = GUICtrlGetHandle($idCtrl) $hDC = _WinAPI_GetDC($hWnd) $hFont = _SendMessage($hWnd, $WM_GETFONT) $hSelectObject = _WinAPI_SelectObject($hDC, $hFont) $tSIZE = _WinAPI_GetTextExtentPoint32($hDC, GUICtrlRead($idCtrl)) ConsoleWrite(StringFormat('Width: %i, Height: %i\r\n', DllStructGetData($tSIZE, 1), DllStructGetData($tSIZE, 2))) _WinAPI_SelectObject($hDC, $hSelectObject) _WinAPI_ReleaseDC($hWnd, $hDC) GUICtrlSetPos($idCtrl, Default, Default, DllStructGetData($tSIZE, 1), DllStructGetData($tSIZE, 2)) EndFunc -
Ich finde diese Variante hochinteressant. Vielleicht könnt ihr ja auch was damit anfangen.
Ja, sehr interessant!
Das kannte ich auch noch nicht. Danke, für das Beispiel!
-
-
Das Macro "@error" wird durch StringLower zurückgesetzt.
Du musst @error direkt nach FileReadLine auswerten:
-
Und diese funzt nicht:
Global $sURL = 'https://www.edv-dompteur.de/image/mini/Lichteffekte_500t.jpg'Das funktioniert bei mir einwandfrei:
C$sUrl = 'https://www.edv-dompteur.de/image/mini/Lichteffekte_500t.jpg' $sFile = InetGet($sUrl, @ScriptDir & '\test.jpg') ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFile = ' & $sFile & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug ConsoleHast Du eventuell Probleme mit Deiner Internetverbindung?
-
-
Moderatoren-Rechte fehlen (keine Bearbeitung möglich, keine Verwarnung, etc.)ERLEDIGT Rechte gesetzt - In Beiträgen eingefügte Bilder (z.B. Screenshots werden nicht angezeigt). Ok, bei neuen Beiträgen geht es, aber das hier ist aus einem alten Thread:
Kann es sein, dass die Bilder nur bis zu einer bestimmten Größe angezeigt werden?
Weil, das kleine Bild wird angezeigt, aber die beiden größeren nicht. Das ist aus diesem Thread: Digitaluhr v4
-
-
Die Date-UDF ist die Lösung:
AutoIt
Alles anzeigen#include <Date.au3> Global $sToday = _NowCalcDate() Global $sBegin = $sToday & ' 08:00:00' Global $sEnd = $sToday & ' 17:00:00' Global $sPauseBegin = $sToday & ' 12:00:00' Global $sPauseEnd = $sToday & ' 13:00:00' Global $sDiff1 = _DateDiff('h', $sBegin, $sPauseBegin) Global $sDiff2 = _DateDiff('h', $sPauseEnd, $sEnd) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDiff1 = ' & $sDiff1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDiff2 = ' & $sDiff2 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console -
Local brauch ich wohl nicht, da alle Variablen automatisch in Funktionen Local sind?
Das stimmt so nicht!
Wenn es eine gleichnamige globale Variable gibt, wird diese angesprochen, deshalb lokale Variablen immer auch lokal deklarieren.
Ansonsten:
Wenn es sich um Konstanten handelt, diese als "Local const $Var" deklarieren/definieren.
"Local static" verwendet man, wenn die Variable innerhalb der Funktion auch bei den nächsten Funktionsaufrufen gültig sein soll.
-
Mit den Drive-Funktionen kam ich da aktuell nicht weiter, jemand eine Idee?
Schau Dir mal "_WinAPI_GetDriveNumber()" an.
-
-
Welche "SciTE4AutoIt"-Version verwendest Du?
Ich glaube das mit ProductName kam erst mit einer aktuellen Version.
Zur Not lass die Zeile weg. Hat mit dem Programm an sich eh nichts zu tun.
-
Eine kleine Historie, d.h. Anzahl der erfolgreichen/nicht erfolgreichen Spiele, könnte man noch einbauen
Ja, an eine kleine Statistik habe ich auch schon gedacht. Mal sehen...
Ansonsten: Danke für die "Blumen"!

-
Mit N++ habe ich am Anfang auch mal eine Zeit gearbeitet. Es hat ewig gedauert, bis das halbwegs funktionierte und dann (nach jedem AutoIt-Update) fing das wieder von vorne an.
Ich hab's irgendwann aufgegeben und benutze seitdem SciTE4AutoIt. Das ist nunmal der "offizielle" Editor und im Grunde reicht der auch aus.