Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 04:50

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Sprachen Wechsler

Discussion on Sprachen Wechsler within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #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?
md88 is offline  
Old 03/10/2014, 08:32   #2
 
alpines's Avatar
 
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.
alpines is offline  
Thanks
1 User
Old 03/10/2014, 15:58   #3
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by md88 View Post
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:
Shadow992 is offline  
Old 03/10/2014, 17:56   #4
 
alpines's Avatar
 
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 %.
alpines is offline  
Old 03/10/2014, 18:54   #5
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Schon besser.
alpines is offline  
Old 03/10/2014, 20:50   #6
 
alpines's Avatar
 
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 = ...
alpines is offline  
Old 03/10/2014, 21:58   #7
 
butter123's Avatar
 
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^^
butter123 is offline  
Old 03/10/2014, 22:37   #8
 
alpines's Avatar
 
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.
alpines is offline  
Old 03/10/2014, 23:13   #9
 
alpines's Avatar
 
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 = ...
alpines is offline  
Old 03/10/2014, 23:17   #10
 
butter123's Avatar
 
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.
butter123 is offline  
Old 03/10/2014, 23:43   #11
 
alpines's Avatar
 
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.
alpines is offline  
Old 03/11/2014, 06:59   #12
 
alpines's Avatar
 
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]
alpines is offline  
Thanks
1 User
Old 03/12/2014, 00:06   #13
 
lolkop's Avatar
 
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
lolkop is offline  
Thanks
1 User
Old 03/12/2014, 16:52   #14
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
Quote:
Originally Posted by lolkop View Post
...
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
YatoDev is offline  
Old 03/12/2014, 17:06   #15
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by »FlutterShy™ View Post
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.
lolkop is offline  
Thanks
1 User
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.