Beiträge von Oscar
-
-
-
mit einem Papierlocher ein halbes Loch auf der anderen Seite einzustanzen. Dann konnte man sie doppelseitig verwenden.
Es gab sogar "Diskettenlocher" zu kaufen, die genau an der richtigen Stelle ein eckiges Loch stanzten.
Die eigentlich einseitigen Disketten waren auf dem C64 auf jeden Fall auch beidseitig nutzbar. Habe ich damals dutzendweise gemacht.
-
Das geht nicht. Dann würde ich ja meine eigene Ver- und Entschlüsselungsroutine verraten.
Was bringt dann Deine eigene Routine, wenn Du das AutoIt-Script niemanden geben kannst?
Nur, um eigene Texte/Dateien zu verschlüsseln?
Und überhaupt: "Security by obscurity" ist ein ganz schlechter Ansatz für eine solche Routine.
-
Fazit: Möglicherweise ist das, was in den JPG-Daten wie ein Datum aussieht nicht zwingend nur ein Datum (da könnte noch was dran hängen?).
Wenn das eine Frage ist, dann poste bitte Dein Script (plus die von Dir verwendete UDF "_GetExtProperty"), sowie eine JPG-Datei, bei der ein "falsches" Datum zurückgegeben wird.
Eventuell haben wir dann alle etwas von diesem Thread.
-
Hier nochmal in einer Funktion, die Datum und Zeit in den DateTime-String umwandelt, sodass man das gleich an _DateAdd(), _DateDiff() usw. übergeben kann.
AutoIt
Alles anzeigen#include <EventLog.au3> #include <Array.au3> Global $hEventLog = _EventLog__Open("", "System") Global $i = 0, $aEvent Do $aEvent = _EventLog__Read($hEventLog, True, False, $i) If $aEvent[0] = False Then ExitLoop If $aEvent[6] = 6006 Then ExitLoop $i += 1 Until 0 _EventLog__Close($hEventLog) Global $sDateTime = _DateAndTimeToDateTime($aEvent[2], $aEvent[3]) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDateTime = ' & $sDateTime & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Func _DateAndTimeToDateTime($sDate, $sTime) Local $sD = StringRegExpReplace($sDate, '(\d{2})/(\d{2})/(\d{4})', ' $3/$1/$2') Local $aT = StringRegExp($sTime, '(.{2})[: ]', 3) $aT[0] += (StringRight($sTime, 2) = 'PM') ? 12 : 0 If $aT[0] = 12 Then $aT[0] = 0 Return StringFormat('%s %02i:%02i:%02i', $sD, $aT[0], $aT[1], $aT[2]) EndFunc
-
Bitte das Script posten, bei dem diese Fehlermeldung auftritt!
-
Nun, ebenso kurz wie die Frage: mit DirCreate.
Wenn Du mehr Informationen lieferst, kann man auch mehr Hilfe anbieten.
- Welche Dateinamen?
- Mit/ohne Dateiendung?
- Wo sollen die Ordner erstellt werden?
- Als Unterordner von welchem Ordner?
- Dynamisch oder nur einmalig?
-
Ich würde es so machen:
AutoIt
Alles anzeigen#include <Array.au3> Local $aInput[] = ["01:30:00", "-00:30:00", "02:00:00", "-01:00:00"] ;~ _ArrayDisplay($aInput) Local $Summe = _Timeradd($aInput) Msgbox(1,"",$Summe) Func _Timeradd(ByRef $aInput) Local $iSec For $i = 0 To UBound($aInput) - 1 $iSec += _TimeToSec($aInput[$i]) Next Return _SecToTime($iSec) EndFunc Func _TimeToSec(ByRef $sTime) Local $aTmp, $iSign, $iSec $iSign = (StringLeft($sTime, 1) == '-') ? -1 : 1 $aTmp = StringSplit(StringRight($sTime, 8), ':', 2) $iSec = $aTmp[0] * 3600 + $aTmp[1] * 60 + $aTmp[2] Return $iSec * $iSign EndFunc Func _SecToTime($iSec) Local $iHour, $iMin, $iSign = $iSec < 0 ? '-' : '' $iHour = Int($iSec / 3600) $iSec = Mod($iSec, 3600) $iMin = Int($iSec / 60) $iSec = Mod($iSec, 60) Return $iSign & StringFormat('%02i:%02i:%02i', Abs($iHour), Abs($iMin), Abs($iSec)) EndFunc
-
Globale Variablen sollte man generell nicht innerhalb von Funktionen deklarieren, sondern immer im Hauptscript und dann auf jeden Fall vor dem ersten Funktionsaufruf.
-
Ein Input- oder Editcontrol kann auch scrollbar sein und markieren geht sowol mit Tasten und mit der Maus.
-
Das scheint mir doch eher ein XY-Problem zu sein.
Beschreib doch mal, was Du erreichen willst und wie die Ausgangsdaten (bitte Beispieldaten beifügen!) aussehen.
-
ich nehme das Return $aFrequency und schreibe es weg, aber nee, das möchte nicht so wie ich. Also gar nicht.
Versuch's mal so:
AutoIt
Alles anzeigen#include <Array.au3> #include <AutoItConstants.au3> #include <FileConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <ListViewConstants.au3> #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 1080, 610) Global $Input1 = GUICtrlCreateInput("Ich bin eine Testnachricht.", 5, 5, 1000, 20) Global $Input2 = GUICtrlCreateInput("339499542504568557573498571424356429481419498666371439578426583629574422585557423487", 5, 30, 1000, 20) Global $Teiler = GUICtrlCreateLabel("Teiler", 5, 75, 25, 25) Global $aButton[10], $aText = StringSplit('1|2|3|4|5|6|7|8|9|10', '|', 2) For $i = 0 To 9 $aButton[$i] = GUICtrlCreateButton($aText[$i], 35 + 25 * $i, 65, 25, 25) Next Global $Button11 = GUICtrlCreateButton("Analyse starten", 350, 65, 155, 25) Global $aListview[10], $aText = StringSplit('1er|2er|3er|4er|5er|6er|7er|8er|9er|10er', '|', 2) For $i = 0 To 9 $aListview[$i] = GUICtrlCreateListView($aText[$i], 10 + 105 * $i, 100, 100, 500) Next GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $nMsg, $sNumbers, $laenge, $iIndex, $bTT, $iTimer While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $aButton[0] To $aButton[9] $iIndex = $nMsg - $aButton[0] _WriteLVtoFile($aListview[$iIndex], @ScriptDir & '\' & $aText[$iIndex] & '.txt') Case $Button11 $sNumbers = GUICtrlRead($Input2) $laenge = StringLen($sNumbers) For $i = 0 To 9 _GUICtrlListView_DeleteAllItems($aListview[$i]) If ($i = 0) Or (Not Mod($laenge, $i + 1)) Then GUICtrlSetBkColor($aButton[$i], 0x00FF00) ; Grün _AddToListview($aListview[$i], $sNumbers, $i + 1) Else GUICtrlSetBkColor($aButton[$i], 0xFF0000) ; Rot EndIf Next EndSwitch If $bTT Then If TimerDiff($iTimer) > 3000 Then $bTT = False ToolTip('') EndIf EndIf WEnd Func _WriteLVtoFile($idListview, $sFilename) Local $iCount = _GUICtrlListView_GetItemCount($idListview) If $iCount = 0 Then Return Local $hFile = FileOpen($sFilename, $FO_OVERWRITE) If $hFile = -1 Then Return For $i = 0 To $iCount - 1 FileWriteLine($hFile, _GUICtrlListView_GetItemText($idListview, $i)) Next FileClose($hFile) Local $aPos = MouseGetPos() ToolTip($sFilename & ' wurde gespeichert!', $aPos[0], $aPos[1], 'Daten-Analyse', $TIP_INFOICON, $TIP_BALLOON) $iTimer = TimerInit() $bTT = True EndFunc Func _AddToListview($idListview, $sInput, $iChar) Local $aFrequency = _CreateArray($sInput, $iChar) For $i = 0 To UBound($aFrequency) - 1 GUICtrlCreateListViewItem($aFrequency[$i][0] & ' : ' & $aFrequency[$i][1], $idListview) Next _GUICtrlListView_SetColumnWidth($idListview, 0, $LVSCW_AUTOSIZE) EndFunc Func _CreateArray($sInput, $iChar) Local $mFreq[] $sInput = StringRegExpReplace($sInput, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen For $i = 0 To StringLen($sInput) - $iChar Step $iChar $mFreq[StringMid($sInput, $i + 1, $iChar)] += 1 Next Local $aKeys = MapKeys($mFreq), $iCnt = UBound($aKeys), $aFrequency[$iCnt][2] For $i = 0 To $iCnt - 1 $aFrequency[$i][0] = $aKeys[$i] $aFrequency[$i][1] = $mFreq[$aKeys[$i]] Next _ArraySort($aFrequency, 1, 0, 0, 1) Return $aFrequency EndFunc
-
Aber wenn ich z. B. nur hinten eine 0 einfüge und nochmals auf den Button drücke, leert er die Spalten nicht, wo es durch die zusätzloche 0, ja evtl. keinen Teiler gibt.
Ja, stimmt!
Es werden nur die Listviews geleert, die neu gefüllt werden.
Dann muss der Befehl eben oben in die Schleife:
AutoIt
Alles anzeigen#include <Array.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <ListViewConstants.au3> #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 1080, 610) Global $Input1 = GUICtrlCreateInput("Ich bin eine Testnachricht.", 5, 5, 1000, 20) Global $Input2 = GUICtrlCreateInput("339499542504568557573498571424356429481419498666371439578426583629574422585557423487", 5, 30, 1000, 20) Global $Teiler = GUICtrlCreateLabel("Teiler", 5, 75, 25, 25) Global $aButton[10], $aText = StringSplit('1|2|3|4|5|6|7|8|9|10', '|', 2) For $i = 0 To 9 $aButton[$i] = GUICtrlCreateButton($aText[$i], 35 + 25 * $i, 65, 25, 25) Next Global $Button11 = GUICtrlCreateButton("Analyse starten", 350, 65, 155, 25) Global $aListview[10], $aText = StringSplit('1er|2er|3er|4er|5er|6er|7er|8er|9er|10er', '|', 2) For $i = 0 To 9 $aListview[$i] = GUICtrlCreateListView($aText[$i], 10 + 105 * $i, 100, 100, 500) Next GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Global $nMsg, $sNumbers, $laenge While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button11 $sNumbers = GUICtrlRead($Input2) $laenge = StringLen($sNumbers) For $i = 0 To 9 _GUICtrlListView_DeleteAllItems($aListview[$i]) If ($i = 0) Or (Not Mod($laenge, $i + 1)) Then GUICtrlSetBkColor($aButton[$i], 0x00FF00) ; Grün _AddToListview($aListview[$i], $sNumbers, $i + 1) Else GUICtrlSetBkColor($aButton[$i], 0xFF0000) ; Rot EndIf Next EndSwitch WEnd Func _AddToListview($idListview, $sInput, $iChar) Local $aFrequency = _CreateArray($sInput, $iChar) For $i = 0 To UBound($aFrequency) - 1 GUICtrlCreateListViewItem($aFrequency[$i][0] & ' : ' & $aFrequency[$i][1], $idListview) Next _GUICtrlListView_SetColumnWidth($idListview, 0, $LVSCW_AUTOSIZE) EndFunc Func _CreateArray($sInput, $iChar) Local $mFreq[] $sInput = StringRegExpReplace($sInput, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen For $i = 0 To StringLen($sInput) - $iChar Step $iChar $mFreq[StringMid($sInput, $i + 1, $iChar)] += 1 Next Local $aKeys = MapKeys($mFreq), $iCnt = UBound($aKeys), $aFrequency[$iCnt][2] For $i = 0 To $iCnt - 1 $aFrequency[$i][0] = $aKeys[$i] $aFrequency[$i][1] = $mFreq[$aKeys[$i]] Next _ArraySort($aFrequency, 1, 0, 0, 1) Return $aFrequency EndFunc
-
Kann ich den _Singleton eigentlich ganz an den Anfang setzen vor den #Includes?
Nicht vor allen Includes. "Misc.au3" wird für _Singleton benötigt.
Aber ich würde es mal so testen:
AutoIt
Alles anzeigen#AutoIt3Wrapper_Icon=Weltkugel.ico #AutoIt3Wrapper_Outfile_x64=I:\BlpMenu\BlpMenu.exe #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_Fileversion=8.14.0.755 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_ProductName=BlpMenu #AutoIt3Wrapper_Res_ProductVersion=1.0.0 #AutoIt3Wrapper_Res_CompanyName=BLP #AutoIt3Wrapper_Res_LegalCopyright=BLP #AutoIt3Wrapper_Res_Language=1031 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #pragma compile(Icon, I:\BlpMenu\Entwicklung\weltkugel.ico) #include <Misc.au3> Global $sProgName = "BlpMenu" ; Test ob das Programm bereits gestartet ist If _Singleton("BlpMenuCheck", 1) = 0 Then MsgBox($MB_SYSTEMMODAL, "Warnung", "Eine Instanz des Programmes " & $sProgName & " wird bereits ausgeführt!") Exit EndIf #Region header files #include "blp_ToolsAllg.au3" #include <WinAPI.au3> #include <MsgBoxConstants.au3> #EndRegion header files
-
Wo muss ich es machen, das wenn ich auf Button 11 drücke, das dann vorher die "alte Auswertung" gelöscht wird?
Das passiert doch bereits: _GUICtrlListView_DeleteAllItems($idListview) in der Funktion "_AddToListview".
-
"blp_ToolsAllg.au3"
Was steht in dieser UDF?
Wird dort bereits irgendein Code ausgeführt?
Der würde den _Singleton-Befehl nämlich verzögern.
-
Vielleicht kann man damit den Fehler tracen?
Ja, vielleicht kann man das, aber dazu musst Du schonmal Dein Script posten.
-
Vielleicht das mit den "nichts" und "00".
In Binärdateien entspricht ein Nullbyte eben dem Wert 0. Ein Byte geht von 0-255 oder hexadezimal 0x00-0xFF. Das ist als Binärdatei auch normal und völlig ok.
Als Text ist ein Nullbyte aber nicht darstellbar, wie auch noch andere Steuerzeichen. Diese werden vom Texteditor in lesbare Zeichen umgewandelt bzw. weggelassen.
-
Wie mumpel bereits geschrieben hat, würde es mit einem Hex-Editor gehen.
BTW: der beste kostenlose Hex-Editor, den ich kenne, ist HxD (https://mh-nexus.de/de/hxd/).