[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Array Überprüfung

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

Array Überprüfung

faxinger666
Beiträge gesamt: 149

15. Nov 2020, 17:48
Beitrag # 1 von 4
Bewertung:
(4720 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

bei folgendem Problem komme ich leider nicht weiter;

Ich habe ein Array mit den Namen der Objektformate die in einem Skript verwendet werden. (_Skript_OF )

Dieses Namen-Array soll gegen die tatsächlich im Dokument vorkommenden Objektformatnamen geprüft werden.

Und genau hier finde ich keine Lösung.

Das ist mein Code:
Code
var _dok = app.activeDocument;  

var _Skript_OF = ["preis_1","preis_2", "preis_A", "preis_groß", "preis_klein", "preis_Oben", "preis_unten" ]

var _dok_OF = _dok.objectStyles.everyItem().name;


for (var z=0; z < _Skript_OF.length; z++) {


if (_Skript_OF[z] != _dok_OF) {
alert ("Fehler")}
};

Wie kann man das machen?
Also wenn der jeweilige Skript-Objektformatname im Dokument als Objektformatname nicht existiert soll ein Fahler ausgegeben werden.

Ich hoffe es ist halbwegs verständlich was ich erreichen möchte.

Danke
X

Array Überprüfung

WernerPerplies
Beiträge gesamt: 2597

15. Nov 2020, 18:29
Beitrag # 2 von 4
Beitrag ID: #577585
Bewertung:
(4712 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin faxinger,

das wäre mein Vorschlag, sollte für alle Formattypen funktionieren:
Code
var /*Array*/styleNames = ["Test", "preis_1","preis_2", "preis_A", "preis_groß", "preis_klein", "preis_Oben", "preis_unten" ]; 
/*Array*/missing = checkStylesAgainstNameList(app.activeDocument, "object", styleNames);

if (missing.length > 0){
alert("{0} Fehler".replace("{0}", (missing.length)).toString());
alert(missing.join("\n"));
}
/*Array*/function checkStylesAgainstNameList(/*document*/doc, /*string*/type, /*Array*/styleNames){
var /*Array*/missingStyles = [],
/*Int*/l = styleNames.length;

for (var i = 0; i<l; i++){
if (!(doc[type+"Styles"].itemByName(styleNames[i]).isValid)){
missingStyles.push(styleNames[i]);
}
}
return missingStyles;
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#577584]

Array Überprüfung

Gerald Singelmann
  
Beiträge gesamt: 6247

16. Nov 2020, 04:02
Beitrag # 3 von 4
Beitrag ID: #577587
Bewertung: ||
(4649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Diese Zeile

Code
if (_Skript_OF[z] != _dok_OF) { 


bedeutet

Zitat Wenn das z-te Element der einen Liste gleich der gesamten anderen Liste ist


Deswegen funktioniert das nicht.

Der Brot-und-Butter-Weg, zwei Listen abzugleichen, ist:
Code
for (var i = 0; i < liste1.length; i++ ) { 
var missing = true;
inner: for ( var j = 0; j < liste2.length; j++ ) {
if ( liste1[i] == liste2[j] ) {
missing = false;
break inner;
}
}
if ( missing ) alert( "fehlt" );
}


Wenn ich das richtig in Erinnerung habe, liefert
Code
var _dok_OF = _dok.objectStyles.everyItem().name; 

auch nicht alle Formate, sondern nur die, die nicht in Ordner stecken. Für alle gibt es "allObjectStyles."


als Antwort auf: [#577584]

Array Überprüfung

faxinger666
Beiträge gesamt: 149

17. Nov 2020, 08:18
Beitrag # 4 von 4
Beitrag ID: #577598
Bewertung:
(4523 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Gerald und Werner,

vielen Dank für die Antworten. Genau das habe ich gesucht.

Ich finde beide Lösungsansätze interessant. Es führen doch viele Wege nach Rom.

Das hat mir sehr geholfen :-).

Einen schönen Tag noch und alles Gute.

LG
faxinger


als Antwort auf: [#577585]
(Dieser Beitrag wurde von faxinger666 am 17. Nov 2020, 08:20 geändert)
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
05.03.2021 - 30.04.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 05. März 2021, 13.00 Uhr - Freitag, 30. Apr. 2021, 17.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen.

Preis: CHF 3'250.–
Dauer: 8.5 Tage - Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PWEB