Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
StefanR •->


Anmeldedatum: 24.10.2001 Beiträge: 12 Wohnort: Schweiz
|
Verfasst am: 24.10.2001 - 10:10 Titel: Anfängerfragen - Records mit Keywords und Spaces |
|
|
Hallo!
Normalerweise Skripte ich ja nicht mit AppleScript, deswegen könnte euch meine Ausdrucksweise im folgenden etwas seltsam vorkommen ;-)
Ich hab folgendes Problem: ich möchte die Applikation Canto Cumulus skripten. Dazu bekomme ich per AppleScript einen Record (nennt sich das so?) mit Informationen über ein Listenfeld in dieser Datenbank:
{ID: 12, Language ID: 2, value: "Enthaltener Wert"}
Mein Problem:
folgende Skriptzeile funktioniert einwandfrei:
set newEntry to {newID: 12, newLanguage: 2, value: "neuer Wert"}
vom Prinzip her scheint mein Ansatz also zu stimmen. Bloss, wenn ich dann folgendes mache.
set newEntry to {ID: 12, language ID: 2, value "neuer Wert"}
dann beschwert sich AppleScript erstmal über das 'ID':
"Expected expression, etc. but found property or key form"
Beim Language ID: nocheinmal fast dasselbe.
Dummerweise brauch ich aber einen Record dieser Form...
Wie erreiche ich das? _________________ Gruss,
Stefan Rusterholz |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 24.10.2001 - 11:34 Titel: Anfängerfragen |
|
|
Ja, record nennt sich "das Ding". Es ist eine Sonderform der Liste, die einzelnen listitems sind hier mit Label versehen und somit z.B. unabhängig von ihrer Position i.d. Liste anhand des Labels auszulesen (get Language ID of the_Result).
Aber - zu Deinem Problem kann ich eigentlich nicht viel beisteuern - ich habe kein Cumulus. Zum Verständnis müsste ich erstmal wissen warum der Record in der Form gebraucht wird. Oft kann so etwas auch nur mittels eines vorhergehenden keyword genutzt werden, z.B. 'with properties {record}'
Wenn Du einen Script-Editor nutzt, der es zulässt das Dictionary als Text herauszukopieren (z.B. Smile) und mir den Text zumailst, kann ich mal reinschauen woran es liegen könnte (vielleicht ja auch sog. read only Properties).
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 24.10.2001 - 11:55 Titel: Anfängerfragen |
|
|
Hi
Also "ID" ist eine AppleScript-eigene Referenznummer auf ein Objekt, mit dem es eindeutig identifizierbar ist, auch wenn sich seine Position geändert hat. Vielleicht kommt der Fehler daher.
In der zweiten Zeile fehlt noch der Doppelpunkt nach "value".
Um einen Ausweg zu finden, müsstest Du mehr von Deinem Script posten. In was für einem "tell"-Block befindet sich die Zeile? usw.
Gruß, Jens |
|
Nach oben |
|
 |
StefanR •->


Anmeldedatum: 24.10.2001 Beiträge: 12 Wohnort: Schweiz
|
Verfasst am: 24.10.2001 - 13:37 Titel: Anfängerfragen |
|
|
Vorab: Danke für die Unterstützung!
Diese Skript:
Listing 1
[font=monaco]tell application "Cumulus S5.0"
tell catalog of front collection of front window
get every value list entry of field definition "Körperteil" of record layout
end tell
end tell
[/font]
Liefert folgendes Resultat:
Listing 2
[font=monaco]
{
{id:1, language id:2, cellValue:"Wert1"},
{id:3, language id:2, cellValue:"Wert2"},
{id:5, language id:2, cellValue:"Wert3"}
}
[/font]
Es ist soweit ich das sehe eine Liste von Records (im Perl Jargon AoH - Array of Hashes).
Mein Problem ist nun folgdendes - ich sollte gescripted zu diesem Datenbankfeld (Stellt euch das Feld als eine Art PopUp Menü vor - ihr könnt nur Werte nehmen, die von der Datenbank als zulässig registriert sind) einen Wert hinzufügen (registrieren).
Bei einem Beispielscript von Canto (Hersteller von Cumulus) funktioniert das so:
Listing 3
[font=monaco]
make new value list entry at end with properties {ID:123, value:sNewFieldValue}
display dialog "Hinzugefügt: " & (get value of last value list entry) & " ID:" & (get ID of last value list entry)
[/font]
Unter dem Label "ID" steht hier jedoch eine Konstante Zahl. Wenn nun bereits ein Eintrag mit ID 123 vorhanden ist, würde dieser überschrieben werden.
Logische Konsequenz: ich versuche zuerst eine nicht verwendete ID zu erstellen. Vorgehen: höchste Zahl bei ID's heraussuchen, um eins inkrementieren und das dann als ID für den neuen Eintrag verwenden.
Dazu habe ich eine Funktion geschrieben (bzw. versucht, da sie ja nicht funktioniert):
Listing 4
[font=monaco]
on getMaxIndex(theList)
set maxInd to 0
repeat with singleValue in theList
if {ID of singleValue > maxInd} then
set maxInd to ID of singleValue
end if
end repeat
return maxInd
end getMaxIndex
[/font]
(theList ist eine Liste von Records entsprechend Listing 2)
Nur mokiert sich AppleScript hier wieder über das KeyWord "ID", welches ja aber ein Label ist. _________________ Gruss,
Stefan Rusterholz |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 24.10.2001 - 14:03 Titel: Anfängerfragen |
|
|
Ja, ein dem Programm Cumulus bekanntes Label! Auf ein ähnlich gelagertes Problem stösst Du, wenn Du innerhalb des tell-Handlers (Cumulus) einen Handler des Scripts aufrufen willst: Das Sript verlangt nach 'Ö of me' bzw. 'my Ö'. Für das Script als ganzes gesehen ist das keyword "ID" etwas anderes!
Versuche diesen loop im Cumulus laufen zu lassen, also in einem tell-Handler eingebettet. Bei der von Dir gewählten Loop-Variante ist es in manchen Situationen erforderlich sich auf den 'contents of' i, bei Dir "singleValue" genannt, zu beziehen (contents of singleValue).
on getMaxIndex(theList)
tell app "App-Name"
Ýset maxInd to 0
Ýrepeat with singleValue in theList
Ý if {ID of singleValue > maxInd} then
Ý set maxInd to ID of singleValue
Ý end if
Ýend repeat
end tell
Ýreturn maxInd
end getMaxIndex
--nicht getestet!
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
StefanR •->


Anmeldedatum: 24.10.2001 Beiträge: 12 Wohnort: Schweiz
|
Verfasst am: 24.10.2001 - 14:34 Titel: Anfängerfragen |
|
|
Juhui. Danke!
Das wars (musste zwar leicht modifiziert werden, aber grundsätzlich wars das).
Ich dachte, record ist record... warum muss ich da die App im Hintergrund haben, die dem AppleScript sagt, wie es damit umgehen muss???
Naja, es läuft jetzt endlich und ich bin froh.
Vielen Dank für eure Hilfe! (nächste Frage kommt auch schon  _________________ Gruss,
Stefan Rusterholz |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|