1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

try... else??

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Mini-Leopard, 02.12.08.

  1. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    20.03.08
    Beiträge:
    476
    Hallo liebe Programmierer.

    Ich möchte gerne in eine repeat-Schleife ein try einbind, bzw. habe Ich es getan.
    Nun möchte Ich allerdings, dass wenn try zutrifft, die Aktion also funktioniert, dass Ich aus der repeat-Schleife aussteige.
    Mein Programm soll mehrere Ordner durchsuchen und wenn er den Ordner gefunden hat, der eine bestimmte Datei enthält, soll es aus der repeat[/]-Schleife wieder aussteigen.
    Also so ungefähr wie:
    Code:
    set xyz to files 
    repeat with i from 1 to (count of xyz)
       try
          set VariVari to "~/Desktop/Ordner/" & (item i of xyz
       else
          end repeat
       end try
    end repeat
    Allerdings weiß jeder, der schonmal mit "try" rumprobiert hat, dass das nicht funktioniert.

    Zum Beispiel:
    Code:
    tell application "System Events"
    	set xyz to folders of folder "~/Desktop/Ordner"
    	repeat with i from 1 to (count of xyz)
    		try
    			set VariVari to (path of (item i of xyz)) & "USA.tif"
    			display dialog (VariVari as string)
    		end try
    	end repeat
    end tell
    Nur wird es jetzt "display dialog" für jeden der 4 Unterordner von "~/Desktop/Ordner/" (die Ich angelegt habe) anzeigen.
    Ich möchte allerdings, dass mein Programm das display dialog nur für den Ordner macht, in dem die Datei "USA.tif" wirklich liegt. Sprich, wenn das try funktioniert hat.

    Kann mir da jemand helfen??


    Vielen Dank und Schönen Abend
    Mini-Leo
     
  2. CloneOfMyself

    CloneOfMyself Weigelts Zinszahler (Rotfranch)

    Dabei seit:
    24.02.07
    Beiträge:
    253
    tell application "System Events" to set xyz to folders of folder "~/Desktop/Ordner"
    repeat with i from 1 to (count of xyz)
    try
    set VariVari to (path of (item i of xyz)) & "USA.tif" as alias
    (display dialog (VariVari as string))
    end try
    end repeat
     
  3. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    Hallo,

    schwere Manöverkritik ;)

    - beschäftige nie andere Applikationen, wenn nicht notwendig! (In Deinem Fall "System Events", warum nur?)
    - Pfadangaben werden nicht mit "of" und "of" geschrieben! Nicht alle Applikationen verstehen das. Zumal auch veraltete und fehleranfällige Schreibweise.
    - TRY-Blöcke werden in Schleifen gesetzt, damit diese eben nicht abbrechen

    Hier meine Empfehlung.

    Code:
    -- Meine Datei
    set meineDatei to "text.txt"
    
    -- alle Ordner holen
    tell application "Finder" to set alleOrdner to every folder of (path to desktop folder)
    
    -- Schliefe, die alle Ordner abarbeitet
    repeat with nOrdner in alleOrdner
        
        -- Ordnerpfad setzen
        set nOrdnerPfad to nOrdner as string
        
        -- Dtei prüfen
        if ((my fileCheck(nOrdnerPfad, meineDatei)) is true) then
            display alert "Yep..." message (nOrdnerPfad & meineDatei)
            exit repeat
        else
            -- was tun, wenn die Datei nicht da ist?
        end if
        
    end repeat
    
    -- Prüfen, ob die Datei existiert
    on fileCheck(nOrdnerPfad, meineDatei)
        try
            alias (nOrdnerPfad & meineDatei)
            return true
        on error
            return false
        end try
    end fileCheck
    Viele Grüße
     

Diese Seite empfehlen