Hay Communty,
Wie bekomme ich das hin das Ich mit einer Combobox jetzt auswählen kann welche MsgBox als Nächstes erscheint? z.b. ich wähle zwischen Deutsch und englisch, deutsch in der Combobox aus und habe 2 MsgBoxen 1ne mit deutschem Inhalt eine mit Englisch, und wie weil ich in der Combobox Deutsch ausgewählt habe dann auch Deutsch bekommen. Wie geht das? Und wenn das geht, kann man dann auch mit der ComboBox die Sprache in einer Gui und dem MsgBoxen umändern? Oder gibt es da eine einfachere Lösung?
Hay Communty,
Wie bekomme ich das hin das Ich mit einer Combobox jetzt auswählen kann welche MsgBox als Nächstes erscheint? z.b. ich wähle zwischen Deutsch und englisch, deutsch in der Combobox aus und habe 2 MsgBoxen 1ne mit deutschem Inhalt eine mit Englisch, und wie weil ich in der Combobox Deutsch ausgewählt habe dann auch Deutsch bekommen. Wie geht das? Und wenn das geht, kann man dann auch mit der ComboBox die Sprache in einer Gui und dem MsgBoxen umändern? Oder gibt es da eine einfachere Lösung?
FlutterShy, kann es sein das du nur Whitespaces mit %20 replaced? Was ist denn mit anderen Sachen wie einem + Zeichen z.B.? Wenn man das so macht, dann sollte man auf die ganze Palette zurückgreifen und ne UDF schreiben bzw. ziehen in der alles in Hex-Codes umgewandelt wird, aber statt Präfix 0x halt %.
Local $Temp = _Encode($Text)
Local $hSession = _WinHttpOpen($TRANSLATE_USERAGENT)
Local $hConnect = _WinHttpConnect($hSession, $TRANSLATE_HOST)
Local $HTML = _WinHttpSimpleRequest($hConnect, "GET", "")
keine internetverbindung --> $html ist leer. das wäre der einfachste grund warum der code im absturz endet, weil er versucht auf ein array zuzugreifen, was keins ist. ein simples if isarray then verhindert dies.
Dasselbe mit den Global Const bei den Sprachen, das sieht nicht schön aus und spaart so keinen Platz.
Außerdem warum muss der UserAgent so sein? Nimm doch einfach gar nichts oder etwas kürzeres.
ich würde empfehlen das ganze so aufzudröseln, das am ende keine scriptblocker mehr übrig bleiben können.
hier ein beispiel:
Code:
TCPStartup()
Global $socket, $answer
InitGoogleTranslation()
RequestTranslation("this is a simple test", "en", "de")
While True
If ReceiveAnswer() Then
MsgBox(0, "Answer", ParseAnswer())
Exit
EndIf
WEnd
Func InitGoogleTranslation()
$socket = TCPConnect(TCPNameToIP('translate.google.com'),80)
EndFunc
Func RequestTranslation($content, $from, $to)
TCPSend($socket, "GET /translate_a/t?client=t&sl="&$from&"&tl="&$to&"&q="&URLEncoding($content)&" HTTP/1.1"&@CRLF&@CRLF)
EndFunc
Func ReceiveAnswer()
$answer &= TCPRecv($socket,1024)
If StringRight($answer,5)=0&@CRLF&@CRLF Then Return True
Return False
EndFunc
Func ParseAnswer()
Local $return, $exp1, $exp2
$exp1 = StringRegExp($answer, "\[\[(\[.+?\])\]", 1)
If Not IsArray($exp1) Then Return False
$exp2 = StringRegExp($exp1[0], '\["(.+?)",.+?,.+?,.+?\]', 3)
If Not IsArray($exp2) Then Return False
For $i=0 To UBound($exp2)-1
$return&=$exp2[$i]&@CRLF
Next
Return StringTrimRight($return,2)
EndFunc
Func URLEncoding($string)
Local $return, $split = StringToASCIIArray($string, Default, Default, 2)
For $i=0 To UBound($split) -1
$return &= '%'&Hex($split[$i],2)
Next
Return $return
EndFunc
sicherlich ist das ganze noch optimierungswürdig, sollte aber zb bei nutzung von guis keine probleme mit scriptblockaden verursachen.
Edit:
bsp mit gui:
Code:
TCPStartup()
Global $socket, $answer
InitGoogleTranslation()
GUICreate('Tranlator', 600, 300, Default, Default, 0x10C80000)
$es = GUICtrlCreateEdit('', 10, 10, 270, 260, 0x1044)
$et = GUICtrlCreateEdit('', 320, 10, 270, 260, 0x844)
$go = GUICtrlCreateButton('->', 290, 10, 20, 282)
$cs = GUICtrlCreateCombo('auto', 10, 270, 270, 20, 0x200943)
$ct = GUICtrlCreateCombo('', 320, 270, 270, 20, 0x200943)
FillCombo()
While True
Switch GUIGetMsg()
Case -3
Exit
Case $go
RequestTranslation(GUICtrlRead($es), GUICtrlRead($cs), GUICtrlRead($ct))
EndSwitch
If ReceiveAnswer() Then GUICtrlSetData($et, ParseAnswer())
WEnd
Func FillCombo()
Local $tmp, $local=LCIDToLocaleName(0)
For $i=1 To 0xFF
$tmp = LCIDToLocaleName($i)
If $tmp<>'' Then
GUICtrlSetData($cs, $tmp, 'auto')
GUICtrlSetData($ct, $tmp, $local)
EndIf
Next
EndFunc
Func LCIDToLocaleName($iLCID)
Local $return = DllCall("Kernel32.dll", "int", "LCIDToLocaleName", "int", $iLCID, "wstr", "", "int", 85, "dword", 0)
Return StringLeft($return[2],2)
EndFunc
Func InitGoogleTranslation()
$socket = TCPConnect(TCPNameToIP('translate.google.com'),80)
EndFunc
Func RequestTranslation($content, $from, $to)
$answer = ''
TCPSend($socket, "GET /translate_a/t?client=t&sl="&$from&"&tl="&$to&"&q="&URLEncoding($content)&" HTTP/1.1"&@CRLF&@CRLF)
EndFunc
Func ReceiveAnswer()
$answer &= TCPRecv($socket,1024)
If StringRight($answer,5)=0&@CRLF&@CRLF Then Return True
Return False
EndFunc
Func ParseAnswer()
Local $return, $exp1, $exp2
$exp1 = StringRegExp($answer, "\[\[(\[.+?\])\]", 1)
If Not IsArray($exp1) Then Return False
$exp2 = StringRegExp($exp1[0], '\["(.+?)",.+?\]', 3)
If Not IsArray($exp2) Then Return False
For $i=0 To UBound($exp2)-1
$return&=$exp2[$i]
Next
$answer = ''
Return StringReplace(StringReplace($return,'\r',@CR),'\n',@LF)
EndFunc
Func URLEncoding($string)
Local $return, $split = StringToASCIIArray($string, Default, Default, 2)
For $i=0 To UBound($split) -1
$return &= '%'&Hex($split[$i],2)
Next
Return $return
EndFunc
Könntest du mir erklären was dein RegExp genau macht ich kann das nicht nachvollziehen. (Habs jetzt nicht getestet aber würde durch deine methode nicht meine multiline func wegfallen)
MultiLine macht komischerweise 2 absätze
EDIT : Nicht mehr
TCP hatte ich gestern nacht auch schon eingebaut ich konnte nicht schlafen ^^
Hatte das dann so gelöst (Hab mir deine encode funktion geklaut ) :
Strings ohne CRLF brauchen bei TCP ~60 ms und bei WinHttp ~280 ms
Mit CRLF bei TCP ~260ms und bei WinHttp ~520 ms
das liegt darann, das du immer neue anfragen startest, anstatt alles aus einer abzulesen.
letztendlich sollte man das ganze aber immer über post anfragen lösen, da der content dort beliebig lang sein kann. get requests sind aufgrund der url begrenzung stark beschränkt.
schau dir das ergebnis einer mehrzeiligen anfrage bei google doch mal genau an. letzlich brauchst du das ergebnis dann nur nach deinen wünschen zu parsen.
btw deine tcp anfrage wird nach aktuellem code nur selten funktionieren, da du nicht prüfst, ob die antwort vollständig ist, sondern nur ob eine antwort vorliegt.
der tcp stack baut sich je nach verfügbarer banddbreite sehr schnell, oder aber auch sehr langsam auf. es sollte deshalb überprüft werden, ob die rückgabe vollständig ist, bevor sie bearbeitet wird.
die geschwindigkeit ist am ende übrigens egal, da ohnehin alles im hintergrund abläuft.
ch wechsler bot 10/23/2012 - Metin2 - 4 Replies kann jemand 'n ch wechsler bot programmieren bzw. hat jemand eins ?
der bot sollte nach X min den ch wechseln und am besten mit m2bob kompatibel sein (falls dies überhaupt nötig ist)
Browser-IP-Wechsler 11/27/2011 - Browsergames - 5 Replies Hi,
ich hoffe mal ich bin hier richtig, um nach nem Programm zufragen, bzw nach der Existenz eines solchen Programmes zu fragen!
Sollte das allgemein illegal sein, also "mehr" illegal alsn Hack/Bot für ein Browsergame, dann will ich keine Antwort!
Also:
Gibtsn Programm um für IE8 und Firefox jeweils eine andere IP vorzustäuschen?
Also das ich auf IE8 z.B. IP x hab und auf Firefox IP y hab.
Weil ich spiele Dogsoftheseas.de und da konnte man früher sich mit 2 verschiedenen Browsern...
Signatur wechsler ;D 11/22/2010 - General Art - 2 Replies Ich suche das PHP Script wo das Sig Bild immer nach dem
Man F5 drückt ändert ;D
ip wechsler 05/03/2010 - WarRock - 19 Replies hallo com
kennt sich hier einer aus
mit nem programm das automatisch meine ip wechselt ???
damit ich in playspan mehr punkte bekomme???
wenns hilft
ich hab eine fritz box
IP-Wechsler?? 06/01/2009 - Metin2 - 9 Replies Hallo,
habe bereits die SuFu benutzt, habe aber nix Brauchbares gefunden.
Kurz: Suche einen IP-Wechsler, weil ich einen IP-Bann im Forum gekriegt hab.
Grüße KING