Schau dir mal das Dictionary Object an.
Sehr sehr cool! Das ist die Eleganz die ich meinte Einfach gestickt und es erfüllt meine Wünsche. *bedankbuttondrück*
Schau dir mal das Dictionary Object an.
Sehr sehr cool! Das ist die Eleganz die ich meinte Einfach gestickt und es erfüllt meine Wünsche. *bedankbuttondrück*
Ja das ist das Gedankenspiel das ich auch hatte. danke für deine Antwort
Zuerst das Array mit den Schlüsseln: (beim eingabeformat handelt es sich um nicht standartkonformen json code)
[autoit]Func UpdateEventNames($sSrc)
$sText = _INetGetSource($sSrc)
If StringLeft($sText,7) = '[{"id":' Then
$sText = StringTrimLeft(StringTrimRight($sText,3),3)
$aArrayRaw = StringSplit($sText, '"},'&@LF&'{"', 1)
Dim $aEventNames[$aArrayRaw[0]+1][2]
$aEventNames[0][0] = $aArrayRaw[0]
For $i = 1 To $aArrayRaw[0] Step 1
$aArrayTemp = StringSplit($aArrayRaw[$i], '","', 1)
For $j = 1 To 2 Step 1
$aArrayTemp2 = StringSplit($aArrayTemp[$j], '":"', 1)
$aEventNames[$i][$j-1] = $aArrayTemp2[2]
Next
Next
Else
$aEventNames = False
EndIf
Return $aEventNames
EndFunc ;==> UpdateEventNames
Auswertung bzw. Vergleich der Schlüssel
[autoit]For $i = 1 To $events[0][0] Step 1
For $j = 1 To $eventNames[0][0] Step 1
If $events[$i][2] = $eventNames[$j][0] Then
$events[$i][2] = $eventNames[$j][1]
$j = $eventNames[0][0]
EndIf
Next
Next
sowohl in $events[$i][2] also auch $eventNames[$j][0] sind die schlüssel vorzufinden diese werden hier verglichen
Danke das ist glaub ich die Lösung^^ genau das was ich suchte. ich seh mal nach was ich an code rauskopieren kann
Hallo alle miteinander,
ich habe zwar dafür schon eine Lösung gefunden, jedoch ist die Verarbeitungsdauer sehr lang. Ich hoffe dass es dafür eine elegantere Lösung gibt.
Zum Problem:
Ich habe eine Datenbank mit mehreren Schlüssel. Die Formatierung sieht ungefähr so aus:
01234567-89AB-4567-FEDC-FDECBA987654 Text1
76543210-BA98-4765-CDEF-FDECBA456789 Text2
.
.
.
Das habe ich bereits in einem Array.
Meine Ausgangsinformationen sehen so aus:
Ereignis1 01234567-89AB-4567-FEDC-FDECBA987654
Ereignis2 76543210-BA98-4765-CDEF-FDECBA456789
.
.
.
Wie kann ich nun wenn z.B. Ereignis1 eintritt mir den Text dieses Schlüssels anzeigen lassen? Dieser wäre hier Text1.
Habe schon über Assign() nachgedacht oder eine SQL Datenbank. Was meint ihr?
edit: Dabei handelt es sich um ~3000 Schlüssel mit unterschiedlich langen Strings und ~100 Ereignisse die alle 10 Sekunden abgefragt werden sollen.
Grüße, naru
omg ich dachte schon so ein kack virus hat meine ganzen projekte zerstört xD
ohne autoit geht echt nix mehr =] hier mal was da mal was meinem fadda aktualisierts das wetter alle 10 sek^^
oh mann bin ich froh ein guter kumpel hatte nen wurm und wurde 3x von seinen backups neu infiziert T_T
viren sind der letzte dreck
naja fast nur das ich bei dem code von dir immer klicken muss ich wollte es ja dass es automatisch geht. hier hab ich mal was gemacht wie es sein sollte.
natürlich gehts hier nur um das bild ganz oben ich mach auch gleich noch ein sleep rein dass sich auch kein rechner aufhängt. problem is halt dann dass die button so träge sind...
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
$gui = GUICreate("blubb", 512, 300)
GUISetBkColor(0x010101)
$pic = GUICtrlCreatePic(@WindowsDir & "\Angler.bmp", 512, 5, 3000, 25)
$pic2 = GUICtrlCreatePic(@WindowsDir & "\Kaffeetasse.bmp", 192, 100, 128, 128)
$next_button = GUICtrlCreateButton("Nächstes", 344, 152, 96, 24)
$picsel = 0
GUISetState(@SW_SHOW, $gui)
[/autoit][autoit][/autoit][autoit]#cs
0 = Kaffeetasse.bmp
1 = Granit.bmp
2 = Feder.bmp
3 = Fächer.bmp
4 = Angler.bmp
#ce
While 1
$msg = GUIGetMsg()
Switch $msg
Case $pic
Case $GUI_EVENT_CLOSE
Exit
Case $next_button
If $picsel = 0 Then
GUICtrlSetImage($pic2, @WindowsDir & "\Granit.bmp")
$picsel2 = 1
EndIf
If $picsel = 1 Then
GUICtrlSetImage($pic2, @WindowsDir & "\Feder.bmp")
$picsel2 = 2
EndIf
If $picsel = 2 Then
GUICtrlSetImage($pic2, @WindowsDir & "\Fächer.bmp")
$picsel2 = 3
EndIf
If $picsel = 3 Then
GUICtrlSetImage($pic2, @WindowsDir & "\Angler.bmp")
$picsel2 = 4
EndIf
If $picsel = 4 Then
GUICtrlSetImage($pic2, @WindowsDir & "\Kaffeetasse.bmp")
$picsel2 = 5
EndIf
If $picsel2 = 1 Then
$picsel = 1
$picsel2 = 0
EndIf
If $picsel2 = 2 Then
$picsel = 2
$picsel2 = 0
EndIf
If $picsel2 = 3 Then
$picsel = 3
$picsel2 = 0
EndIf
If $picsel2 = 4 Then
$picsel = 4
$picsel2 = 0
EndIf
If $picsel2 = 5 Then
$picsel = 0
$picsel2 = 0
EndIf
EndSwitch
_ScrollPic($gui, $pic)
Sleep(50)
WEnd
Func _ScrollPic($gui, $pic)
Local $picpos = ControlGetPos($gui, "", $pic)
Local $i = 0
While $i <= $picpos[2]
ControlMove($gui, "", $pic, $picpos[0]-1, $picpos[1])
$i = $i + 1
WEnd
If $picpos[0] = -3000 Then
ControlMove($gui, "", $pic, $picpos[0]+3000+512, $picpos[1])
EndIf
EndFunc
note: code als funktionierend getestet.
aber irgendwie hab ich das gefühl da hängt alles... naja mal sehen vielleicht weiß doch jemand noch weiter
mfg - narutokun08
@MOZ: ja, richtig, genau so^^ nur kann man mit guictrlsetgraphic das bild ändern und nicht verschieben meines wissens.
ich hab das problem mittlerweile teilweise gelößt...
dualcore @ 3 ghz: 51% cpu auslastung... ich bin mir sicher dass da irgendwas nicht stimmt^^ btw ist die breite/höhe der bmp ~3000x25pixel. aber es kann doch nicht sein dass das einfache verschieben eines bilds derartig viel ressourcen frisst. der code im moment:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
$gui = GUICreate("blubb", 512, 512)
$pic = GUICtrlCreatePic(@ScriptDir & "\test.bmp", 512, 50, 3000, 25)
GUISetState($gui, @SW_SHOW)
[/autoit][autoit][/autoit][autoit]$msg = GUIGetMsg()
While 1
Switch
Case $GUI_EVENT_CLOSE
Exit
EndSelect
_ScrollPic($gui, $pic)
WEnd
Func _ScrollPic($gui, $pic)
Local $picpos = ControlGetPos($gui, "", $pic)
Local $i = 0
While $i <= $picpos[2]; "Jene While"
ControlMove($gui, "", $pic, $picpos[0]-1, $picpos[1])
$i = $i + 1
WEnd
If $picpos[0] = -3000 Then; "Diese If"
ControlMove($gui, "", $pic, $picpos[0]+3000+512, $picpos[1])
EndIf
EndFunc
note: 1. ja man könnte 3000 auch mit einer variablen ausstatten. jedoch bin ich dafür gerade zu müde....
2. es funktioniert, seitdem "Diese If" abfrage hinter "Jene(r) While" steht.
3. das script wurde so wie es hier steht, da es ja eine zusammenfassung ist, nicht getestet.
4. auf die frage "kannst du nicht den kompletten code schicken?" antworte ich gleich mit nein, der rest würde 1. nichts dazu beitragen und 2. verlier ich manchmal selbst den überblick -.-
naja ich wünsche mal eine gn8
grüße - narutokun08
achso nein es klappt schon bild wird ja angeziegt^^ es ist zusammengefasst ich habs ja neugeschriben (direkt hierein) und es dann vergessen aber ich werd noch hinzufügen danke für den hinweis^^
abend alle miteinander,
ich habe das forum schon durchsucht aber nur eine methode gefunden, bei der der text buchstabe für buchstabe gescrollt wird.
da ich aber darauf bestehe das es pixel für pixel verschoben wird, denke ich wird es nur mit einem bild klappen.
ich fasse hier den code mal zusammen:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
$mainGUI = GUICreate("blubb", 512, 300)
$pic = GUICtrlCreatePic(@ScriptDir & "\test.bmp", 512, 100, 769, 30)
GUISetState()
[/autoit][autoit][/autoit][autoit]While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $pic
EndSelect
_ScrollPic($gui, $pic)
WEnd
Func _ScrollPic($gui, $pic)
Local $picpos = ControlGetPos($gui, "", $pic)
Local $i = 0
If $picpos[0] = -769 Then
ControlMove($gui, "", $pic, 512, $picpos[1])
EndIf
ControlMove($gui, "", $pic, $picpos[0]-1, $picpos[1])
EndFunc
vielleicht seht ihr mehr als ich; vorschläge für einen verbesserten aufbau werden natürlich gerne entgegengenommen.
grüße - narutokun08