Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Anfängerfragen - Records mit Keywords und Spaces

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
StefanR
•->
•->


Anmeldedatum: 24.10.2001
Beiträge: 12
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2001 - 10:10    Titel: Anfängerfragen - Records mit Keywords und Spaces Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Folker
•---->
•---->


Anmeldedatum: 11.12.2000
Beiträge: 649
Wohnort: Holsteinische Schweiz

BeitragVerfasst am: 24.10.2001 - 11:34    Titel: Anfängerfragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jens Hoffmann
•--->
•--->


Anmeldedatum: 07.05.2001
Beiträge: 175

BeitragVerfasst am: 24.10.2001 - 11:55    Titel: Anfängerfragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
StefanR
•->
•->


Anmeldedatum: 24.10.2001
Beiträge: 12
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2001 - 13:37    Titel: Anfängerfragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Folker
•---->
•---->


Anmeldedatum: 11.12.2000
Beiträge: 649
Wohnort: Holsteinische Schweiz

BeitragVerfasst am: 24.10.2001 - 14:03    Titel: Anfängerfragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
StefanR
•->
•->


Anmeldedatum: 24.10.2001
Beiträge: 12
Wohnort: Schweiz

BeitragVerfasst am: 24.10.2001 - 14:34    Titel: Anfängerfragen Antworten mit Zitat

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 Smile
_________________
Gruss,
Stefan Rusterholz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
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


AppleScript für absolute Starter