• Medlem
  • International user
  • 2004-03-19 00:32

Så här kan du konvertera POSIX path till "gammal" Mac path som AppleScript använder.
Problemet är att vissa sökvägar till filer är av POSIX-typ (/Users/user/filen). Det fungerar inte med ApleScript (?), 'file "/Users/user/filen"' fungerar inte. Men det gör 'file "Macintosh HD:Uses:user:filen"'.

Om inte annat kan den som vill studera hur "AppleScript's text item delimiters" kan användas...

--Konverterar POSIX (UNIX-style) till "gammal" Mac path
-- D.v.s "/Users/user/filen" till "Macintosh HD:Users:user:filen".

tell application "Finder"
	--Namnet på din hårddisk, vanligen "Macintosh HD".
	-- Detta namn behöver vi senare för att få hela pathen
	-- som ju alltid startar med HD:s namn.
	set std to name of startup disk
end tell

set POSIX_path to "/Uses/user/filen"

-- "AppleScript's text item delimiters" medger uppdelning av en sträng
-- till en lista, med ett "text item" som delningspunkt.
-- Till exempel ett "text item" som är '/' i en POSIX path.

-- Man brukar alltid spara nuvarande "text item"
-- och sedan återställa det, eftersom andra script kan
-- ha satt ett annat "text item".
copy AppleScript's text item delimiters to oldtid

-- Strängen med POSIX path har ju '/' som avdelare (delimiter).
set AppleScript's text item delimiters to "/"

-- Denna rad gör själva uppdelningen till en lista
-- som ser ut så här: {"", "Uses", "user", "filen"}
set path_tmp to (text items of POSIX_path)

-- Nu byter vi värdet på "AppleScript's text item delimiters"
-- till ':'  som används av AppleScript.
set AppleScript's text item delimiters to ":"

-- Denna rad gör tricket. Listan {"", "Uses", "user", "filen"}
-- slås ihop med ett ':' mellan varje "item" i listan.
-- Resultatet blir: ":Uses:user:filen".
set Mac_path to (text items of path_tmp as text)

-- Återställer det "text item" vi hade innan vi började.
-- Gör alltid detta!
set AppleScript's text item delimiters to oldtid

-- Slutligen lägger vi till namnet på HD:n
-- som vi fixade i början på scriptet, till "Mac_path".
set Mac_path to (std & Mac_path)

-- Resultat: "Macintosh HD:Uses:user:filen".