Hi Bugfix,
Deine Variante würde mir besser gefallen.
Aber kann ich das auf ein Button anwenden ?
lg
Speedy
Hi Bugfix,
Deine Variante würde mir besser gefallen.
Aber kann ich das auf ein Button anwenden ?
lg
Speedy
Hi,
Meinst du das hier BuxFix:
mehrspaltige-listview-selected-items
Ich finde es mit GUICtrlCreateListView glaub ich würde es funktionieren aber da kann ich es nicht mit den Button aufrufen
muss ich da ein Child Gui erstellen ?
@ alpines Ich habe es eh mit ein array und mit ein csv datei. aber das ganze Programm ist zu groß deshalb hab ich es so schnell geschrieben.
lg
Hallo,
Leider stehe ich wieder einmal an und finde zu diesen Thema nix, vielleicht hat es wer von euch schon mal erstellt.
Immer wenn die Liste länger als der Bildschirm wird muss ich mit einzelenen klickt runter scrolen.
gibts hier nicht eine bessere lösung ?
Hier das komplette script:
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
$hGUI = GUICreate("Test", 400, 600, 0, 0)
#Region Button
$1bh = GUICtrlCreateButton("Test 1", 100, 118, 60, 40)
$1Context = GUICtrlCreateContextMenu($1bh)
$1MenuItem1 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem2 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem3 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem4 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem5 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem6 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem7 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem8 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem9 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem10 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem11 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem12 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem13 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem14 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem15 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem16 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem17 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem18 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem19 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem20 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem21 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem22 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem23 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem24 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem25 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem26 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem27 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem28 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem29 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem30 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem31 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem32 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem33 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem34 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem35 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem36 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem37 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem38 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem39 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem40 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem41 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem42 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem43 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem44 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem45 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem46 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem47 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem48 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem49 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem50 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem51 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem52 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem53 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem54 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem55 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
$1MenuItem56 = GUICtrlCreateMenuItem("Line Test 1", $1Context)
$1MenuItem57 = GUICtrlCreateMenuItem("Line Test 2", $1Context)
$1MenuItem58 = GUICtrlCreateMenuItem("Line Test 3", $1Context)
$1MenuItem59 = GUICtrlCreateMenuItem("Line Test 4", $1Context)
$1MenuItem60 = GUICtrlCreateMenuItem("Line Test 5", $1Context)
GUICtrlSetFont($1bh, 8.5, 500, 0, "")
#EndRegion Button
GUISetState(@SW_SHOW)
While 1
Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $1bh
ShowMenu($hGUI, $nMsg, $1Context)
Case $1MenuItem1
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem2
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem3
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem4
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem5
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem6
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem7
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem8
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem9
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem10
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem11
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem12
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem13
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem14
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem15
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem16
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem17
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem18
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem19
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem20
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem21
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem22
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem23
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem24
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem25
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem26
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem27
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem28
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem29
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem30
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem31
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem32
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem33
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem34
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem35
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem36
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem37
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem38
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem39
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem40
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem41
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem42
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem43
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem44
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem45
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem46
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem47
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem48
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem49
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem50
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem51
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem52
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem53
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem54
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem55
GUICtrlSetData($1bh, "Line Test 5")
Case $1MenuItem56
GUICtrlSetData($1bh, "Line Test 1")
Case $1MenuItem57
GUICtrlSetData($1bh, "Line Test 2")
Case $1MenuItem58
GUICtrlSetData($1bh, "Line Test 3")
Case $1MenuItem59
GUICtrlSetData($1bh, "Line Test 4")
Case $1MenuItem60
GUICtrlSetData($1bh, "Line Test 5")
EndSwitch
WEnd
#Region Func
Func ShowMenu($hWnd, $CtrlID, $nContextID)
Local $arPos, $x, $y
Local $hMenu = GUICtrlGetHandle($nContextID)
$arPos = ControlGetPos($hWnd, "", $CtrlID)
$x = $arPos[0]
$y = $arPos[1] + $arPos[3]
ClientToScreen($hWnd, $x, $y)
TrackPopupMenu($hWnd, $hMenu, $x, $y)
EndFunc ;==>ShowMenu
; Convert the client (GUI) coordinates to screen (desktop) coordinates
Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
Local $stPoint = DllStructCreate("int;int")
DllStructSetData($stPoint, 1, $x)
DllStructSetData($stPoint, 2, $y)
DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
$x = DllStructGetData($stPoint, 1)
$y = DllStructGetData($stPoint, 2)
; release Struct not really needed as it is a local
$stPoint = 0
EndFunc ;==>ClientToScreen
; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
EndFunc ;==>TrackPopupMenu
#EndRegion Func
Alles anzeigen
Ich hab euch ein Bild angehängt damit man es besser sieht was ich meine die 2 Pfeile die oben und unten sind.
Da würde ich gerene ein Scrollbalken haben.
lg
Speedy
Hey Musashi Danke,
die Zahl nach dem von sollten noch in einer eigenen Spalte kommen.
Damit ich das auch besser sortieren kann.
hab es so umgebaut:
#include <Array.au3>
Global $g_sFile, $g_aMatches
$g_sFile = FileRead(@ScriptDir & "\Log_test.txt")
$g_aMatches = StringRegExp($g_sFile, "(?i)[-\s]\d+ von \d+", 3)
Global $g_aMatchesfinal[UBound($g_aMatches)][2]
_ArrayDisplay($g_aMatches)
If Not @error Then
For $i = 0 To UBound($g_aMatches) - 1
$g_aMatchesfinal[$i][0] = StringReplace(StringStripWS($g_aMatches[$i], 8), 'von', ',')
$g_aMatchesfinal[$i][1] = StringReplace(StringStripWS($g_aMatches[$i], 8), 'von', ',')
Next
_ArrayDisplay($g_aMatchesfinal, "Matches :")
EndIf
Alles anzeigen
Wie muss ich den zweiten such Befehl der 2 Spalte ändern ?
Das Tut von AspirinJunkie werd ich mir heut oder morgen durchmachen.
hoff das ich mich mit Regexp dann auch besser auskenne, hab in den Bereich noch gar nix gemacht.
Hallo,
Ich komm da nicht so ganz weiter.
Die Grund Funktion will nicht mal bei mir.
Ich habe folgendes als bsp in ein txt Log stehen:
2020-10-01 19:53:13.360 [BBS] Input_coin_NW
2020-10-01 19:53:13.360 [BBS] addCoin: 10000 von 4
2020-10-01 19:53:13.371 [BBS] updateAcceptance cashmode: 0
2020-10-01 19:53:13.371 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 19:53:20.250 [BBS] Sys_coin_NW
2020-10-01 19:53:20.250 [BBS] addCoin: -10000 von 5
2020-10-01 19:53:20.257 [BBS] updateAcceptance cashmode: 0
2020-10-01 19:53:20.258 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 20:56:46.419 [BBS] Input_coin_NW
2020-10-01 20:56:46.419 [BBS] addCoin: 20000 von 4
2020-10-01 20:56:46.429 [BBS] updateAcceptance cashmode: 0
2020-10-01 20:56:46.429 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 20:56:53.961 [BBS] Sys_coin_NW
2020-10-01 20:56:53.961 [BBS] addCoin: -20000 von 5
2020-10-01 20:56:53.967 [BBS] updateAcceptance cashmode: 0
2020-10-01 20:56:53.968 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 20:58:21.829 [BBS] Input_coin_NW
2020-10-01 20:58:21.829 [BBS] addCoin: 1000 von 3
2020-10-01 20:58:21.840 [BBS] updateAcceptance cashmode: 0
2020-10-01 20:58:21.840 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 20:58:21.840 [BBS] WM_INTCON_FLOAT_LEVEL
2020-10-01 20:58:21.840 [BBS] updateAcceptance cashmode: 0
2020-10-01 20:58:21.840 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 20:58:23.196 [BBS] Sys_coin_NW
2020-10-01 20:58:23.196 [BBS] addCoin: -1000 von 5
2020-10-01 20:58:23.201 [BBS] updateAcceptance cashmode: 0
2020-10-01 20:58:23.201 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 21:10:44.222 [BBS] Input_coin_NW
2020-10-01 21:10:44.222 [BBS] addCoin: 20000 von 4
2020-10-01 21:10:44.232 [BBS] updateAcceptance cashmode: 0
2020-10-01 21:10:44.232 [BBS] SendD BS_AA_COINACCEPT
2020-10-01 21:11:09.492 [BBS] Sys_coin_NW
2020-10-01 21:11:09.492 [BBS] addCoin: -2000 von 5
2020-10-01 21:11:09.499 [BBS] updateAcceptance cashmode: 0
2020-10-01 21:11:09.499 [BBS] SendD BS_AA_COINACCEPT
Alles anzeigen
Ich würde hier gern ein Script schreiben wo ich das Log so ausgelesen bekomm das mir ein Excel, CSV nur die wichtigsten Daten angezeigt werden.
zb.:
10000 , 4
-10000 , 5
20000 , 4
Hier mal mein Script:
#include <Array.au3>
#include <File.au3>
#include <String.au3>
Global $sFileName = @ScriptDir & "\Log_test.txt"
Example()
Func Example()
Local $aFileRead
Local $aFileLine[0][2]
_FileReadToArray($sFileName, $aFileRead)
If @error Then Exit MsgBox(16, "Error", "Unable to read: " & $sFileName)
ReDim $aFileLine [UBound($aFileRead)][2]
For $i = 0 To UBound($aFileRead)
$aFileLine[$i][0] = _StringBetween($aFileRead[$i], "addCoin: ", " von")
If Not @error Then ExitLoop
Next
_ArrayDisplay($aFileLine)
EndFunc
Alles anzeigen
Bekomm nur Blödsinn heraus.
lg
Speedy
Hi,
ich verwende es in ein Button array wo schon viel integriert ist.
Das wäre find ich am einfachsten.
ich möchte eigentlich nur das eine Array zu einen anderen Arraynamen umbenannt wird wenn es zutritt.
Liebe Grüße
Hallo,
Geht das überhaupt das man ein Array als Variablen Array Namen deklarieren kann ?
hier ein bsp.:
#include <Array.au3>
Global $arTest[0][0]
Global $arDeviceList=[ _
["One", 1,3, "0.100", 10, "$arList1"], _
["Two", 2,4, "0.500", 11, "$arList1"], _
["Three", 3,5, "0.600", 12, "$arList2"], _
["Four", 3,5, "0.600", 12, "$arList2"], _
["Five", 3,5, "0.600", 12, "$arList3"], _
["Six", 6,7, "0.150", 13, "$arList4"] _
]
Global $arList1=[ _
["1 Test 1","1",1,1,1,1], _
["1 Test 2","2",2,2,2,2], _
["1 Test 3","3",3,3,3,3], _
["1 Test 4","4",4,4,4,4], _
["1 Test 5","5",5,5,5,5] _
]
Global $arList2=[ _
["2 Test 1","1",1,1,1,1], _
["2 Test 2","2",2,2,2,2], _
["2 Test 3","3",3,3,3,3], _
["2 Test 4","4",4,4,4,4], _
["2 Test 5","5",5,5,5,5] _
]
Global $arList3=[ _
["3 Test 1","1",1,1,1,1], _
["3 Test 2","2",2,2,2,2], _
["3 Test 3","3",3,3,3,3], _
["3 Test 4","4",4,4,4,4], _
["3 Test 5","5",5,5,5,5] _
]
Global $arList4=[ _
["3 Test 1","1",1,1,1,1], _
["3 Test 2","2",2,2,2,2], _
["3 Test 3","3",3,3,3,3], _
["3 Test 4","4",4,4,4,4], _
["3 Test 5","5",5,5,5,5] _
]
If $arDeviceList[0][5] = "$arList1" Then
For $i=0 to UBound($arList1)-1 step 1
For $j=0 to UBound($arList1,2)-1 step 1
$arTest[$i][$j] = $arList1[$i][$j]
Next
Next
Else
For $i=0 to UBound($arList2)-1 step 1
For $j=0 to UBound($arList2,2)-1 step 1
$arTest[$i][$j] = $arList2[$i][$j]
Next
Next
EndIf
For $i=0 to UBound($arTest)-1 step 1
ConsoleWrite ($arTest[$i][0])
Next
Alles anzeigen
Da gibt es ja sicher eine Möglichkeit ?
Liebe Grüße
Speedy
Hallo,
Das ist auch gut aber mir kommt gerade drauf das ich es anders machen kann.
zb. ich lass es mit ein Gui eintragen.
Hier mal meine simples Gui ohne Hintergrund Funktionen.
Plan ist ich Trage die Daten ein zb.Name: Line 1 Nummer: 105
Wäre doch besser wenn hier immer das File eingelesen und wieder abgespeichert wird.
Mit Create erstell ich eine neue Zeile und ich will es auf max 5 Nummer bzw. Spalten begrenzen.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Eingabehilfe = GUICreate("Eingabehilfe", 381, 588, 192, 124)
$Input1 = GUICtrlCreateInput("", 16, 32, 193, 21)
$Input2 = GUICtrlCreateInput("", 224, 32, 41, 21)
$Name = GUICtrlCreateLabel("Name", 16, 8, 32, 17)
$Nummer = GUICtrlCreateLabel("Nummer", 224, 8, 43, 17)
$Create = GUICtrlCreateButton("Create", 16, 64, 75, 24)
$Delete = GUICtrlCreateButton("Delete", 272, 31, 75, 24)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Alles anzeigen
Ich versuch es mal ob ich so etwas komplexes schon schreiben kann bin noch nicht so Fit in der Materie.
Liebe Grüße
Hi
Danke für die Tipps das mit csv werde ich vermutlich verwenden.
Es ist auch einfacher in Excel zu bearbeiten falls es wer wünscht.
lg
Hallo ihr Lieben,
Ich würde gerne ein txt File auslesen und zu ein array erzeugen.
Hier die Daten aus meinen Text Datei:
Line 1 ;1 ;0
Line 2 ;1 ;0 ;2
Line 3 ;1 ;0 ;3
Line 5 ;1 ;0 ;4
Line 6 ;1 ;0 ;5 ;7
Ich will immer mit ein ";" eine Spalte erzeugen, nur leider wo weniger eingetragen ist kommt dann ein Fehler.
#include <file.au3>
#include <array.au3>
Local $aFile = ""
_FileReadToArray(@ScriptDir & "\test.txt", $aFile)
Local $a2D[$aFile[0]][5]
For $i = 1 To $aFile[0]
$aSplit = StringSplit($aFile[$i], ";",2)
$a2D[$i-1][0] = $aSplit[1]
$a2D[$i-1][1] = $aSplit[2]
$a2D[$i-1][2] = $aSplit[3]
$a2D[$i-1][3] = $aSplit[4]
$a2D[$i-1][4] = $aSplit[5]
Next
_ArrayDisplay($a2D)
Alles anzeigen
Hoff dafür gibt es eine einfache Lösung für dieses Problem ?
Liebe Grüße
Speedy
Hallo Ihr lieben,
Ich habe endlich wieder weiter gemacht mit meiner Tv Steuerung.
Ein komischer Bug hab ich bemerkt wo ich nicht so ganz weiter kommt.
Wisst Ihr eine Lösung in den Script weiter Oben.
Wenn ich in der
Global $arTvList=[ _
["192.168.55.225", $i_nec_port, "TV 1", 100, 100], _
["192.168.55.225", $i_nec_port, "TV 7", 700, 100] _
] ;All client IP´s
weniger als 3 Tv erstelle zb. nur 2 funktioniert das Contextmenü nicht mehr zum aufklappen. komisch das es mit der Linken Mausstate geht.
Wenn 3 oder mehr sind funktioniert alle ohne Probleme.
Das hab ich in der zwischen zeit geändert da ich kein:
Global $iStartOfContextMenuButtons=X
haben möchte wird ja eh von der Array Liste selbst gezählt.
Hier noch die änderung dazu:
case 1 ; CH Button
$arTvListControls[$i][$j][1]($hGUI,$nMsg,$arTvListControls[$i][$j+1][0])
case Else ;all contextmenu items
telnet_send($arTvList[$i][0],$arTvList[$i][1],$arTvListControls[$i][$j][1],$arTvListControls[$i][$j][2])
GUICtrlSetData($arTvListControls[$i][1][0],$arContextMenuButtons[$j-UBound($arTvList)][0])
If $arContextMenuButtons[$j-UBound($arTvList)][0]=$sRestart Then
GUICtrlSetData($arTvListControls[$i][1][0],"")
EndIf
Func _refreshTvButtons()
;resize control array
ReDim $arTvListControls[UBound($arTvList)][UBound($arTvList)+UBound($arContextMenuButtons)][3]
;create new controls
For $i=0 to UBound($arTvList)-1 step 1
$arTvListControls[$i][0][0]=GUICtrlCreateButton($arTvList[$i][2],$arTvList[$i][3],$arTvList[$i][4],$iTvListItemWidth,$iTvListButtonHeight)
GUICtrlSetFont($arTvListControls[$i][0][0], 8.5, 700, 0, "")
$arTvListControls[$i][1][0]=GUICtrlCreateButton("",$arTvList[$i][3],$arTvList[$i][4]+$iTvListButtonSpace,$iTvListItemWidth,$iTvListButtonHeight)
$arTvListControls[$i][1][1]=ShowMenu
GUICtrlSetFont($arTvListControls[$i][1][0], 8.5, 500, 0, "")
$arTvListControls[$i][2][0]=GUICtrlCreateContextMenu($arTvListControls[$i][1][0])
For $j=0 to UBound($arContextMenuButtons)-1 step 1
$arTvListControls[$i][UBound($arTvList)+$j][0]=GUICtrlCreateMenuItem($arContextMenuButtons[$j][0],$arTvListControls[$i][2][0])
$arTvListControls[$i][UBound($arTvList)+$j][1]=$arContextMenuButtons[$j][1]
$arTvListControls[$i][UBound($arTvList)+$j][2]=$arContextMenuButtons[$j][2]
Next
Next
EndFunc
Alles anzeigen
Hat hier Irgendwer eine Idee ?
lg
Speedy
Hi Oscar,
Funktioniert bei dir die Namensauflösung ?
weil bei mir kann er es nicht auflösen.
Am Router kann ich aber eindeutig den Hostname erkennen und wurde auch richtig eingetragen im $sServerName.
Sollte dies bei jedem Gerät funktionieren wo ein Hostname korrekt eingetragen ist ? (in meinen Fall ein TV)
Wenn ich die IP Manuell eintrage funktioniert alles einwandfrei Dafür mal ein großes DANKE.
lg
Speedy
Hallo,
Hoff das ich euch nicht schon am nerv gehe.
Langsam aber doch gefällt mir die array sache immer mehr, vor allem was man alles damit machen kann.
Hier noch mal paar fragen. hoff das ich das jetzt schon halbwegs richtig beschrieben habe:
#Region Func
Func _refreshTvButtons()
;resize control array
ReDim $arTvListControls[UBound($arTvList)][$iStartOfContextMenuButtons+UBound($arContextMenuButtons)][2]
Es wird ein 3d Array erstellt mit einmal der arTvList wie viel Elemente als Liste enthalten sind, die zweite ist [$iStartOfContextMenuButtons+UBound ($arContextMenuButtons)] die als Spalten eingefügt werden von der Liste $arContextMenuButtons,und die dritte ist die 2 3d Dimension.
Nur was ich hier nicht verstehe ist warum ich die Telnet befehle als Spanten anhänge das ist mir zurzeit noch zu hoch.
Auch versuche ich die $iStartOfContextMenuButtons komplett zu entfernen da ich dies eh nicht benötige.
Aber das bekomm ich auch nicht hin.
Zb hab ich versucht ein 2. Telnet command hinzuzufügen was hintereinander ausgeführt werden soll.
wo kann ich den 2 befehle hinzufügen. Im Array $arContextMenuButtons als nächste spalte nur beim:
schaff ich es nicht das der 2. Command dem Telnet func mitübergeben wird.
Wie komm ich darauf das der 2. command vom $arContextMenuButtons [2] abgerufen wird.
Switch $j
case 0 ; FB Button not used
case 1 ; CH Button
$arTvListControls[$i][$j][1]($hGUI,$nMsg,$arTvListControls[$i][$j+1][0])
case Else ;all contextmenu items
telnet_send($arTvList[$i][0],$arTvList[$i][1],$arTvListControls[$i][$j][1])
GUICtrlSetData($arTvListControls[$i][1][0],$arContextMenuButtons[$j-$iStartOfContextMenuButtons][0])
If $arContextMenuButtons[$j-$iStartOfContextMenuButtons][0]=$sRestart Then
GUICtrlSetData($arTvListControls[$i][1][0],"")
EndIf
;Telnet_send
Func telnet_send($sIp,$iPort,$sCommand,$sCommand2)
TCPStartup ()
$Conection=TCPConnect($sIp,$iPort)
If @error Then
MsgBox (0,"Error","Could not establish connection to: "&$sIp&":"&$iPort)
return;
EndIf
TCPSend($Conection,$sCommand&Chr(10))
If @error Then
MsgBox(0,"Error","Could not send the command: "&$sCommand&" to "&$sIp&":"&$iPort)
EndIf
Sleep(300)
TCPSend($Conection,$sCommand2&Chr(10))
If @error Then
MsgBox(0,"Error","Could not send the command: "&$sCommand2&" to "&$sIp&":"&$iPort)
EndIf
EndFunc
; End Telnet_send
Alles anzeigen
lg
Speedy
Hi Oscar,
Danke auf die Idee bin ich gar nicht gekommen
aber wäre es technisch möglich dies auch über Telnet auszulesen.
mich würde nur interessieren da ich vielleicht auch andere befehle auslesen möchte.
lg
Speedy
Hi,
Mach gerade mehrere Übungen mit Arrays ein kurze zwischen frage hätt ich.
Beim Stringsplit
$string = "abcdef"
Global $aSplit = StringSplit($string, "") ; leerer Trennzeichenstring führt zu Trennung nach jedem Zeichen
ConsoleWrite($aSplit[0] & @LF)
Stimmt das wenn ich das array mit
Local $aTest [5] deklariere ruf ich es mit
$aTest [0] beginned ab.
wenn ich zählen lass ist [0] immer die anzall der Elemente. und es beginnt mit [1] (1D array)
lg
Speedy
Hallo,
Versuche gerade von einem Gerät die Mac Adresse auszulesen und zu verarbeiten.
wenn ich mich mit putty verbinde und den befehlt get_mac_adress eingebe bekomm ich als Rückmeldung:
Hwaddr: b9:28:A3:39:BB:13 - Succesfull
Dei Mac Adresse muss ich das mit mit sha512 encoden und ein weiteren Telnetcommand schicken.
Leider funktioniert das auslesen nicht
#include <MsgBoxConstants.au3>
Global $sip = "192.168.0.225"
Global $iport = "8000"
Global $scommand_1 = "change_user_to admin XXXX"
Global $scommand_2 = "get_mac_address"
_telnet_send ()
Func _telnet_send ()
TCPStartup ()
$Conection = TCPConnect ($sip, $iport)
If @error Then MsgBox (0,"Error","IP address not reachable")
TCPSend ( $Conection, $scommand_1 & Chr ( 10 ) )
If @error Then
MsgBox (0,"Error","Send comannd= " & $scommand_1 & " failed")
Exit
EndIf
TCPSend ( $Conection, $scommand_2 & Chr ( 10 ) )
If @error Then
MsgBox (0,"Error","Send comannd= " & $scommand_2 & " failed")
Exit
EndIf
$recv = TCPRecv($Conection, 2048)
MsgBox( 1, "mac address", "The mac address is: " & $recv)
EndFunc
Alles anzeigen
Kann mir wer vieleicht sagen was falsch ist.
irgend wie find ich im google nur extrem lange scripte das ich es mir nicht wirklich rauslesen kann.
lg
Speedy
Hallo ihr Lieben,
Also erst mal danke für deine Erklärung ich hab mal gerstern und heute sehr viele Aha Effekte gehabt.
Das mit den Arrays hab ich jetzt verstanden auch wie ich es abrufe. (zumindest mal 1d und 2d Arrays, bei den 3D denk ich auch das ich in der Theorie verstehe)
hab auch noch mal ein paar anderen Sachen durchgelesen.
Hier hab ich noch ein paar Unklarheiten gefunden, was ich noch nicht genau versteht.
Hier mal der Code vom Func _refreshTvButtons()
Global $iStartOfContextMenuButtons=7
Global $arTvListControls[0][0][2]
Func _refreshTvButtons()
;resize control array
ReDim $arTvListControls[UBound($arTvList)][$iStartOfContextMenuButtons+UBound($arContextMenuButtons)][2]
;create new controls
For $i=0 to UBound($arTvList)-1 step 1
$arTvListControls[$i][0][0]=GUICtrlCreateButton($arTvList[$i][2],$arTvList[$i][3],$arTvList[$i][4],$iTvListItemWidth,$iTvListButtonHeight)
GUICtrlSetFont($arTvListControls[$i][0][0], 8.5, 700, 0, "")
$arTvListControls[$i][1][0]=GUICtrlCreateButton("",$arTvList[$i][3],$arTvList[$i][4]+$iTvListButtonSpace,$iTvListItemWidth,$iTvListButtonHeight)
$arTvListControls[$i][1][1]=ShowMenu
GUICtrlSetFont($arTvListControls[$i][1][0], 8.5, 500, 0, "")
$arTvListControls[$i][2][0]=GUICtrlCreateContextMenu($arTvListControls[$i][1][0])
For $j=0 to UBound($arContextMenuButtons)-1 step 1
$arTvListControls[$i][$iStartOfContextMenuButtons+$j][0]=GUICtrlCreateMenuItem($arContextMenuButtons[$j][0],$arTvListControls[$i][2][0])
$arTvListControls[$i][$iStartOfContextMenuButtons+$j][1]=$arContextMenuButtons[$j][1]
Next
Next
EndFunc
Alles anzeigen
Ich versteh schon wie hier es funktioniert aber warum macht man zb hier:
ReDim $arTvListControls[UBound($arTvList)][$iStartOfContextMenuButtons+UBound($arContextMenuButtons)][2]
ReDim und nach den $arTvListControls kein =
des weiteren Ubound bedeutet ja den wert leeren, so wie ich es verstanden habe.
was noch komisch ist warum Global $arTvListControls[0][0][2] ganz oben ?
Würde meine Aussage stimmen:
Ich man die Array $arTvListControls setzt mit Ubound den wert zurück, und setzt mir die $arTvList und auf alle Button Namen von Array $arContextMenuButtons [2]
aber für was brauch ich den $iStartOfContextMenuButtons , das kann ich ja vom Array auch auslesen lassen.
Und warum muss ich das so in diesen klammer setzen. Das ist mit leider auch noch ein kleines Rätzel
Das Letzte wo ich noch bedänken habe ist:
ich setzt for $i die zahl 0 dann wieder das Ubound mein Array aber warum -1 step 1 ???? das will auch nicht in meinen Kopf.
Ich hoff das ich dann noch den richtigen weg finde wie ich das mit den 2 Profilen bewerkstelligen kann
Da hät ich mir was einfallen lassen mit in den Array Global $arTvList an wert 1, 2 oder 3 für die unterschiedlichen profilen und in der Func oder im Gui Case Else ein if abfrage wen 1, 2 oder 3 ist dann nimm die Func
sollte ja auch gehen.
Liebe Grüße
Speedy
Hi,
Hier noch ein anderen versuch der komplett in die hose geht
; Script Start - Add your code below here
; Enumerieren der Indizes in "sprechende" Variablen für die Zeilen des Arrays
Global Enum $TV1, $TV2, $TV3, $VW, $PC, $Sky_receiver, $D_Box_receiver
; Enumerieren der Spaltenindizes
Global Enum $IP, $Port, $Name, $Y_pos, $X_pos, $Profile
Global $iDefaultPort = 443, $iNecPort = 8080, $iVLCPort = 9001
; Dein Array
Global $aDevices[][] = _
[["192.168.0.10",$iDefaultPort, "TV 1", 100, 100, $aDefault_Profile], _
["192.168.0.11",$iDefaultPort, "TV 2", 300, 100, $aVLC_Profile], _
["192.168.0.12",$iDefaultPort, "TV 3", 500, 100, $aDefault_Profile], _
["192.168.0.13",$iNecPort, "VW", 700, 100, $aNEC_Profile], _
["192.168.0.14",$iVLCPort, "PC", 900, 100, $aVLC_Profile], _
["192.168.0.15",$iNecPort, "Sky Receiver", 900, 300, $aSky_Profile_receiver], _
["192.168.0.16",$iDefaultPort, "D-Box", 100, 650, $aD_Box_Profile_receiver]]
; Zugriff
ConsoleWrite('IP (D-Box): ' & $aDevices[$D_Box_receiver][$IP][$Y_pos][$X_pos][$Profile] & @CRLF)
ConsoleWrite('Port (TV 1): ' & $aDevices[$TV1][$Port][$Profile] & @CRLF)
Global Enum $DCH1, $DCH2, $DCH3, $DCH4, $DCH5, $DCH6, $DCH_Line, $DCH_restart
Global Enum $Dname, $Dtelnet1, $Dtime1, $Dtelnet2, $Dtime2, $Dtelnet3 ;Time ist die Sende verzögerung.
Global $aDefault_Profile[][] = _
[["Test 1","Telnet command 1", "500", "Telnet command 2"], _
["Test 2","Telnet command 2"], _
["Test 3","Telnet command 3", "500", "Telnet command 2", "1000", , "Telnet command 3"], _
["Test 4","Telnet command 4"], _
["Test 5","Telnet command 5"], _
["Test 6","Telnet command 6"], _
["",0], _
["Restart","Telnet restart"]]
Global Enum $DCH1, $DCH2, $DCH3, $DCH4, $DCH5, $DCH6, $DCH_Line, $DCH_restart
Global Enum $Dname, $Dtelnet1, $Dtime1, $Dtelnet2, $Dtime2, $Dtelnet3 ;Time ist die Sende verzögerung.
Global $aVLC_Profile[][] = _
[["Test 1","http command 1"], _
["Test 2","http command 2"], _
["Test 3","http command 3"], _
["Test 4","http command 4"], _
["Test 5","http command 5"], _
["Test 6","http command 6"], _
["",0], _
["Restart","telnet command restart"]]
Alles anzeigen
Dachte das mann die Enum vor jedem array angeben kann