- Offizieller Beitrag
Hi @Pee!
In der Hilfe steht "String can contain strings of up to 2 billion characters". Das würde heißen das es bei Unicode 4GB sind. Wobei ich auch eher davon ausgehe das es dann "nur" noch 1 Billion Zeichen sind!
Hi @Pee!
In der Hilfe steht "String can contain strings of up to 2 billion characters". Das würde heißen das es bei Unicode 4GB sind. Wobei ich auch eher davon ausgehe das es dann "nur" noch 1 Billion Zeichen sind!
Hallo wieder
Also ich habe heute nun wieder etwas zeit gehabt, mich mit dem ganzen auseinanderzusetzen - das Problem ist nun, das _StringBetween nie ein ergebnis zurückgibt!
test-code:
#include <string.au3>
$s_test = "Hund geht weg"
msgBox (0,"bla", $s_test)
$test = _StringBetween ($s_test, "Hund"," weg")
MsgBox(0,"bla",$test)
wenn ihr das startet, stellt ihr fest, dass keine Fehlermedlung kommt, der string (natürlich) korekt zugewiesen wird, stringBetween aber dennoch kein ergebnis liefert
$s_test = "Hund geht weg"
msgBox (0,"bla", $s_test)
$test = _StringBetween1 ($s_test, "Hund"," weg")
MsgBox(0,"bla",$test)
Func _StringBetween1($s_String, $s_Start = 0, $s_End = 0)
$s_Start = StringInStr($s_String, $s_Start) + StringLen($s_Start)
Return StringMid($s_String, $s_Start, StringInStr($s_String, $s_End) - $s_Start)
EndFunc ;==>_StringBetween1 -Func von th.meger (autoit.aufwaerts.de)-
tja, alles meger
gruss exberliner
Hi,
der Unterschied ist der Rückgabewert. Die _AtringBetween func gibt ein Array zurück:
[autoit]#include <string.au3>
$s_test = "Hund geht weg"
$test = _StringBetween($s_test, "Hund", " weg")
MsgBox(0, "bla", $test[0])
So long,
Mega
P.S.: ExBerliner
hi th.meger,
oho, da wird ein array zurückgegeben. war mir so nicht klar.
was ist denn da der grund, dass da ein array zurückgegeben wird ? irgendwie nicht plausibel, oder ?
gruss exberliner
Hi,
wieso nicht? Wenn es häufiger vorkommt, dann ergibt das sehr wohl Sinn.
So long,
Mega
P.S.: Stell die vor, du willst alle tags auslesen.
@th.meger
jau, hast recht *an den kopf klatsch*.
beweis:
#include<Array.au3>
#include<String.au3>
$s_test = "Hund geht weg hund geht weg hund geht weg"
msgBox (0,"bla", $s_test)
$test = _StringBetween ($s_test, "Hund"," weg")
;~ MsgBox(0,"bla",$test[0])
_ArrayDisplay($test)
klasse das _StringBetween()
gruss exberliner
Hi,
LOL du bist ja leicht zu begeistern.
Vor allem mit RegExp ist soviel Textmanipulation möglich!
So long,
Mega
ZitatOriginal von th.meger
LOL du bist ja leicht zu begeistern.
ich habe seit basiczeiten keine "beziehung" (frauen ausgenommen) zu anderem mehr aufbauen können, daher eben die begeisterung für autoit.
ich schreibe keine riesenprojekte, aber alles, was ich so gerne automatisieren wollte, liess sich bisher immer ohne sehr grossen zeitaufwand respektabel über autoit lösen. das konnte man weder zu den uralt-basiczeiten, noch mit den heutigen interpretern praktikabel (für mich jedenfalls) lösen.
gut, dies ist nur meine meinung. (autoit-gegner gibbet ja hier eh nicht)
ich habe noch lange nicht das gesamte mögliche spektrum von autoit drauf, lerne aber täglich zu - und das seit der version 2.64- (kein wunder bei den täglichen deutschen updates von autoit :lol: )
gruss vom begeisterten exberliner
das Problem habe ich nach einigen stunden hilfe-konsum selbst gelöst...
mm also @error wird -1, aber die schleife nicht beendet, weder
While not @error = -1
WEnd
noch
While @error <> -1
WEnd
oder mit
If @error = -1 Then
ExitLoop 1
In der schleife?!
PS: das FileRead war übrigens falsch, da muss man FileReadLine nutzen! (sonst wird die ganze datei samt umbrüchn geladen - vermutlich ein array)
Hi,
du musst dir die Frage einfach nur ausgeben lassen:
While not @error = -1
WEnd
bzw
While @error <> -1
WEnd
Die Frage ist was steht ich @error drin.
So long,
Mega
P.S.: Das not wird erst ausgeführt!
ich lass mir ja bei jeden durchlauf @error anzeigen - erst ist er null, dann wird er -1 und wieder -1 und wieder und wieder..... bis zum terminieren per taskmgr
edit: ich habe keine ahnung wo der fehler lag, habe msgboxen eingefügt und wieder gelöscht, ein paar mal gestartet und nun gehts....
liegts vieleicht an den einrückungen? werden die einrückungen bei autoIt vom compiler verarbeitet oder dienen die nur der übersicht des nutzers?
Hi,
nein es liegt nicht an den Einrückungen.
@error wird immer wieder überschrieben. Wahrscheinlich hast du nicht das richtige @error bzw. zu spät überprüft.
So long,
Mega
@error wird doch nicht nach einer ausgabe als msgBox zurückgesetzt, oder?
naja herausfinden kann das jetzt wohl niemand mehr
Hi,
nein, aber bei anderen Befehlen.
Naja, haupsache es funzt!
So long,
Mega
@CallMeN00b68
Hilfe richtig lesen:
FileRead
[/autoit]:
Return Value
Success: Returns the binary/string read.
Special: Sets @error to -1 if end-of-file is reached.
Failure: Sets @error to 1 if file not opened in read mode or other error.
Sets @error to 2 if count not defined for file open in raw read mode.
Und wenn deine Datei Carriage Returns und Linefeeds enthält, dann liest er das natürlich mit ein... Kommt halt ganz auf das an, was du vorhast...
So dann danke ich euch allen für die Hilfe, habe noch einige std mit testen diverser umstände verbracht und es läuft alles wie es soll
@Mods: Das [offen] bitte anpassen