AppleScript para escupir un número incrementado con ceros iniciales

1

Así que estoy tratando de crear una secuencia de comandos simple que usará un archivo para almacenar un entero. Cuando se llama a la secuencia de comandos (en mi caso, como parte de una macro de teclado), se insertará (donde estoy escribiendo) el número entero actual, con el número necesario de ceros a la izquierda. Luego incrementará el entero (sin los ceros iniciales) y lo escribirá de nuevo en el archivo.

La parte inicial de ceros funciona, pero por mi vida no puedo averiguar cómo almacenar el valor de la variable 'contador' en un archivo para que, más tarde, cuando vuelva a llamar al script, se recupere donde se detuvo.

Cualquier ayuda sería muy apreciada.

Aquí está el mensaje de error que recibo:

    error "Can’t make \"z:Users:zachphillips:Dev:AppleScripts:counter\"  
    into type file." number -1700 from
    "z:Users:zachphillips:Dev:AppleScripts:counter" to file

Y aquí está el código:

    set theFile to "z:Users:zachphillips:Dev:AppleScripts:counter"
        open for access theFile
        set fileContents to read theFile
        close access theFile

        set counter to fileContents as integer


        on add_leading_zeros(counter, max_leading_zeros)
        set the threshold_number to (10 ^ max_leading_zeros) as integer
        if counter is less than the threshold_number then
            set the leading_zeros to ""
            set the digit_count to the length of ((counter div 1) as string)
            set the character_count to (max_leading_zeros + 1) - digit_count
            repeat character_count times
                set the leading_zeros to (the leading_zeros & "0") as string
            end repeat
            return (leading_zeros & (counter as text)) as string
        else
            return counter as text
        end if
    end add_leading_zeros

    add_leading_zeros(counter, 2)


    open for access newFile with write permission
    set eof of newFile to 0
    write counter + 1 to newFile
    close access newFile
    
pregunta 28.02.2011 - 20:26

2 respuestas

1

Agregue una extensión .txt al archivo en el que está guardando. Si counter es la carpeta, haga esto:

set theFile to "z:Users:zachphillips:Dev:AppleScripts:counter:save.txt"

Suponiendo que tiene una ruta válida, esto debería solucionar el problema. De lo contrario, estás intentando guardar en una carpeta.

    
respondido por el Nathan Greenstein 28.02.2011 - 21:01
0

El resultado de open for access es un "número de referencia de archivo". Debe usar este número con los comandos read , write y close access . Por ejemplo,

set handle to open for access theFile
set fileContents to read handle
close access handle

Además, la secuencia de comandos ignora el resultado de add_leading_zeros(counter, 2) . Puede volver a poner el resultado en counter con

set counter to add_leading_zeros(counter, 2)

pero si haces counter + 1 después de eso, AppleScript fuerza a counter de texto a entero, y pierdes los ceros iniciales. Desea agregar 1 antes de poner los ceros iniciales, como

set counter to add_leading_zeros(counter + 1, 2)
    
respondido por el kernigh 03.11.2017 - 02:04

Lea otras preguntas en las etiquetas