|
You last visited: Today at 04:50
Advertisement
Sprachen Wechsler
Discussion on Sprachen Wechsler within the AutoIt forum part of the Coders Den category.
03/10/2014, 05:03
|
#1
|
elite*gold: 0
Join Date: Sep 2011
Posts: 270
Received Thanks: 44
|
Sprachen Wechsler
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?
|
|
|
03/10/2014, 08:32
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Du liest einfach die Combo aus, wenn die auf Deutsch steht settest du alles auf Deutsch und bei Englisch ist es andersherum.
|
|
|
03/10/2014, 15:58
|
#3
|
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
|
Quote:
Originally Posted by md88
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?
|
Schau dir einmal das an, könnte dir helfen:
|
|
|
03/10/2014, 17:56
|
#4
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
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 %.
|
|
|
03/10/2014, 18:54
|
#5
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Schon besser.
|
|
|
03/10/2014, 20:50
|
#6
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Code:
Local $Temp = _Encode($Text)
Local $hSession = _WinHttpOpen($TRANSLATE_USERAGENT)
Local $hConnect = _WinHttpConnect($hSession, $TRANSLATE_HOST)
Local $HTML = _WinHttpSimpleRequest($hConnect, "GET", "")
zu
Code:
Local $Temp = ..., $hSession = ..., $hConnect = ..., $HTML = ...
|
|
|
03/10/2014, 21:58
|
#7
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
und nach stringbetween noch @error überprüfen. könte ja sein dass google down ist  nein aber bei webanwendungen würde ich immer fehler abfangen^^
|
|
|
03/10/2014, 22:37
|
#8
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Man sollte den StringBetween überprüfen ob es überhaupt ein Array ist.
|
|
|
03/10/2014, 23:13
|
#9
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Gewöhn' dir das mit den tausend Locals ab, das sieht schlecht aus.
Nimm stattdessen
Local $aLines = ..., _
$sTemp = ...
|
|
|
03/10/2014, 23:17
|
#10
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
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.
|
|
|
03/10/2014, 23:43
|
#11
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
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.
|
|
|
03/11/2014, 06:59
|
#12
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Wenn du die 3.3.10.2 nutzt kannst du sogar folgendes verwenden
Code:
Return (Not IsArray($a_result)?0:$a_result[0]
|
|
|
03/12/2014, 00:06
|
#13
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
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
|
|
|
03/12/2014, 16:52
|
#14
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by lolkop
...
|
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  ) :
Code:
Func _FastTranslate($Text, $from, $to)
Local $recv = "", $a_result , $socket
$socket = TCPConnect(TCPNameToIP("translate.google.com"),80)
TCPSend($socket, "GET /translate_a/t?client=t&sl="& $From &"&tl="& $To &"&hl="& "en" &"&sc=2&ie=UTF-8&oe=UTF-8&prev=btn&ssel=0&tsel=0&q=" & _Encode($Text) &" HTTP/1.1"&@CRLF&@CRLF)
Do
$recv &= TCPRecv($socket,2048)
Until $recv <> ""
TCPCloseSocket($socket)
$a_result = _StringBetween($recv,'[[["','","')
If Not IsArray($a_result) Then Return False
Return $a_result[0]
EndFunc
Func _FastTranslateMultiLine($Text,$from,$to)
Local $recv = "",$temp = "" ,$a_result , $socket, $lines
$lines = StringSplit($Text,@CRLF,2)
$socket = TCPConnect(TCPNameToIP($TRANSLATE_HOST),80)
For $i = 0 To UBound($lines) - 1
TCPSend($socket, "GET /translate_a/t?client=t&sl="& $From &"&tl="& $To &"&hl="& "en" &"&sc=2&ie=UTF-8&oe=UTF-8&prev=btn&ssel=0&tsel=0&q=" & _Encode($lines[$i]) &" HTTP/1.1"&@CRLF&@CRLF)
Do
$recv &= TCPRecv($socket,2048)
Until $recv <> ""
$a_result = _StringBetween($recv,'[[["','","')
$recv = ""
If Not IsArray($a_result) Then Return False
If Mod($i,2) <> 0 Then
$temp &= $a_result[0] &@CRLF
Else
$temp &= $a_result[0]
EndIf
Next
Return $temp
EndFunc
Func _Encode($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
Strings ohne CRLF brauchen bei TCP ~60 ms und bei WinHttp ~280 ms
Mit CRLF bei TCP ~260ms und bei WinHttp ~520 ms
|
|
|
03/12/2014, 17:06
|
#15
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by »FlutterShy™
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.
|
|
|
 |
|
Similar Threads
|
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
|
All times are GMT +1. The time now is 04:51.
|
|