Spielen wir mal ein Quiz :D.
1. Was ist das Pfadtrennzeichen unter Unix?
2. Was ist das Pfadtrennzeichen unter Windows?Der Gewinner bekommt... nichts :D.
peethebee
Muah - Ich verdoppele den Gewinn ![]()
Spielen wir mal ein Quiz :D.
1. Was ist das Pfadtrennzeichen unter Unix?
2. Was ist das Pfadtrennzeichen unter Windows?Der Gewinner bekommt... nichts :D.
peethebee
Muah - Ich verdoppele den Gewinn ![]()
Ich sehe jetzt nicht, welches Problem du hast.
Findest du nicht die Verknüpfung vom gewählten Eintrag aus der Combo zur zugehörigen Client-Datei? Oder wo liegt der Hund begraben? ![]()
Ich würde es (wie wohl bei mir nicht anders zu erwarten
) mit Array lösen ==> _FileReadToArray() .
Du wirst immer wieder den Verweis auf das OSCAR Protokoll bekommen - damit kannst du doch den Datenstrom "belauschen" und dann deine Nachrichten rausfiltern.
So z.B., Zahlen eingeben - mit Enter oder Tab nach der (zweiten) Zahl - das löst das Event aus.
#include <EditConstants.au3>
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Global $isR = False, $isU = False, $isI = False
GUICreate('Test')
GUISetOnEvent($GUI_EVENT_CLOSE, 'ende')
GUICtrlCreateLabel('R: ', 15, 15, 30)
$R = GUICtrlCreateInput('', 50, 15, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_R')
GUICtrlCreateButton('clear', 120, 15, 40, 20)
GUICtrlSetOnEvent(-1, '_cR')
GUICtrlCreateLabel('U: ', 15, 45, 30)
$U = GUICtrlCreateInput('', 50, 45, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_U')
GUICtrlCreateButton('clear', 120, 45, 40, 20)
GUICtrlSetOnEvent(-1, '_cU')
GUICtrlCreateLabel('I: ', 15, 75, 30)
$I = GUICtrlCreateInput('', 50, 75, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, '_I')
GUICtrlCreateButton('clear', 120, 75, 40, 20)
GUICtrlSetOnEvent(-1, '_cI')
GUISetState()
While 1
Sleep(100)
WEnd
Func ende()
Exit
EndFunc
Func _R()
If GUICtrlRead($R) <> '' Then
$isR = True
Else
$isR = False
EndIf
If $isR And $isU Then
_calcI()
ElseIf $isR And $isI Then
_calcU()
EndIf
EndFunc
Func _U()
If GUICtrlRead($U) <> '' Then
$isU = True
Else
$isU = False
EndIf
If $isU And $isR Then
_calcI()
ElseIf $isU And $isI Then
_calcR()
EndIf
EndFunc
Func _I()
If GUICtrlRead($I) <> '' Then
$isI = True
Else
$isI = False
EndIf
If $isI And $isU Then
_calcR()
ElseIf $isI And $isR Then
_calcU()
EndIf
EndFunc
Func _calcR()
GUICtrlSetData($R, StringFormat('%.2f', GUICtrlRead($U)/GUICtrlRead($I)))
EndFunc
Func _calcU()
GUICtrlSetData($U, StringFormat('%.2f', GUICtrlRead($R)*GUICtrlRead($I)))
EndFunc
Func _calcI()
GUICtrlSetData($I, StringFormat('%.2f', GUICtrlRead($U)/GUICtrlRead($R)))
EndFunc
Func _cR()
GUICtrlSetData($R, '')
EndFunc
Func _cU()
GUICtrlSetData($U, '')
EndFunc
Func _cI()
GUICtrlSetData($I, '')
EndFunc
Hi, hier mal ein Bsp., wie man mit vielen Controls umgehen kann. Habe jetzt nur eine Spalte Controls untergebracht. Kannst du jetzt natürlich auch noch erweitern auf mehrere Reihen mit Controls. Tipp: Erstelle dann ein 2D-Array für die Controls, damit die Controls einer Spalte auch immer in einer Arrayspalte liegen - vereinfacht das Verständnis, wo welches Control liegt.
Global $arCtrl[76] ; Anzahl aus deiner Funktionsrückgabe
Global $iMaxCtrl = 10 ; Anzahl der Controls, die auf eine Seite passen
Global $iTabCount = Ceiling(UBound($arCtrl)/$iMaxCtrl) ; ermitteln, wieviel Seiten (Tabs) notwendig
Global $arTab[$iTabCount]
Global $y = 15, $iCurrent = 0
$GUI = GUICreate('Test', 600, 330)
_createCtrl()
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _createCtrl()
If $iTabCount = 1 Then
For $i = 0 To UBound($arCtrl) -1
$arCtrl[$i] = GUICtrlCreateCheckbox('Check ' & $i+1, 15, $y, 80, 20)
$y += 30
Next
Else
Global $Tab = GUICtrlCreateTab(0, 0, 600, 330)
$y += 10
For $i = 0 To UBound($arTab) -1
$arTab[$i] = GUICtrlCreateTabItem('Tab ' & $i+1)
For $j = 0 To $iMaxCtrl-1
If $iCurrent = UBound($arCtrl) Then ExitLoop
$arCtrl[$iCurrent] = GUICtrlCreateCheckbox('Check ' & $iCurrent+1, 15, $y, 80, 20)
$iCurrent += 1
$y += 30
Next
$y = 25
Next
EndIf
EndFunc
BugFix : warum nicht einfach "verfilmen" ?
Sollte eine ironische Anspielung sein, auf den gesamtgesellschaftlichen Drang, alles zu "verdenglischen". ![]()
Du möchtest vermutlich folgendes:
[autoit]Send("´")
[/autoit]
Das dürfte nicht klappen, weil Akut nunmal kein Einzelzeichen ist, sondern der Kombination bedarf um wirksam zu werden.
Mit dem folgendem Link sollte es klappen:
Wie bereits gesagt:
(Codec ist installiert)
Also am Codec liegt es nicht.
@Tom99
Ist dein Video online? Da wird gar nix gestreamt. Nur ein Embedded-Player mit schwarzer Oberfläche.
(Codec ist installiert)
Ich habe schon öfter mit dem Gedanken gespielt, mein Array-Tut zu "vermovien" ( LOL, was für 'ne Wortschöpfung )
Allerdings nicht in der Form eines reinen Abfilmens von SciTE, sondern etwas umfangreicher von der Darstellung her. Ich habe früher (als ich noch mehr Zeit hatte
) schon einiges an Videobearbeitung gemacht. Mal sehen, dass ich das hier einbringen kann.
Ist aber, wie gesagt, hauptsächlich ein Zeitproblem. Aber es wird kommen. ![]()
aber wenn im String geschweifte Klammern sind ({oder}) verschwinden die, was Fehler im restlichen Script verursacht.
Ich verstehe nicht ganz, was du wirklich willst.
In deinem ersten Post sind im String geschweifte Klammern und in deiner Wunschausgabe sind sie nicht mehr vorhanden.
Also was solls denn nun bitteschön sein? ![]()
Läuft doch:
#include <GUIConstants.au3>
$gui = GUICreate('')
$l1 = GUICtrlCreateListView('col1|col2', 10, 10, 300, 200)
$kontext = GUICtrlCreateContextMenu($l1)
$kon_start = GUICtrlCreateMenuItem("Upload starten", $kontext)
$kon_anhalten = GUICtrlCreateMenuItem("Upload anhalten", $kontext)
$kon_fortsetzen = GUICtrlCreateMenuItem("Upload fortsetzen", $kontext)
GUICtrlCreateMenuItem("", $kontext)
$kon_del = GUICtrlCreateMenuItem("Datei entfernen", $kontext)
GUICtrlCreateMenuItem("", $kontext)
$kon_liste_speichern = GUICtrlCreateMenuItem("Liste speichern", $kontext)
$kon_liste_laden = GUICtrlCreateMenuItem("Liste laden", $kontext)
GUICtrlCreateMenuItem("", $kontext)
$kon_archiv = GUICtrlCreateMenuItem("Archiv erstellen", $kontext)
GUICtrlCreateMenuItem("", $kontext)
$kon_info = GUICtrlCreateMenuItem("Info", $kontext)
GUISetState()
Do
$msg = GUIGetMsg()
Switch $msg
Case $kon_start
MsgBox(0, '', 'start')
Case $kon_anhalten
MsgBox(0, '', 'anhalten')
Case $kon_fortsetzen
MsgBox(0, '', 'fortsetzen')
; usw.
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
Naja, in diese Minimalbereiche kann ich mit meiner Methode nicht vorstoßen - die ist bei 0.12 ausgereizt.
Und solange mir kein anderer Algorithmus einfällt bleibt es also dabei. ![]()
Bin ja gespannt, wie man multipliziert ohne zu addieren. Letztlich liegt doch jeder Rechenoperation eine Addition zugrunde. :wacko:
Hi, so könnte man das machen. 2-dimensionales Array, in Spalte 0 wird die ID der Controls gespeichert, in Spalte 1 der Name der auszuführenden Funktion.
Ich habs mal an dein Skript angepaßt. Deine etwa 120 Zeilen lange Abfrage braucht jetzt keine 20 Zeilen mehr. ![]()
#include <GUIConstants.au3>
#NoTrayIcon
Global $arRadio[14][2]
$Form2 = GUICreate("Anmelden", 547, 546, 193, 125)
$Group1 = GUICtrlCreateGroup("Server wählen", 10, 10, 150, 221)
$arRadio[0][0] = GUICtrlCreateRadio("1. Mosha", 20, 30, 121, 21)
GUICtrlSetState(-1, $GUI_CHECKED)
ein Radio sollte voreingestellt sein ! SIEHE HILFE GUICtrlCreateRadio
$arRadio[1][0] = GUICtrlCreateRadio("2. Karthago", 20, 50, 121, 21)
$arRadio[2][0] = GUICtrlCreateRadio("3. Astreya", 20, 70, 121, 21)
$arRadio[3][0] = GUICtrlCreateRadio("4. Hyperion", 20, 90, 121, 21)
$arRadio[4][0] = GUICtrlCreateRadio("5. Antharos", 20, 110, 121, 21)
$arRadio[5][0] = GUICtrlCreateRadio("6. Cascardon", 20, 130, 121, 21)
$arRadio[6][0] = GUICtrlCreateRadio("7. Lesanya", 20, 150, 121, 21)
$arRadio[7][0] = GUICtrlCreateRadio("8. Torkas", 20, 170, 121, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Channel wählen", 170, 10, 150, 221)
$arRadio[8][0] = GUICtrlCreateRadio("CH 1", 180, 30, 121, 21)
$arRadio[8][1] = 'CH_1' ; Funktion die ausgeführt werden soll
GUICtrlSetState(-1, $GUI_CHECKED)
ein Radio sollte voreingestellt sein ! SIEHE HILFE GUICtrlCreateRadio
$arRadio[9][0] = GUICtrlCreateRadio("CH 2", 180, 50, 121, 21)
$arRadio[9][1] = 'CH_2'
$arRadio[10][0] = GUICtrlCreateRadio("CH 3", 180, 70, 121, 21)
$arRadio[10][1] = 'CH_3'
$arRadio[11][0] = GUICtrlCreateRadio("CH 4", 180, 90, 121, 21)
$arRadio[11][1] = 'CH_4'
$arRadio[12][0] = GUICtrlCreateRadio("CH 5", 180, 110, 121, 21)
$arRadio[12][1] = 'CH_5'
$arRadio[13][0] = GUICtrlCreateRadio("CH 6", 180, 130, 121, 21)
$arRadio[13][1] = 'CH_6'
GUICtrlCreateGroup("", -99, -99, 1, 1);) nicht vergessen !
$Button1 = GUICtrlCreateButton("Jetzt Anmelden", 350, 20, 160, 31, 0)
$Button2 = GUICtrlCreateButton("Für Account registrieren", 350, 70, 160, 31, 0)
$Button3 = GUICtrlCreateButton("Padmaks Website besuchen", 350, 120, 160, 31, 0)
$Pic1 = GUICtrlCreatePic("C:\Users\Padmak\Documents\AutoIt\zoom.nebel.exe\padmak.jpg", 0, 340, 541, 201)
$Button4 = GUICtrlCreateButton("Beenden", 350, 170, 160, 31, 0)
$Label1 = GUICtrlCreateLabel("Benutzername:", 10, 240, 75, 17)
$Input1 = GUICtrlCreateInput("", 10, 260, 100, 21)
$Passwort = GUICtrlCreateLabel("Passwort", 10, 290, 47, 17)
GUICtrlCreateInput("", 10, 310, 100, 21)
$Label2 = GUICtrlCreateLabel("KEINE ANGST DIESE EINGABEN WERDEN", 120, 240, 414, 31)
GUICtrlSetFont(-1, 14, 800, 4, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFF0000)
$Label3 = GUICtrlCreateLabel("NICHT GESPEICHERT!!!!!!!!!!", 267, 278, 261, 31)
GUICtrlSetFont(-1, 14, 800, 4, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)
While 1
ControlClick ("Anmelden", "unsicht", "Button5")
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button4
Exit
Case $Button1
; call ("_anmelden") hier kannst du die Funktion mit Namen direkt aufrufen:
_anmelden()
EndSwitch
For $i = 0 To 7
If $msg = $arRadio[$i][0] Then
GUICtrlSetState($arRadio[12][0], $GUI_HIDE)
GUICtrlSetState($arRadio[13][0], $GUI_HIDE)
EndIf
Next
WEnd
Func _anmelden()
;server 1 und 2
For $i = 0 To 1
If BitAND(GUICtrlRead($arRadio[$i][0]), $GUI_CHECKED) = $GUI_CHECKED Then
For $j = 8 To 12
If BitAND(GUICtrlRead($arRadio[$j][0]), $GUI_CHECKED) = $GUI_CHECKED Then Call($arRadio[$j][1])
Next
EndIf
Next
;server 3 bis 8
For $i = 2 To 7
If BitAND(GUICtrlRead($arRadio[$i][0]), $GUI_CHECKED) = $GUI_CHECKED Then
For $j = 8 To 11
If BitAND(GUICtrlRead($arRadio[$j][0]), $GUI_CHECKED) = $GUI_CHECKED Then Call($arRadio[$j][1])
Next
EndIf
Next
EndFunc
Func CH_1()
; Code
EndFunc
Func CH_2()
; Code
EndFunc
Func CH_3()
; Code
EndFunc
Func CH_4()
; Code
EndFunc
Func CH_5()
; Code
EndFunc
Func CH_6()
; Code
EndFunc
@Xeno: Dein Pattern gibt das letzte bla... nicht zurück. ![]()
z.B. so:
[autoit]#include <array.au3>
$str = 'BlahBlahbla123bla{CODE"1337"}blablablaaa{CODE"7331"}bla...'
$match = StringRegExp(StringRegExpReplace(StringRegExpReplace($str, '{CODE', ''), '}', ''), '[\w\.]+', 3)
_ArrayDisplay($match)
Wenn ich heute abend etwas Zeit finde, werde ich mal ein Bsp. stricken. ![]()
Das Problem sind die (in AutoIt) nicht existierenden Datentypen, die dort verwendet werden.
DllStructCreate() hilft möglicherweise. Aber es reicht ja nicht die Struktur zu erstellen, du mußt ja auch Daten in diese Struktur schreiben. Da fehlt mir momentan der Ansatz zu.
Ich hab mal begonnen, das VB-Skript umzusetzen. Vielleicht hilft dir der Ansatz ja.
Global Const $IP_SUCCESS = 0
Global Const $IP_STATUS_BASE = 11000
Global Const $IP_BUF_TOO_SMALL = $IP_STATUS_BASE + 1
Global Const $IP_DEST_NET_UNREACHABLE = $IP_STATUS_BASE + 2
Global Const $IP_DEST_HOST_UNREACHABLE = $IP_STATUS_BASE + 3
Global Const $IP_DEST_PROT_UNREACHABLE = $IP_STATUS_BASE + 4
Global Const $IP_DEST_PORT_UNREACHABLE = $IP_STATUS_BASE + 5
Global Const $IP_NO_RESOURCES = $IP_STATUS_BASE + 6
Global Const $IP_BAD_OPTION = $IP_STATUS_BASE + 7
Global Const $IP_HW_ERROR = $IP_STATUS_BASE + 8
Global Const $IP_PACKET_TOO_BIG = $IP_STATUS_BASE + 9
Global Const $IP_REQ_TIMED_OUT = $IP_STATUS_BASE + 10
Global Const $IP_BAD_REQ = $IP_STATUS_BASE + 11
Global Const $IP_BAD_ROUTE = $IP_STATUS_BASE + 12
Global Const $IP_TTL_EXPIRED_TRANSIT = $IP_STATUS_BASE + 13
Global Const $IP_TTL_EXPIRED_REASSEM = $IP_STATUS_BASE + 14
Global Const $IP_PARAM_PROBLEM = $IP_STATUS_BASE + 15
Global Const $IP_SOURCE_QUENCH = $IP_STATUS_BASE + 16
Global Const $IP_OPTION_TOO_BIG = $IP_STATUS_BASE + 17
Global Const $IP_BAD_DESTINATION = $IP_STATUS_BASE + 18
Global Const $IP_ADDR_DELETED = $IP_STATUS_BASE + 19
Global Const $IP_SPEC_MTU_CHANGE = $IP_STATUS_BASE + 20
Global Const $IP_MTU_CHANGE = $IP_STATUS_BASE + 21
Global Const $IP_UNLOAD = $IP_STATUS_BASE + 22
Global Const $IP_ADDR_ADDED = $IP_STATUS_BASE + 23
Global Const $IP_GENERAL_FAILURE = $IP_STATUS_BASE + 50
Global Const $MAX_IP_STATUS = $IP_STATUS_BASE + 50
Global Const $IP_PENDING = $IP_STATUS_BASE + 255
Global Const $PING_TIMEOUT = 500
Global Const $WS_VERSION_REQD = 0x101
Global Const $MIN_SOCKETS_REQD = 1
Global Const $SOCKET_ERROR = -1
Global Const $INADDR_NONE = 0xFFFFFFFF
Global Const $MAX_WSADescription = 256
Global Const $MAX_WSASYSStatus = 128
Global $ICMP_OPTIONS = DllStructCreate("byte Ttl;" & _
"byte Tos;" & _
"byte Flags;" & _
"byte OptionsSize;" & _
"long OptionsData")
Global $ICMP_ECHO_REPLY = DllStructCreate("long Address;" & _
"long status;" & _
"long RoundTripTime;" & _
"long DataSize;" & _
"integer Reserved;" & _
"long_ptr DataPointer;" & _
$ICMP_OPTIONS & " Options;" & _
"char Data[250]")
Global $WSADATA = DllStructCreate("int wVersion;" & _
"int wHighVersion;" & _
"byte szDescription;" & _ ; ? szDescription(0 To MAX_WSADescription) As Byte
"byte szSystemStatus;" & _ ; ? szSystemStatus(0 To MAX_WSASYSStatus) As Byte
"long wMaxSockets;" & _
"long wMaxUDPDG;" & _
"long dwVendorInfo")
Func _IcmpSendEcho($IcmpHandle, $DestinationAddress, $RequestData, $RequestSize, $RequestOptions, $ReplyBuffer, $ReplySize, $Timeout)
DllCall("icmp.dll", "long", "IcmpSendEcho", _
"long", $IcmpHandle, _
"long", $DestinationAddress, _
"str", $RequestData, _
"long", $RequestSize, _
"long", $RequestOptions, _
$ICMP_ECHO_REPLY, $ReplyBuffer, _
"long", $ReplySize, _
"long", $Timeout)
EndFunc
Aber wie gesagt, ist es mit dem Erstellen der Struktur nicht getan - an dieser Stelle komm ich nicht weiter. (Deshalb hab ich auch nur mal bis zur ersten Funktion portiert).
GUICreate("Install Progs ", 458, 400, 196, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI_close') ; das hast du vergessen!
; ....
; ....
Func GUI_close()
Exit
EndFunc
OK, mal ausführlich:
. - jedes beliebige Zeichen
+ - gibt Wiederholungsmöglichkeit an, min. 1-mal bis beliebig oft ==> sollte > auch als erstes Zeichen erscheinen können, müßte man * verwenden, das steht für 0-mal bis beliebig oft
> - jetzt muß ein > folgen, damit Übereinstimmung mit Suchmuster besteht - folgt im Suchstring ein weiteres > , dann ist das erste > ja nicht das abschließende und wird somit als beliebiges Zeichen interpretiert.
Etwas Anderes ist es, wenn du noch weitere > im Suchstring hast, aber nur bis inklusive des zweiten selektieren wolltest.
Dann müßtest du ein Pattern erstellen, dass in einem Match jeweils alle Zeichen bis zum zweiten > erfaßt. Es gibt dann mehrere Matches im Suchstring, aber der erste enthält dann den zu selektierenden Bereich.
Das wäre das Pattern dafür: (([^>]*)>){2}
Auch hier die Erklärung:
[^>] - Gruppe zum Match für jedes Zeichen außer >
([^>]*) - alle Zeichen außer > können 0-mal bis beliebig oft auftreten
(([^>]*)>) - diesem Match muß ein > folgen
(([^>]*)>){2} - dieser Match muß 2-mal hintereinander folgen (beliebige Zeichen - > - beliebige Zeichen - >)