Syntax för att få restvärde av en division i AS?

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2003-07-31 18:59

Ngn som vet syntaxen för att ta fram restvärde efter en division i AS? Jag vill skapa en if-sats som triggas värdet på en variabel enligt mönstret 4, 8, 16 osv med följande skript.

set aaa to variabeln/4
if restvärde of aaa = 0 then
utför kommando
else
ngt annat
end if

Om variabeln är 5 så blir aaa 1.25 och restvärdet 0.25. Endast vid jämna 4,8,12 osv blir resten 0.

Tror att det är smidigaste sättet att trigga en funktion kontinuerligt, men kan inte hitta syntaxen i Apple's language guide.

Hej
Minns inte helt men prova med "mod"
dvs
(4 mod 1 = 0)
(4 mod 2 = 0)
(4 mod 3 = 1)
(4 mod 4 = 0)

--
Olof

---------
The best way to save face to keep the lower part shut.

Olof har rätt, de två kommandon man använder sig av heter mod och div:

Exempel:

10 / 3 = 3.333333333333
10 div 3 = 3
10 mod 3 = 1

/Ola

Du kanske istället vill köra en repeat istället?

repeat with w from x to y by z
-- Do stuff here
end repeat

w= varibelns värde inuti loopen
x = startvärde
y = slutvärde
z = uppräkna med, tex 4.

Du kan inuti loopen använda dig av valfri if-sats och inuti den, ha exit repeat om du vill lämna loopen i "förtid".

/Ola

  • Medlem
  • International user
  • 2003-08-01 18:35

Jepp, kör en if + or sats med 3 värden nu men tänkte att den renaste lösningen var med restvärde... det var den jag kom på först iaf...

if (aaa mod 4) = 0 then
utför åtgärd
else
end if

borde funka bra.

Skall använda det till att byta rad i en html-tabell.

Tack för hjälpen!

  • Medlem
  • International user
  • 2003-08-01 19:49

mod och div är inte dumma alls!

Satt och pulade me if-satsen som skall trigga en ny html-sida (och namnge sidan som arkiveras). Till skillnad från radbyte så skall inte ny sida göras förrän den gamla + 1 bild.

if ((antal_bilder - 1) mod 12) = 0 then

triggas på 13, 25,37, osv

Sen kan jag använda div för att ta sätta rätt namn på sidan som arkiveras:

save file as "index" & (num_pic div 12) & ".html"

arkivfilerna kommer "utan minne" att döpas till

index1.html, index2.html, osv i all oändlighet

Finns säkert enklare/bättre sätt att göra detta på men jag tyckte att det var lite nice...

Några osammanhängande snuttar som jag plockat ut ert av mina script hittar du nedan.

Det var skrivet för URL Access Scripting i Mac OS 9, har inte testat för OS X.

Dels så hittar du en snutt för att skapa en mapp med dagens datum, om den inte redan finns. Sedan följer en snutt som kollar om det finns en fil som heter 1.html, om inte så skapas den.

Hoppas att du kan få ut något vettigt av dessa exempel:

(*
Först kollar vi om det finns en mapp som heter Dagens aktiva på skrivbordet, om inte
skapas den.
*)
tell application "Finder"
if (folder "Dagens Aktiva" of desktop exists) is not true then
set the DailyFolder to make new folder at desktop ¬
with properties {name:"Dagens Aktiva", comment:"Innehåller Dagens aktiva diskussioner på 99mac.com"}
else
set DailyFolder to "Macintosh HD:Desktop Folder:Dagens Aktiva:"
set DailyFolder to item DailyFolder as alias
end if
(*
Dags att skapa ett namn på mappen utifrån dagens datum
Först tar vi fram månaden i form av en siffra, om den är mindre än 10 så skall vi lägga
till en nolla framför. Detsamma gäller dagen.
Sedan sätter vi ihop detta till ett namn på en mapp och om den inte finns skapar vi den.
*)
set toDay to current date
set DailyMonth to month of toDay -- Returnerar engelsk månad!
(*set monthsOfTheYear to {"Januari", "Februari", "Mars", "April", "Maj", "Juni", ¬
"Juli", "Augusti", "September", "Oktober", "November", "December"}
*)

set monthsOfTheYear to {"January", "February", "March", "April", "May", "June", ¬
"July", "August", "September", "October", "November", "December"}

set monthnr to 0
repeat with monthName in monthsOfTheYear
set monthnr to monthnr + 1
if (DailyMonth as text) = (monthName as text) then
exit repeat
end if
end repeat
if monthnr < 10 then
set monthnr to "0" & (monthnr as text)
end if
set daynumber to day of toDay
if daynumber < 10 then
set daynumber to "0" & (daynumber as text)
end if
set DailyDate to (year of toDay & "-" & (monthnr as text) & "-" & daynumber) as string
set destination to (DailyFolder as string) & (DailyDate as string)

(*
Kolla om den mappen finns, om inte, skapa den.
*)
if exists (folder destination) then
set destination to item destination as alias
else
make new folder at DailyFolder with properties {name:(DailyDate as string)}
set destination to result
end if

Nästa snutt:

(*
Vi behöver även skapa en fil som vi kan ladda in sidan i, 1.html
Tydligen är det noga med att ange "as file specification".
*)
set filespec to "1.html"
set filespec to (destination as string) & filespec
if exists (file filespec) then
set filespec to item filespec as file specification
else
make new file at destination ¬
with properties {name:"1.html", creator type:"MSIE", file type:"TEXT"}
set filespec to result as file specification
end if

/Ola

1
Bevaka tråden