Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 20:49

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

Advertisement



StringBetween --- Problem-Need Help ^^

Discussion on StringBetween --- Problem-Need Help ^^ within the AutoIt forum part of the Coders Den category.

Reply
 
Old 11/14/2010, 20:03   #16
 
ZaZiZu's Avatar
 
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
Quote:
Originally Posted by Fab1an View Post
So kriegst du deine gewünschten Zeiten

Code:
#include <Array.au3>

$sString = 'rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00&nbsp;h",1,2,1,0,"v");rackElement[5] = new product(5, "Futterrüben", 360,"futterrueben",3,7200000,"02:00:00&nbsp;h",1,2,2,0,"v");rackElement[6] = new product(6, "Kräuter", 1080,"kraeuter",4,14400000,"04:00:00&nbsp;h",1,2,2,0,"v");rackElement[8] = new product(8, "Kornblumen", 160,"kornblume",5,57600000,"16:00:00&nbsp;h",1,2,2,0,"v");rackElement[9] = new product(9, "Eier", 1330,"eier",1,14400000,"04:00:00&nbsp;h",1,1,1,0,"e");rackElement[10] = new product(10, "Milch", 1024,"milch",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"e");rackElement[11] = new product(11, "Wolle", 560,"wolle",5,86400000,"24:00:00&nbsp;h",1,1,1,0,"e");rackElement[12] = new product(12, "Honig", 320,"honig",10,172800000,"48:00:00&nbsp;h",1,1,1,0,"e");rackElement[18] = new product(18, "Gurken", 759,"gurke",3,5400000,"01:30:00&nbsp;h",1,1,1,0,"v");rackElement[20] = new product(20, "Erdbeeren", 41115,"erdbeere",5,28800000,"08:00:00&nbsp;h",1,1,1,0,"v");rackElement[21] = new product(21, "Tomaten", 80,"tomate",5,36000000,"10:00:00&nbsp;h",1,1,1,0,"v");rackElement[22] = new product(22, "Zwiebeln", 1200,"zwiebel",4,30000000,"08:20:00&nbsp;h",1,1,1,0,"v");rackElement[23] = new product(23, "Spinat", 1080,"spinat",4,48000000,"13:20:00&nbsp;h",1,1,1,0,"v");rackElement[24] = new product(24, "Blumenkohl", 1080,"blumenkohl",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"v");rackElement[26] = new product(26, "Kartoffeln", 1080,"kartoffel",4,46800000,"13:00:00&nbsp;h",1,1,1,0,"v");rackElement[27] = new product(27, "Käse", 194,"kaese",15,120000000,"33:20:00&nbsp;h",1,1,1,0,"e");rackElement[29] = new product(29, "Spargel", 540,"spargel",4,57000000,"15:50:00&nbsp;h",1,2,1,0,"v");rackElement[31] = new product(31, "Zucchini", 1080,"zucchini",7,60000000,"16:40:00&nbsp;h",1,1,1,0,"v");rackElement[32] = new product(32, "Heidelbeeren", 12305,"heidelbeere",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"v");rackElement[91] = new product(91, "Zierfisch", 20,"fisch",4,172800000,"48:00:00&nbsp;h",1,1,1,0,"e");rackElement[92] = new product(92, "Fischfutter", 9,"fisch",4,10000000,"02:46:40&nbsp;h",1,1,1,1,"e");'

$aRes = StringRegExp($sString,'new product\((?:[^,]+,){6}"(.+?)&[^\)]+\)',3)
_ArrayDisplay($aRes)
Aah, big THX ist sogar fast das was ich wollte
Die Auflistung bringt mir nix, ich brauch die Zahlen so zur Hand, dass ich die nach den Kennziffern, wie die da in Klammern sind, rauspicken kann.
Wenn diese Auflistung universell wääre, könnte ich es dann noch schaffen, aber da diese sich von acc zu account unterscheidet wirds so nix
ZaZiZu is offline  
Old 11/14/2010, 20:27   #17
 
elite*gold: 0
Join Date: Nov 2010
Posts: 6
Received Thanks: 3
Also für Getreide willst du die Zeit mit der Zahl 325 herauspicken oder welche Zahl ist gemeint?

Code:
rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00&nbsp;h",1,2,1,0,"v")
Fab1an is offline  
Thanks
1 User
Old 11/14/2010, 20:52   #18
 
ZaZiZu's Avatar
 
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
Quote:
Originally Posted by Fab1an View Post
Also für Getreide willst du die Zeit mit der Zahl 325 herauspicken oder welche Zahl ist gemeint?

Code:
rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00&nbsp;h",1,2,1,0,"v")
Nein, jedes Produkt ist nummeriert mit der Zahl in den [] ^^ also Getreide wäre 1, Heidelbeeren 32, Zucchini 31, Kräuter 6, usw. ... Die 325 ist die Anzahl, die man auf Lager hat ^^
Hab es grad geschafft *juhuu*, auch wenn es sicherlich kürzer geht ^^
PHP Code:
Dim $test
Dim $test 
_StringBetween($sHTML'= new product('&GUICtrlRead($Input2)&',''"v")')
$timeStringRight($test[0], 20
$time2StringLeft($time8

MsgBox(0"test"$time2
Der fehler im 1ten Versuch war offensichtlich wegen diesem " nbsp ", das immer zwischendurch war. komischerweise wird es da nicht rausgelesen oder gibt fail, weil es schon vorher vorhanden war (tippe eher auf das 1te, da es mit stringright so rauskam )

Bin für weitere Vorschläge offen ^^
Deins sieht ziemlich kompliziert aus, aber man kann das sicherlich auch so mit den zahlen aufteilen

Mal was ähnliches:
Könntest du mit dieser Formel es so schaffen, dass du diese Produktnummer und den Produktnamen in ein Array packen kannst?
Also damit ich so eine ganze Auflistung habe z.B.
Quote:
1=Getreide
6=Kräuter
...
32=Heidelbeeren
ZaZiZu is offline  
Old 11/14/2010, 21:15   #19
 
elite*gold: 0
Join Date: Nov 2010
Posts: 6
Received Thanks: 3
Aber klar

Die Funktion _RegExp ist aber nicht von mir sondern von SEuBo aus autoit bot.de
Code:
#include <Array.au3>

$sString = 'rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00&nbsp;h",1,2,1,0,"v");rackElement[5] = new product(5, "Futterrüben", 360,"futterrueben",3,7200000,"02:00:00&nbsp;h",1,2,2,0,"v");rackElement[6] = new product(6, "Kräuter", 1080,"kraeuter",4,14400000,"04:00:00&nbsp;h",1,2,2,0,"v");rackElement[8] = new product(8, "Kornblumen", 160,"kornblume",5,57600000,"16:00:00&nbsp;h",1,2,2,0,"v");rackElement[9] = new product(9, "Eier", 1330,"eier",1,14400000,"04:00:00&nbsp;h",1,1,1,0,"e");rackElement[10] = new product(10, "Milch", 1024,"milch",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"e");rackElement[11] = new product(11, "Wolle", 560,"wolle",5,86400000,"24:00:00&nbsp;h",1,1,1,0,"e");rackElement[12] = new product(12, "Honig", 320,"honig",10,172800000,"48:00:00&nbsp;h",1,1,1,0,"e");rackElement[18] = new product(18, "Gurken", 759,"gurke",3,5400000,"01:30:00&nbsp;h",1,1,1,0,"v");rackElement[20] = new product(20, "Erdbeeren", 41115,"erdbeere",5,28800000,"08:00:00&nbsp;h",1,1,1,0,"v");rackElement[21] = new product(21, "Tomaten", 80,"tomate",5,36000000,"10:00:00&nbsp;h",1,1,1,0,"v");rackElement[22] = new product(22, "Zwiebeln", 1200,"zwiebel",4,30000000,"08:20:00&nbsp;h",1,1,1,0,"v");rackElement[23] = new product(23, "Spinat", 1080,"spinat",4,48000000,"13:20:00&nbsp;h",1,1,1,0,"v");rackElement[24] = new product(24, "Blumenkohl", 1080,"blumenkohl",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"v");rackElement[26] = new product(26, "Kartoffeln", 1080,"kartoffel",4,46800000,"13:00:00&nbsp;h",1,1,1,0,"v");rackElement[27] = new product(27, "Käse", 194,"kaese",15,120000000,"33:20:00&nbsp;h",1,1,1,0,"e");rackElement[29] = new product(29, "Spargel", 540,"spargel",4,57000000,"15:50:00&nbsp;h",1,2,1,0,"v");rackElement[31] = new product(31, "Zucchini", 1080,"zucchini",7,60000000,"16:40:00&nbsp;h",1,1,1,0,"v");rackElement[32] = new product(32, "Heidelbeeren", 12305,"heidelbeere",4,43200000,"12:00:00&nbsp;h",1,1,1,0,"v");rackElement[91] = new product(91, "Zierfisch", 20,"fisch",4,172800000,"48:00:00&nbsp;h",1,1,1,0,"e");rackElement[92] = new product(92, "Fischfutter", 9,"fisch",4,10000000,"02:46:40&nbsp;h",1,1,1,1,"e");'

$aRes = _RegExp($sString,'new product\((\d+),\s+?"(.+?)"[^\)]+\)')
_ArrayDisplay($aRes)

;By SEuBo (www.*************)
Func _RegExp($sTest, $sPattern, $iOffset = 0)
	Local $aRet, $iUB, $iUB2, $aDummy, $aNewArr
	$aRet = StringRegExp($sTest, $sPattern, 4, $iOffset)
	If @error Then Return

	Local $iUB = UBound($aRet), $iUB2 = UBound($aRet[0]), $aNewArr[$iUB][$iUB2 - 1]
	For $i = 0 To $iUB - 1
		Local $aDummy = $aRet[$i], $iUBD = UBound($aDummy)

		If $iUBD - 1 > $iUB2 Then
			$iUB2 = $iUBD
			ReDim $aNewArr[$iUB][$iUB2]
		EndIf
		For $j = 1 To $iUBD - 1
			$aNewArr[$i][$j - 1] = $aDummy[$j]
		Next
	Next
	Return SetError(0, $iUB, $aNewArr)
EndFunc   ;==>_RegExp
Fab1an is offline  
Thanks
1 User
Old 11/14/2010, 22:04   #20
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
wenn du von nummer auf string schließen willst, geht das gaze auch besser, indem du jedem string, direkt die zugehörige zahl als index zuweist.

zb so:
Code:
$read = StringRegExp($string, 'new product\((\d+), "(.*?)".*?\)', 3)
Dim $product[$read[UBound($read)-2]+1]
For $i=0 To UBound($read)-2 Step 2
	$product[$read[$i]] = $read[$i+1]
Next
wenn du das ganze so gemacht hast, brauchst du nicht immer das gesamte array nochmal durchlaufen, sondern könntest direkt $product[$zahl] aufrufen...
$product[1] würde so zb "Getreide" ausgeben.

musst natürlich wissen was dir wichtiger ist, da du auf diesem weg einen höheren speicherverbrauch hast (ungenutzte array elemente). dafür hast du aber so deutlich schnellere und ressourcenschonende zugriffe, und kannst das ganze leichter aufrufen^^
lolkop is offline  
Thanks
1 User
Old 11/14/2010, 22:28   #21
 
ZaZiZu's Avatar
 
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
Ah, also hab ich jetzt eine Array, wo der Index gleich der Produktnummer ist ? Thx, wird sicherlich irgendwo nützlich sein



Worin unterscheidet sich dieses _RegExp und StringRegExp ^^?
ZaZiZu is offline  
Reply


Similar Threads Similar Threads
[Problem] Problem with server starting - cannot find quest index for PaxHeader
12/22/2009 - Metin2 Private Server - 1 Replies
Hello! I have this same problem as here when i'm starting my server: http://www.elitepvpers.com/forum/metin2-pserver-di scussions-questions/307143-metin2-serverfiles-ques t-index-fehler.html But I didn't know the answer.. how to repair this? Greetings



All times are GMT +1. The time now is 20:49.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.