• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Wenn Variable XXX enthält, dann ...

shutterfire

New member
Hallo,

ich programmiere gerade ein Script für Photoshop (Was hierbei jedoch keine bedeutende Rolle spielt), und versuche folgendes durchzuführen.

Wenn die Variable "Blende" "/10" enthält (Normalerweise steht davor dann etwas wie 35, also hat Blende den Wert 35/10), soll "/10" durch "" ersetzt werden, danach die Variable durch 10 geteilt werden. Letzteres, also
Code:
Blende.replace("/10",""){
Blende = Blende/10}
funktioniert einwandfrei.
Aber wie bekomme ich raus, ob 35/10 nun die /10 enthält. Denn es gibt auch Fälle, in denen dann dort z.B. 11/1 steht, dann soll natürlich "/" durch "" ersetzt werden, und nichts weiter geschehen.

Soll fertig also ungefähr so aussehen:
Code:
if (Blende ??? /10){
   Blende.replace("/10","")
   Blende = Blende/10}
else{
if (Blende ??? /1){
   Blende.replace("/1","")}}
 
Zuletzt bearbeitet:
Lösung:

Code:
  if (Blende.indexOf('/10') >0){
      Blende = Blende.replace("/10", "");
      Blende = "f/" + Blende/10;
      }
  else {
      Blende = Blende.replace("/1", "");
      Blende = "f/" + Blende
      }
 
Wenn das "/" da immer ist, würde ich ja in etwas sowas machen:
Code:
var parts = Blende.split("/");
Blende = "f/" + parseInt(parts[0], 10) / (parseInt(parts[1], 10] || 1);
dann hast du alle "Zahl/Zahl" Kombinationen abgedeckt.

PS: sehr schön, dass du gleich die Lösung, die du für dich gefunden hast, hier geschrieben hast.
 
Moin,

Anderes Problem:
Code:
    if (doc.Height > doc.Width){
        ausrichtung = "0";
        }
    else {
        ausrichtung = "1";
        }

Variable ausrichtung ist als "" definiert. doc ist auch definiert. Aber klappen tut es trotzdem nicht. Wieso? Hier die relevanten Parts des Scripts:
Code:
doc = app.activeDocument;
var ausrichtung = "";
function generatetext(Kamera, Objektiv, Blende, Shutter, Brennweite) {
    if (ausrichtung == "1"){
        textebene.textItem.position =  [10,1187];
        textebene.textItem.contents = Kamera + " mit " + Objektiv + " bei " + Brennweite + ", " + Blende + ", " + Shutter + ", ISO" + ISO[1];
        }
    else {
        textebene.textItem.position = [10,1735];
        textebene.textItem.contents = Kamera + " mit " + Objektiv + "\r" + "bei " + Brennweite + ", " + Blende + ", " + Shutter + ", ISO" + ISO[1];
        }
    }
    if (doc.Height > doc.Width){
        ausrichtung = "0";
        }
    else {
        ausrichtung = "1";
        }
    generatetext(Kamera, Objektiv, Blende, Shutter, Brennweite);
 
Was steht denn in der Fehler-Konsole?

PS: ich täte hier
Code:
    if (doc.Height > doc.Width){
        ausrichtung = "0";
        }
sowohl height als auch width klein schreiben...

PPS: globale Variablen sind nichts erwünschenswertes - also immer var ausrichtung = ... verwenden!

PPPS: wenn du schon den Variablen Zahlenwerte zuweist, dann mach das auch "richtig" und nicht "nur" als String. Also
Code:
var ausrichtung = 1;
//...
if (ausrichtung === 1){
Hierzu: Gleichheitsoperatoren in Javascript: Gleich ist nicht gleich gleich | Franky
My advice is to never use the evil twins. Instead, always use ===and !==.
 
Zuletzt bearbeitet:
Deine Tipps habe ich gerade mal eingebaut, dabei ist mir der Fehler aufgefallen: Die Funktion hat ausrichtung noch nicht erwartet :D
 
Zurück
Oben