Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Rückwärts durch Array iterieren funktioniert nicht

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Rückwärts durch Array iterieren funktioniert nicht

Gaby Leuenberger
Beiträge gesamt: 29

19. Okt 2017, 14:22
Beitrag # 1 von 3
Bewertung:
(2039 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich verstehe nicht, warum dieser Code nicht funktioniert:
Code
var _myDoc = app.activeDocument;  
var _myFonts = _myDoc.fonts;
var _FehlFonts = new Array();
for (var x = 0; x < _myFonts.length; x++){
if ( _myFonts[x].status ==FontStatus.NOT_AVAILABLE){_FehlFonts.push(_myFonts[x].name)}
}
for (var i=_FehlFonts.length-1; i>=1; i--){
if(_FehlFonts[i]===_FehlFonts[i-1]){_FehlFonts.pop();}}
var _alleFehlFonts = _FehlFonts.join("\r");


_FehlFonts.length ist 2, dann müsste doch i bei der Zählerdefinition auf 1 gesetzt werden? Die Konsole gibt aber i als 0 aus und ich verstehe nicht, warum. Wenn ich zB FontStatus.AVAILABLE einsetze, ist _FehlFonts.length 13, i =12 und alles funktioniert ...?

Sieht jemand den Fehler?

Merci!

Gruss
X

Rückwärts durch Array iterieren funktioniert nicht

Gerald Singelmann
  
Beiträge gesamt: 6269

19. Okt 2017, 16:42
Beitrag # 2 von 3
Beitrag ID: #560024
Bewertung:
(2025 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
var _myDoc = app.activeDocument;   
var _myFonts = _myDoc.fonts;
var _FehlFonts = new Array();
for (var x = 0; x < _myFonts.length; x++){
if ( _myFonts[x].status ==FontStatus.NOT_AVAILABLE ) {
_FehlFonts.push(_myFonts[x].name)
}
}
var aux = _FehlFonts.length;
for (var i=_FehlFonts.length-1; i>=1; i--) {
if(_FehlFonts[i]===_FehlFonts[i-1]) {
_FehlFonts.pop();
}
}
var _alleFehlFonts = _FehlFonts.join("\r");


Ein schönes Beispiel für den Wert sauberer Einrückungen. Erst nach dem Aufräumen habe ich verstanden, was der Code macht.
Da aber quasi ausgeschlossen, dass der selbe Eintrag 2x im _FehlFonts enthalten ist, verstehe ich nicht, was die zweite Schleife soll.

Dann wiederum: Wenn aux tatsächlich 2 ist, sollte die 2. Schleife mit i=1 anfangen.


als Antwort auf: [#560020]

Rückwärts durch Array iterieren funktioniert nicht

Gaby Leuenberger
Beiträge gesamt: 29

19. Okt 2017, 17:00
Beitrag # 3 von 3
Beitrag ID: #560025
Bewertung:
(2016 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entschuldigung wegen der Einrückungen, Einzeiler schreibe ich noch gerne so, um Platz zu sparen ...

Die Annahme zur zweiten Schleife ist in Bezug zum Beispiel-Code richtig, zum Gesamtskript aber falsch, weil das Array anders befüllt wird. Die Abkürzung hatte ich der Übersichtlichkeit so aufgebaut.

Vielleicht fange ich das ganze aber in der Tat besser mit try/catch ab, anstatt von mehreren Funktionen her ein Array zu füllen und dann die Duplikate wegzuschmeissen ...

Hmm... man verrennt sich so leicht in gewissen Ideen!

Aber es ist tatsächlich so: ich weiss, das Array hat zwei identische Einträge (von zwei Funktionen); trotzdem gibt mir die Konsole i = 0 aus ... ich bleibe also ratlos und suche eine andere Lösung. Immerhin weiss ich jetzt, dass die Schleife im Grundsatz stimmt, Merci!


als Antwort auf: [#560024]