AppleScript per sputare il numero incrementato con zeri iniziali

1

Quindi sto cercando di creare uno script semplice che utilizzi un file per memorizzare un numero intero. Quando viene chiamato lo script (nel mio caso come parte di una macro di tastiera) si inserirà (dove sto digitando) il numero intero corrente, con il numero richiesto di zeri iniziali. Quindi incrementerà il numero intero (senza zeri iniziali) e lo riscriverà nel file.

La prima parte degli zeri funziona, ma per la vita di me non riesco a capire come memorizzare il valore della variabile 'contatore' in un file in modo che, più tardi, quando chiamo di nuovo lo script, riprenderà dove è stato interrotto.

Qualsiasi aiuto sarebbe molto apprezzato.

Ecco il messaggio di errore che ottengo:

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

Ed ecco il codice:

    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
    
posta 28.02.2011 - 20:26
fonte

2 risposte

1

Aggiungi un'estensione .txt al file che stai salvando. Se counter è la cartella, fai questo:

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

Supponendo di avere un percorso valido, questo dovrebbe risolvere il problema. Altrimenti, stai tentando di salvare in una cartella.

    
risposta data 28.02.2011 - 21:01
fonte
0

Il risultato di open for access è un "numero di riferimento del file". È necessario utilizzare questo numero con i comandi read , write e close access . Ad esempio,

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

Inoltre, lo script ignora il risultato di add_leading_zeros(counter, 2) . Puoi reinserire il risultato in counter con

set counter to add_leading_zeros(counter, 2)

ma se lo fai counter + 1 dopo, AppleScript costringe counter da testo a intero e perdi gli zeri iniziali. Vuoi aggiungere 1 prima di inserire gli zeri iniziali, come

set counter to add_leading_zeros(counter + 1, 2)
    
risposta data 03.11.2017 - 02:04
fonte

Leggi altre domande sui tag