Sag das doch gleich ![]()
$Dimension = UBound($array, 0)
If $Dimension = 1 Then
; 1D- Array
ElseIf $Dimension = 2 Then
; 2D-Array
EndIf
Sag das doch gleich ![]()
$Dimension = UBound($array, 0)
If $Dimension = 1 Then
; 1D- Array
ElseIf $Dimension = 2 Then
; 2D-Array
EndIf
Da ich nicht weiß, woraus du das Array erzeugst, kann ich schlecht sagen warum die Fehlermeldung kommt. Es sieht fast so aus, als ob du auf eine nicht existierende Dimension zugreifen willst.
Freut mich, dass es dir geholfen hat.
Ist aber eher zufällig, dass ich dazu was sagen konnte. Bin auf Dienstreisen häufig in einem Hotel, dass genau diese Probleme hat(te). ![]()
Somit konnte ich mich zwangsfreiwillig damit befassen. ![]()
Möglich ist es - aber welchen Sinn soll das haben? Eine Variable muß einen fixen Namen haben, damit du drauf zugreifen kannst. Nur der Inhalt ist variabel. Wenn du einen dynamischen Variablennamen hast, kannst du nicht mehr draufzugreifen.
Du kannst alle Ctrl in ein Array packen - du kannst sie sogar direkt im Array erzeugen:
[autoit]#include <GUIConstants.au3>
Local $arGUICtrl[3] = [ _
Execute('GUICreate("TEST")'), _
Execute('GUICtrlCreateButton("Button 1", 20, 20, 60, 21)'), _
Execute('GUICtrlCreateLabel("BlaBla", 100, 23, 50, 17)')]
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $arGUICtrl[1]
MsgBox(0, '', 'Button geklickt')
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Also dLan hat so einige Tücken, die dir der Anbieter gerne verschweigt
.
Damit es funktioniert sind folgende Bedingungen nötig:
- Multistecker und dein Adapter müssen im selben Stromkreis stecken
- in diesem Stromkreis darf kein Fernseher oder Transformator in Betrieb sein
Optimal ist ein eigener Stromkreis ausschließlich für das Netzwerk.
Aber probier mal, den Adapter in verschiedenen Steckdosen - das könnte schon was bringen.
@pceumel:
[OT]
Nur mal zur Info: Eine Zarge ist der Teil einer Tür, der gemeinhin auch als Rahmen bezeichnet wird.
Nun schau dir mal unter diesem Aspekt deine Signatur an...
Ich denke mal, du meinst verzagen.
[/OT]
Sollte so auch reichen (ungetestet):
[autoit]$str = Execute('#NoTrayIcon' & @LF & _
'Opt("WinWaitDelay",0)' & @LF & _
'WinWaitActive("[Class:#32770]")' & @LF & _
'ControlSetText("","","Button1","Bin dabei")' & @LF & _
'ControlSetText("","","Button2","Mag nicht")' & @LF & _
'ControlSetText("","","Button3","Vielleicht")')
Run(RegRead("HKLM\SOFTWARE\Autoit v3\Autoit","Installdir")&"\AutoIt3.exe " & $str)
[/autoit][autoit][/autoit][autoit]MsgBox(34,"Frage","Gehst du heute mit mir aus?")
[/autoit]Das Problem mit der Pipe ('|') scheint ein Bug von Stringsplit zu sein. Die Umgehung dieses Problems mit Stringreplace wird wohl die beste Lösung dafür sein.
Nein, ist kein Bug. Die Pipe ist das Standardtrennzeichen in _ArrayDisplay. Das führt dann zu Fehlern.
Schaue hier:
$str = "abc|def ghi|jklö 123.456 789,012"
$split = StringSplit($str, ' ', 1)
For $i = 1 To UBound($split) -1
ConsoleWrite($split[$i] & @CRLF)
Next
; ....
_ArrayDisplay($files)
ReDim $files[UBound($files)][2]
For $i = 1 To UBound($files, 1) - 1
If FileExists($files[$i][0]) Then
$byte = $byte + FileGetSize($files[$i][0])
$files[$i][1] = FileGetSize($files[$i][0]
EndIf
Next
_ArrayDisplay($files)
; ....
Nein, in diesem Punkt hast du völlig recht. Global überschreibt Locale Variable gleichen Namens.
Die Zählervariable ist von Haus aus als Local deklariert. Sie braucht also nicht extra deklariert werden.
UBound ist die Obergrenze des Array, also die Anzahl der Elemente. Da mit Index 0 für das erste Element adressiert wird, hat das letzte Element den Index UBound-1.
Lies mal mein Tut - Signatur.
For $i = 1 To $Anzahl
[/autoit]ist falsch, da $Anzahl = UBound ist. Du kannst aber nur bis UBound -1 adressieren.
Richtig:
For $i = 1 To $Anzahl -1
[/autoit]Wenn gesplittet wird mit Leerzeichen als Splitter, dann ist logischerweise im Splitarray hinterher kein Leerzeichen mehr vorhanden, da es ja Trennzeichen ist. ![]()
Oder so:
#include <GUIConstantsEx.au3>
#Include <GuiListView.au3>
Opt("GUIOnEventMode", 1)
$b_form = GUICreate("Test", 195, 130, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE,"Close")
$b_list = GUICtrlCreateListView("Button|Frequenz|Delay", 8, 8, 179, 86)
GUICtrlSendMsg(-1, 0x101E, 0, 50)
GUICtrlSendMsg(-1, 0x101E, 1, 75)
GUICtrlSendMsg(-1, 0x101E, 2, 50)
$b_list_0 = GUICtrlCreateListViewItem("b_1|120|100", $b_list)
GUICtrlCreateListViewItem("b_2|220|100", $b_list)
$b_1 = GUICtrlCreateButton("Beep", 8, 96, 179, 25, 0)
GUICtrlSetOnEvent(-1,"_Beep")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Close()
Exit
EndFunc ;==>Close
Func _Beep()
Local $aIndex = _GUICtrlListView_GetSelectedIndices($b_list, True)
If $aIndex[0] = 0 Then Return
Beep(_GUICtrlListView_GetItemText($b_list, $aIndex[1], 1), _GUICtrlListView_GetItemText($b_list, $aIndex[1], 2))
EndFunc ;==>_1
Soweit ich weiß, geht nix vor der Anmeldung.
Edit:
Wenn du nur 'ne andere Start-GUI zeigen willst - das geht. Einfach mal googeln, ist ausführlich in etlichen Foren und Beiträgen beschrieben.
Du kannst ein Skript per RegistryEintrag im Autostart aufrufen lassen.
Wenn ich nicht irre, ist das der Schlüssel: HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run
StringLower ( "string" )
[/autoit]Ja, so RICHTIG assoziativ wird das nicht gelingen. Da ich in einem Array speichere, kann ich dessen Struktur nicht aus den Angeln heben. Eigentlich sind es nur die Funktionen, die dem User vorgaukeln, dass keine Index- oder Größenverwaltung stattfindet. Aber im Kern bleibt es ein stinknormales Indexbasiertes Array.
Was du ansprichst ist ein 2D-Array zum Speichern von Schlüssel-Wert-Paaren (oder als Objekt: Scripting.Dictionary).
Die Erweiterung kommt als nächstes.
Assoziativ ist es natürlich nur bedingt, da du nicht adressieren mußt sondern den Wert als solchen zufügst, mit dem Wert auf dessen Existenz prüfst.
Mein Anliegen war hauptsächlich, ein "Objekt" ohne Netframework zu erstellen, dass aber die gesamte Funktionalität einer ArrayList aufweist. Und das ist gelungen. ![]()