[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Name einer Eigenschaft als String ausgeben

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

Name einer Eigenschaft als String ausgeben

da-tex
Beiträge gesamt: 67

6. Mär 2014, 12:04
Beitrag # 1 von 9
Bewertung:
(2784 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Community,
ich möchte gern den Namen einer Eigenschaft ausgeben. Mit folgendem Code gelingt es einen String wie bsp.
Heading 1 [object Color] Farbname
auszugeben.
Code
var onePStyle = app.activeDocument.paragraphStyles[-1] 
$.writeln(onePStyle.name + "\t" + onePStyle.fillColor + "\t" + onePStyle.fillColor.name);


Nun möchte ich aber, dass anstatt [object Color] nun fillColor ausgegeben wird. Mit toString() hats leider nicht funktioniert. Hat jemand einen Vorschlag, wie man dies realisieren könnte?
X

Name einer Eigenschaft als String ausgeben

Martin Fischer
  
Beiträge gesamt: 12783

6. Mär 2014, 12:30
Beitrag # 2 von 9
Beitrag ID: #524543
Bewertung:
(2763 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

den Namen hast Du ja bereits korrekt abgefragt (onePStyle.fillColor.name).
Brauchst Du noch die übrigen Eigenschaften als String?

Dann laß' Dir diese mit
Code
onePStyle.fillColor.properties.toSource() 


ausgeben
oder gehe durch die einzelnen Eigenschaften
Code
for (var i in onePStyle.fillColor) 
$.writeln( i + '\t' + onePStyle.fillColor[i]);


Oder brauchst Du den Objektbezeichner?
Code
$.writeln(onePStyle.fillColor.constructor.name) 



als Antwort auf: [#524542]
(Dieser Beitrag wurde von Martin Fischer am 6. Mär 2014, 13:01 geändert)

Name einer Eigenschaft als String ausgeben

WernerPerplies
Beiträge gesamt: 2762

6. Mär 2014, 12:39
Beitrag # 3 von 9
Beitrag ID: #524544
Bewertung:
(2753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo da-tex,

probiere mal diese Funktion:
Code
    /*String*/function getColorName(/*FillColor*/fc) 
{
try
{
if (fc.constructor.name!= "String")
{
if (fc.hasOwnProperty ("name"))
fc = fc.name;
else
fc = "unDefColor" + fc.constructor.name;
}
else
return fc;
if (fc == "None")
fc = " ";
}
catch (error)
{
// gO.myError.doError(error, arguments, $.stack, -1, false, false);
// fc = mSg.ErrorHappens;
}
return fc;
}



als Antwort auf: [#524542]
(Dieser Beitrag wurde von WernerPerplies am 6. Mär 2014, 12:57 geändert)

Name einer Eigenschaft als String ausgeben

Dirk Becker
Beiträge gesamt: 193

6. Mär 2014, 12:55
Beitrag # 4 von 9
Beitrag ID: #524545
Bewertung: ||
(2740 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Nun möchte ich aber, dass anstatt [object Color] nun fillColor ausgegeben wird. Mit toString() hats leider nicht funktioniert. Hat jemand einen Vorschlag, wie man dies realisieren könnte?


Hmm, Klartext schreibt man einfach zwischen die Anführungszeichen ...

Code
var onePStyle = app.activeDocument.paragraphStyles[-1]  
$.writeln(onePStyle.name + "\tfillColor\t" + onePStyle.fillColor.name);



als Antwort auf: [#524542]

Name einer Eigenschaft als String ausgeben

da-tex
Beiträge gesamt: 67

6. Mär 2014, 13:36
Beitrag # 5 von 9
Beitrag ID: #524547
Bewertung:
(2698 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für eure Antworten,
ich habe mich vllt. etwas missverständlich ausgedrückt.
Es soll nicht der Name der Farbe oder die Eigenschaften der Farbe als String ausgegeben werden, sondern die Eigenschaft "fillColor" des Absatzformates.

Code
$.writeln(onePStyle.fillColor.constructor.name) 

gibt nur "Color" aus, nicht aber "fillColor"


Hintergrund ist der, dass verschiedene Eigenschaften des Absatzformates untersucht werden, und eine Auflistung dieser geschehen soll. Ich habe das obige Beispiel nur für ein Absatzformat gewählt, da ich dachte es sei übersichtlicher.

Dirk Beckers Variante ist nur bedingt geeignet, da ich nicht jede Eigenschaft hart in den Quellcode schreiben möchte.
Code
var onePStyle = app.activeDocument.paragraphStyles[-1]   
$.writeln(onePStyle.name + "\t" + ??? + "\t" + onePStyle.fillColor.name);

Soll folgendes ausgeben.
"Absatzformat1 \t fillColor \t Rot"

Code
$.writeln(onePStyle.name + "\t" + ??? + "\t" + onePStyle.strokeColor.name); 

Soll folgendes ausgeben.
"Absatzformat1 \t strokeColor \t Blau"


als Antwort auf: [#524545]
(Dieser Beitrag wurde von da-tex am 6. Mär 2014, 13:39 geändert)

Name einer Eigenschaft als String ausgeben

WernerPerplies
Beiträge gesamt: 2762

6. Mär 2014, 13:53
Beitrag # 6 von 9
Beitrag ID: #524548
Bewertung:
(2684 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dann solltest Du Dir das ansehen:
WpsCompareObjectsClass als Includedatei

Da steckt alles drin, was Du brauchst.


als Antwort auf: [#524547]

Name einer Eigenschaft als String ausgeben

Martin Fischer
  
Beiträge gesamt: 12783

6. Mär 2014, 14:02
Beitrag # 7 von 9
Beitrag ID: #524549
Bewertung:
(2667 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielleicht so:

Code
var onePStyle = app.activeDocument.paragraphStyles[-1] 
var oneProperty = 'fillColor';
$.writeln(onePStyle.name + "\t" + oneProperty + "\t" + onePStyle[oneProperty].name);



als Antwort auf: [#524547]
(Dieser Beitrag wurde von Martin Fischer am 6. Mär 2014, 14:03 geändert)

Name einer Eigenschaft als String ausgeben

da-tex
Beiträge gesamt: 67

6. Mär 2014, 14:23
Beitrag # 8 von 9
Beitrag ID: #524552
Bewertung:
(2649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Fischer,
nun habe ich schon einen Beitrag geschrieben, ihn aber wieder gelöscht, weil ich nicht richtig gelesen habe.
Ja das ist ein guter Ansatz. Danke
An Herrn Perplies: Ich werde mich heute Abend einmal registrieren und Ihre WpsCompareObjectsClass näher anschauen.

Vielen Dank für eure Hilfe


als Antwort auf: [#524549]

Name einer Eigenschaft als String ausgeben

WernerPerplies
Beiträge gesamt: 2762

6. Mär 2014, 14:53
Beitrag # 9 von 9
Beitrag ID: #524556
Bewertung:
(2609 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo da-tex,

Zitat An Herrn Perplies: Ich werde mich heute Abend einmal registrieren und Ihre WpsCompareObjectsClass näher anschauen.

Und ich freue mich natürlich über Feedback.

Und während meine WpsCompareObjectsClass rekursiv alle Eigenschaften eines Objektes ermitteln kann, kann man in folgender Routine von mir gezielt einzelne Informationen einer beliebigen Collection ermitteln:
getBy

Die Routine ist übrigens leicht auf Arrays und Objekte erweiterbar, app.languagesWithVendors ist natürlich nur ein Beispiel.


als Antwort auf: [#524552]
X