Hoe bepaal ik een positie in een list
1 september 2006 - 19:29   
geplaatst door: BeNoOne
Is er voor onderstaande code een elegantere manier in applescript om een positie te bepalen van een item in een list.

property EenList : {"aa", "bb", "cc", "dd", "ee"}
set a to 1

repeat with i in EenList
   set x to contents of i
   if x is "ee" then
      set PositieNummer to a
   else
      set a to a + 1
   end if
end repeat

display dialog PositieNummer

Hoe bepaal ik een positie in een list
4 september 2006 - 09:03    reactie #1
geplaatst door: BraboMac
Je zou wat meer aan formatting kunnen doen, maar dit is de manier om dit te doen.
Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.
Hoe bepaal ik een positie in een list
4 september 2006 - 23:15    reactie #2
geplaatst door: BeNoOne
Oké dank. Had gehoopt dat er een korte commando was, nu moet ik dus de hele lijst door rennen om te bepalen op welke positie hij staat.

Btw wat bedoel je met formatting? Als dat is hoe de tekst inspringt krijg ik het niet voorelkaar om met tabs te werken in mijn post. Met spaties ziet het er ongeveer zoals onderstaant uit.

property EenList : {"aa", "bb", "cc", "dd", "ee"}
set a to 1

repeat with i in EenList
    set x to contents of i
    if x is "ee" then
      set PositieNummer to a
    else
      set a to a + 1
    end if
end repeat

display dialog PositieNummer

(Bewerkt door BeNoOne om 23:16, 4-09-2006)

Hoe bepaal ik een positie in een list
5 september 2006 - 03:25    reactie #3
geplaatst door: macvooh
met lijsten moet je altijd de lijst doorlopen om de positie te weten.


weet niet in welke mate je vectoren kan gebruiken in die programmeertaal waarin je bezig bent?

ben ook maar n00b :shutup:

FREAK!
Hoe bepaal ik een positie in een list
5 september 2006 - 07:07    reactie #4
geplaatst door: bert
Mijn kennis is een beetje weggezakt, maar misschien heb je nog iets aan de volgende opmerkingen.

Met jouw routine krijg je altijd de laatste 'ee' in de list. Als je weet dat er maar 1 "ee" in de list aanwezig is, doorloopt jouw lus de hele lus, zelfs als "ee" op de eerste positie staat. AppleScript is (was?) niet snel, dus dat vind je misschien vervelend. Met een repeat until PositieNummer is not 0 kun je netjes uit de lus springen zodra de eerste "ee" gevonden wordt.

Mocht je er wat aan hebben: Op macscripter.net is het gratis boekje AppleScript for Absolute Starters in pdf formaat te vinden.

Bert


Hoe bepaal ik een positie in een list
7 september 2006 - 21:03    reactie #5
geplaatst door: BeNoOne
Dank voor de antwoorden. Mijn lijsten zijn echter niet mega groot, stuk of 10 20 items hooguit. Alleen door de aard van het gebruik van het script zou er vaak snel achter elkaar door de zelfde lijst "gerepeat" moeten worden.

Gelukkig ben ik er achter gekomen dat de applicatie die gescript moet worden met attachements werkt. Nu kan ik daar de routine in zetten die ik dan via een call kan aanroepen.

tell application "HuppeldePup"
     RoepEenRoutineAan()
end tell

Nu hoef ik dus nog maar 1x door de lijst heen als het script (op nieuw) geladen wordt en de routine voor de eerste keer aangeroepen wordt.

@bert
Ik ben niet helemaal een starter meer en ik had de pdf al eens gevonden. Maar ik script maar heel soms dus veel routine heb ik niet. Soms kijk ik er dus nog wel in om te kijken hoe het eea ook alweer was.
Maar die repeat until is wel een goeie tip.

(Bewerkt door BeNoOne om 21:14, 7-09-2006)