Ah ok... Das funktioniert auf das konkret abgewählte Item. Deine anderen beiden bleiben aber markiert. Ich hatte gehofft nicht alles abfragen und abwählen zu müssen (im Falle von mehreren markierten Items). Sozusagen "Reset"..
Beiträge von TJF
-
-
Macht's leider nicht...
-
Hallo,
vielleicht stehe ich gerade auf dem Schlauch: Wie kann ich mit " _GUICtrlListBox_SetSel " oder manuell ausgewählte Items wieder gänzlich abwählen? So dass gar nichts markiert ist in der Listbox?
Dank und Gruß
Thomas -
Danke! Das isses!
-
Schon, aber:
[autoit]; Description: Write 1D/2D array to file...
[/autoit]Geht auch damit nicht (Rückgabe: 1)
[autoit]$arr = _FileWriteFromArray("Testneu.txt", $aListe)
[/autoit] -
Hallo,
kann mir jemand sagen, warum dieses "_ArrayDisplay($aListe)" zwar richtig angezeigt wird, jedoch nicht in die Textdatei geschrieben wird? Rückgabewert: -1 ...
[autoit]
[/autoit]
Func _speichern()
$count = _GUICtrlListBox_GetCount($idListe)
Dim $aListe[$count]
For $i = 0 To $count - 1
$aListe[$i] = _GUICtrlListBox_GetText($idListe, $i)
Next
_ArrayDisplay($aListe)
;$hFile = FileOpen("\Testneu.txt", 2)
;MsgBox(0, "Ergebnis: ", $hFile)
$arr = _FileWriteFromArray2D("Testneu.txt", $aListe,0,0,0,0,'|')
;FileClose($hFile)
MsgBox(0, "Ergebnis: ", $arr)
EndFuncDank und Gruß
Thomas -
Hallo Stefan,
es gibt nicht recht viel mehr sachdienlichen Code dazu. Ich lasse das Tool (192 kHz AudioPlayer) so wie beschrieben laufen, klicke auf einen Button (Pause) meiner GIU und das Tool-Fenster öffnet sich um zu fragen, ob ich wirklich auf "Pause" klicken will. Wenn Du das nachstellen möchtest, bräuchtest Du das Tool. Dabei handelt es sich um einen AudioPlayer, der komplett im RAM arbeitet, d.h. du müßtest einige Windows-Rechte (Lock Privileges) einstellen, damit das Teil überhaupt läuft. Ich dachte, dass sowas vielleicht zu weit führt. Deshalb die abstrakte Frage, wie man ein Fenster schon im Vornherein verstecken kann, falls es sich öffnet, bzw. wie man das kurze irritierende Aufpoppen unterdrücken kann...
So poppt es auf jeden Fall kurz auf, bevor dann die Bestätigung folgt:
[autoit]
[/autoit]
Func _pause()
If WinWait($titel) Then
WinSetState($titel, "", @SW_HIDE)
ControlClick($titel, "", "Button1")
EndIf
EndFuncViele Grüße
Thomas -
Danke Stefan,
mein Beispiel stößt hier an seine Grenzen. Ich rufe das Tool schon so auf:
[autoit]
[/autoit]
Run(@WindowsDir & "\system32\cmd.exe /C start /realtime " & '"kk"' & " " & $adir & " " & $mdir_dat, "", @SW_HIDE)Trotzdem öffnet sich das o.g. Messagebox-Fenster. Das mit derselben PID läuft...
Viele Grüße
Thomas -
Hallo,
ich will ein Kommandozeilen-Tool mit einer GUI versehen. Das Tool läßt an einer Stelle eine Messagebox erscheinen, welche ich abfangen und managen will. Dabei soll dieses Fenster gar nicht erst sichtbar werden, sobald dessen Erscheinen von der GUI her ausgelöst wird. Momentan poppt das Fenster noch kurz hoch, bevor es auf "@SW_HIDE" gesetzt wird. Der Vorgang ist also etwa so:
[autoit]
[/autoit]
$titel = "Unbenannt"
Run("notepad")
WinWait($titel)
WinSetState($titel, "", @SW_HIDE)
exitWeil es sich bei dem Tool nur um eine *.exe handelt, dachte ich, ich könnte das vielleicht über ProcessExists anfangs des Scripts schon mit WinSetState auf Hide stellen (soweit das dann überhaupt funktionieren sollte). Das konnte ich nicht weiter verfolgen, weil ich jetzt nicht weiss, wie ich von der PID zu einem Titel komme, den WinSetState verarbeiten kann.
Hat jemand eine Idee?
Dank und Gruß
Thomas -
-
Ja, danke. Da war ich schon. Mir ist der Einstieg von AutoIt her in dieses procedere nur nicht klar...
-
Hallo,
kann mir jemand eine Einstiegshilfe geben, um einen einfachen WASAPI-Audio-Player zu bauen? Gibt es eine UDF oder ein Plugin oder stößt AutoIt hier an seine Grenzen?
Dank und Gruß
Thomas -
Hallo,
läßt sich das irgendwo einstellen dem CLASS-Namen "AutoIt v3 GUI" einen anderen Namen zu geben oder eine Ergänzung?
Das gleiche in Bezug auf Fehlermeldungen. Also anstatt "AutoIt-Error" z.B. "xy.exe - Error "...
Dank und Gruß
-
Kein Problem Danke!
-
Hi,
jetzt bin ich doch hier bei BugFix fündig geworden.
Vielen Dank!
ThomasSpoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
Dim $T
Dim $arATB[513][5]For $r = 0 To 512
[/autoit] [autoit][/autoit] [autoit]
For $c = 0 To 4
$T = Int(Random(20) + 1)
$arATB[$r][$c] = $T
Next
Next
_ArrayDisplay($arATB,"Test",0)
_FileWriteFromArray2D(@ScriptDir & "\test.txt", $arATB);==========================================================================================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Function: _FileReadToArray2D($FILEPATH, $ARRAY [, $DELIM=-1])
;
; Description: Read 1D/2D array from file, if $DELIM is given (<> -1) 2D array will created
;
; Parameter(s): $FILEPATH - path/filename of the file to read in an array
; $ARRAY - array variable to hold readed data
; optional $DELIM - delimiter for 2D-array entries, default -1 (none 2D-array)
;
; Requirement(s): None
;
; Return Value(s): On Success - Returns -1
; On Failure - Returns 0 and sets @error = 1 (given file are not seperated with given delimiter or count of delimiters
; are not equal); @error = 2 (unable to open filepath)
;
; Note: If given file is delimited to create 2D-array ALL lines need the same count of delimiters, otherwise an error occurs!
;
; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
;==========================================================================================================================================
Func _FileReadToArray2D($FILEPATH, ByRef $ARRAY, $DELIM=-1)
Local $fh = FileOpen($FILEPATH, 0), $line, $var, $n = 1
If $fh = -1 Then
SetError(2)
Return 0
EndIf
If $DELIM <> -1 Then
$line = FileReadLine($fh, 1)
$var = StringSplit($line, $DELIM)
If IsArray($var) Then
$Ubound2nd = $var[0]
Local $AR[1][$Ubound2nd]
$AR[0][0] = 0
Else
SetError(1)
Return 0
EndIf
While 1
$line = FileReadLine($fh, $n)
If @error = -1 Then ExitLoop
$var = StringSplit($line, $DELIM)
If IsArray($var) Then
ReDim $AR[UBound($AR)+1][$Ubound2nd]
For $i = 0 To $Ubound2nd-1
$AR[UBound($AR)-1][$i] = $var[$i+1]
Next
$AR[0][0] += 1
Else
SetError(1)
Return 0
EndIf
$n += 1
Wend
Else
Local $AR[1]
$AR[0] = 0
While 1
$line = FileReadLine($fh, $n)
If @error = -1 Then ExitLoop
ReDim $AR[UBound($AR)+1]
$AR[UBound($AR)-1] = $line
$AR[0] += 1
$n += 1
WEnd
EndIf
FileClose($fh)
$ARRAY = $AR
Return -1
EndFunc ;==>_FileReadToArray2D;==========================================================================================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
; Function: _FileWriteFromArray2D($FILEPATH, $ARRAY [, $iROWstart=0 [, $iROWend=0 [, $iCOLstart=0 [, $iCOLend=0 [, $DELIM='|']]]]])
;
; Description: Write 1D/2D array to file, 2D with delimiter between every entry
;
; Parameter(s): $FILEPATH - path/filename of the file to be write
; $ARRAY - array to write from
; optional $iROWstart - start row-index, default 0
; optional $iROWend - end row-index, default Ubound(array)-1
; optional $iCOLstart - start column-index, default 0
; optional $iCOLend - end column-index, default Ubound(array,2)-1
; optional $DELIM - delimiter for 2D-array entries, default '|'
;
; Requirement(s): None
;
; Return Value(s): On Success - Returns -1
; On Failure - Returns 0 and sets @error = 1 (given array is'nt array); @error = 2 (unable to open filepath)
;
; Note: If $iROWstart > $iROWend or $iCOLstart > $iCOLend the values will be swapped among
;
; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
;==========================================================================================================================================
Func _FileWriteFromArray2D($FILEPATH, $ARRAY, $iROWstart=0, $iROWend=0, $iCOLstart=0, $iCOLend=0, $DELIM='|')
If Not IsArray($ARRAY) Then
SetError(1)
Return 0
EndIf
Local $Ubound = UBound($ARRAY)
If $iROWend = 0 Then $iROWend = $Ubound-1
Local $fh = FileOpen($FILEPATH, 2)
If $fh = -1 Then
SetError(2)
Return 0
EndIf
Select
Case $iROWstart < 0 Or $iROWstart > $Ubound-1
$iROWstart = 0
ContinueCase
Case $iROWend < 0 Or $iROWend > $Ubound-1
$iROWend = $Ubound-1
ContinueCase
Case $iROWstart > $iROWend
$tmp = $iROWstart
$iROWstart = $iROWend
$iROWend = $tmp
EndSelect
Local $Ubound2nd = UBound($ARRAY, 2)
If @error = 2 Then
For $i = $iROWstart To $iROWend
FileWriteLine($fh, $ARRAY[$i])
Next
Else
If $iCOLend = 0 Then $iCOLend = $Ubound2nd-1
Select
Case $iCOLstart < 0 Or $iCOLstart > $Ubound2nd-1
$iCOLstart = 0
ContinueCase
Case $iCOLend < 0 Or $iCOLend > $Ubound2nd-1
$iCOLend = $Ubound2nd-1
ContinueCase
Case $iCOLstart > $iCOLend
$tmp = $iCOLstart
$iCOLstart = $iCOLend
$iCOLend = $tmp
EndSelect
For $i = $iROWstart To $iROWend
$tmp = ''
For $k = $iCOLstart To $iCOLend
If $k < $iCOLend Then
$tmp &= $ARRAY[$i][$k] & $DELIM
Else
$tmp &= $ARRAY[$i][$k]
EndIf
Next
FileWriteLine($fh, $tmp)
Next
EndIf
FileClose($fh)
Return -1
EndFunc ;==>_FileWriteFromArray2D -
Hallo SEuBo,
ich bekomme Deine Funktion nicht dazu, dass sie Zeilen als Zeilen und Spalten als Spalten schreibt. Könntest Du mir da bitte nochmal helfen?
Dank und Gruß
Thomas -
Hi,
vielen Dank! Das mit dem 5D ist mir nach meinem Posting auch gekommen...
Die *.txt schreibt jetzt alle Spalten formatiert in Zeilen - was schon mal ein Fortschritt ist... Bloß sollten die Spalten als Spalten erscheinen - also anders herum. Genauso wie es _ArrayDisplay anzeigt. Anliegend unten schicke ich mal eine Datei mit 2 Spalten. Das sind Messdaten, die links die Frequenz und rechts den Pegelwert stehen haben. Ich will die linke Reihe auswerten und in das große Array schreiben, dann rechts daneben die (relativen) Pegelwerte in absolute umrechnen und ebenfalls in das Array schreiben. Danach noch drei andere elektrische Werte (Spalten) aus anderen Dateien dazu. Das muss wieder in derselben Form sein, damit alle Meßdaten zusammen von einer Simulationssoftware auf einmal eingelesen werden können. Grundsätzlich soll das Endergebnis dann also so ausschauen wie in der anliegenden Datei - nur mit 5 Spalten. Dabei ist (neben dem Inhalt natürlich) die Formatierung der *.txt das entscheidende...
Viele Grüße
Thomas -
Meine letzte Frage erübrigt sich zumindest so:
[autoit]
[/autoit]
For $r = 0 To 512
For $c = 0 To 4
$arATB[$r][$c] = ""
Next
NextDie erste Frage mündet dahin, wie die Funktion _FileWriteFromArray5D formatiert...
Dank und Gruß an alle!
Thomas -
Die Erstellung der *.txt klappt jetzt grundsätzlich mit den Funktionen, die SEuBo gepostet hat. Vielen Dank! Nur mit den Trennern hapert es noch. S. Anlagen. Ich wollte in 5 Spalten alle Zeilen schreiben...
Hat noch jemand eine Idee, wie man ähnlich ein leeres Array erstellen kann, das dann mit mehreren eindimensionale Zahlenspalten aus einem anderen Array eingelesen werden kann?
Dank und Gruß
Thomas -
Hallo,
kann mir jemand sagen warum die *.txt Datei zwar angelegt aber leer bleibt?
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <Array.au3>
#include <File.au3>
Dim $T
Dim $arATB[513][5]For $r = 0 To 512
[/autoit]
For $c = 0 To 4
$T = Int(Random(20) + 1)
$arATB[$r][$c] = $T
Next
Next
;_ArrayDisplay($arATB,"Test",0)
_FileWriteFromArray(@ScriptDir & "\atb.txt", 0,0)Und gleich noch eine Zusatzfrage: Wie könnte das ganze Array "leer" erstellt werden?
Dank und Gruß
Thomas