• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

try... else??

Mini-Leopard

Rhode Island Greening
Registriert
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
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
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
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
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