Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- missing, before statement (http://www.informatikerboard.de/board/thread.php?threadid=3205)
Geschrieben von bloody beginner am 10.09.2016 um 22:46:
missing, before statement
Meine Frage:
Hallo zusammen,
ich hab eine Redirect-Liste bekommen, auf der sich wohl ein fehler befindet, sprich 2 URL´s gleichen sich und die Seite lädt sich somit dauerhaft selbst. Um jetzt nicht alles einzeln durch zu gehen (und den Fehler wohlmöglich noch zu übersehen), dachte ich mir ein Programm zu schreiben. Leider taucht immer der Fehler "missing, before statement" auf.
Wahrscheinlich befinden sich auch noch weit mehr Fehler im Programm - bin nämlich ein relativer Neuling um ehrlich zu sein...
Meine Ideen:
Also, die Redirect´s sind immer Gleich aufgebaut:
'Irgendeine URL' 'noch ne URL' [ unwichtiger Kram ]
, das ganze dann halt nur ein paar hundert mal hintereinander.
Meine Idee also:
Ich geh die Liste Zeile für Zeile durch. Um das ganze in Zeilen einzuteilen benutze ich den Befehl .split(']'); , da ja immer ein ']' am ende jeder Zeile steht.
Dann definiere ich: var '="'";
Jetzt kann ich mir die vier Positionen von " ' " in den jeweiligen Zeilen mit .indexOf(')[0], etc. anzeigen lassen.
mit .substring( Position vom ersten ' , Position vom zweiten ')
und .substring( Position vom dritten ' , Position vom vierten ')
definiere ich die Abschnitte die verglichen werden sollen.
Dann nur noch str1.equal(str2) und ich finde heraus ob das ganze gleich ist.
Also rein von der Logik her sollte das klappen. Den Quellcode hab ich mal als Bild in den Anhang geladen und hab mal jetzt ein kurzes Beispiel rein gemacht. Wahrscheinlich sind da recht viele Formfehler drin, und ich bin mir auch nicht ganz sicher ob man einen String überhaupt als array darstellen darf, aber erst mal interessiert mich der Fehler "missing ; before statement"...
Geschrieben von eulerscheZahl am 11.09.2016 um 07:44:
Da ich keine Lust auf abtippen habe und tesseract (Texterkennung) das hier liefert:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
|
<! Don'w: html>
mm»
<head>
<title>redire(ts</title>
</head>
<bodp
<p I'd "Zeilenausgabe"> </p>
52hr eehrte Dame" und Nerre 'Sehr eehrte Dame" und NerrEn' []
'Sehr gee rm Dame" und Nerren' 'Sehr gee rm 5(hfller und 5(hfllerinnen' [1;
var 1' = OH
stringUZeI'le Tgt.split(']'):
var Ausgabetut .
var=:
for (k2 . i++) I
string tut="zeile[i]":
w
var "(uninde'Ho-
var x "tut.immf(')[l
var y "(unimmfl'flz
var z ="tut.indmf(')[3]:
var 5n) = "str.5ub5tring(w . x )-
var Strz "str.5ub5tr1'ng( . z)
if(5(r]. aqua] (snzS/n
Ausgabetut m
} }
dominant.getElmemny1d("zeilenausgabe").innerNTML = Ausgabetut:
</$(r1'p[>
4m)»
</html>
|
|
Kopiere deinen Code als Text her rein, wenn man dir helfen soll.
Was mir ins Auge springt:
| code: |
1:
2:
|
var i = 0;
for (i<2, i++) |
|
Die Syntax ist falsch, so geht es:
| code: |
1:
|
for (var i = 0; i < 2; i++) |
|
allgemein:
for (Initialisierung; Abbruchbedingung; Wertänderung)
Geschrieben von bloody beginner am 11.09.2016 um 11:13:
Danke schon mal für den Tipp mit dem for Befehl! Hab das jetzt mal ausgebessert
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
|
<!DOCTYPE html>
<html>
<head>
<title>redirects</title>
</head>
<body>
<p id="Zeilenausgabe"> </p>
<script>
var Text=" 'Sehr geehrte Damen und Herren' 'Sehr geehrte Damen und Herren' []
'Sehr geehrte Damen und Herren' 'Sehr geehrte Schüler und Schülerinnen' [];
var Zeile = Text.split(']');
var Ausgabetext = "";
var ' ="'"
for (var i= 0; i < 2; i++) {
string text="Zeile[0+i]";
var w ="str.indexOf(' , str.indexOf(')+0);
var x ="str.indexOf(' , str.indexOf(')+1);
var y ="str.indexOf(' , str.indexOf(')+2);
var z ="str.indexOf(' , str.indexOf(')+3);
var str1 = "str.substring(w , x );
var str2 = "str.substring(y , z );
if(str1.equal(str2)){
Ausgabetext+= i+1 + "<br>";
}
}
document.getElementById("Zeilenausgabe").innerHTML = Ausgabetext;
</script>
</body>
</html>
|
|
Hier ist noch der Quellcode
Geschrieben von bloody beginner am 11.09.2016 um 11:16:
kleiner Nachtrag noch,
| code: |
1:
2:
3:
4:
5:
6:
|
var w ="str.indexOf(')[0];
var x ="str.indexOf(')[1];
var y ="str.indexOf(')[2];
var z ="str.indexOf(')[3];
|
|
die Variablen sollen so aussehen.
Geschrieben von eulerscheZahl am 12.09.2016 um 07:20:
Da das nicht wie eine Hausaufgabe aussieht, will ich mal nicht so sein.
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
var Text=" 'Sehr geehrte Damen und Herren' 'Sehr geehrte Damen und Herren' []\n" +
"'Sehr geehrte Damen und Herren' 'Sehr geehrte Schüler und Schülerinnen' []";
var Zeile = Text.split(']');
var Ausgabetext = "";
for (var i= 0; i < Zeile.length - 1; i++) {
var parts = Zeile[i].split('\'');
var urls = [];
for (let p in parts) {
if (parts[p].trim().length > 0) urls.push(parts[p]);
}
if (urls[0] == urls[1]){
Ausgabetext+= i+1 + "<br>";
}
} |
|
Geschrieben von bloody beginner am 12.09.2016 um 09:07:
Danke, hat mir echt weiter geholfen!
Nur eine Frage hätte ich noch,
| code: |
1:
2:
3:
4:
|
for (let p in parts) {
if (parts[p].trim().length > 0) urls.push(parts[p]);
|
|
wofür genau steht die Bedingung "let p in parts" , bzw. was macht die?
Geschrieben von eulerscheZahl am 12.09.2016 um 09:14:
Das ist scheinbar das selbe wie:
for (var p = 0; p < parts.length; p++)
Mit JavaScript kenne ich mich auch nicht wirklich aus. Habe eben mal kurz gesucht: was ich eigentlich wollte war: parts.forEach
Geschrieben von bloody beginner am 12.09.2016 um 09:28:
Okay, dann weiß ich glaube ich bescheid, danke!
Forensoftware: Burning Board, entwickelt von WoltLab GmbH