PDA

Vollständige Version anzeigen : Wie kann ich in script-fu ein Arry auslesen?


wcgimp
25.01.2009, 19:53
Hallo,

die Funktion (gimp-image-get-layers 1) liefert das Ergebnis (3 #( 135 136 137 )) Wie kann ich nun die Nummern aus dem Array auslesen?

Danke
wcgimp

wcgimp
26.01.2009, 20:18
Nun gut, das habe ich bisher gefunden:
(cons-array arraysize arraytype ) ; definiert ein Array
(aset array index value) ; setzt den Wert in einem Feld des Arrays
(aref array index) ; liefert den Wert eines Feldes des Arrays. Index beginnend mit 0Für meinen Fall komme ich also mit (aref ... ...) weiter.
Eine Anwendung habe ich z.B. gefunden in /usr/share/gimp/2.0/scripts/blend-anim.scm

Kann mir denn niemand sagen, wo ich eine vollständige Referenz dieses Teils des in Scrip-fu verwendeten Scheme - Dialektes bekomme?
Es muß doch möglich sein, in einem Dokument nachzulesen, wie all das definiert ist, wie z.B (if ...) (case ...) (cons-array ...) mit z.B. der Definition der areraytypes usw. - eben eine Referenz für den Scheme-Teil in Script-fu.

Ich würde mich jedenfalls sehr freuen.

Gruß
wcgimp

naranja Ó
27.01.2009, 09:13
Die leute die sich hier wirklich mit Script-Fu auskennen lassen sich glaube ich an einer hand abzählen, also ein wenig geduld musst du schon haben, nicht jeder schaut hier täglich rein. wenn du in einer einschlägigen mailinglist schreiben würdest, hättest du vielleicht mehr erfolg.

wcgimp
27.01.2009, 13:18
wenn du in einer einschlägigen mailinglist schreiben würdest, hättest du vielleicht mehr erfolg.(Aber hier kann ich so schön in meiner Muttersprache ....)

Das habe ich noch gefunden:
http://www.gimp.org/docs/scheme_plugin/index.html
Allerdings sehr, sehr trocken.

Außerdem gibt es darin noch Widersprüche zu diesem Dokument
http://www.gimp.org/docs/script-fu-update.html#deprecated

Eine Seite, die versucht Informationen zusammenzutragen:
http://www.ve3syb.ca/wiki/doku.php?id=software:sf:start#books_and_documents

Dort den Verweis auf das
R5RS (http://www.schemers.org/Documents/Standards/R5RS/r5rs.pdf): The Scheme standard which TinyScheme attempts to follow http://www.ve3syb.ca/wiki/lib/images/smileys/icon_exclaim.gif

ein PDF-Dokument mit dem
"Revised5 Report on the Algorithmic Language Scheme"
Wenn man sich nicht scheut (es ist anfangs etwas ungewohnt es zu lesen), wird dort komplett die Sprache beschrieben.
Ich weiß allerdings nicht, ob in script-fu alles genau so implementiert ist.

Ergänzung: Hier gibt es das auch als HTML
http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-2.html#%_toc_start

Nun muß ich wieder zu meinem Script zurück :)

Gruß
wcgimp

schumaml
27.01.2009, 13:55
"Revised5 Report on the Algorithmic Language Scheme"
Wenn man sich nicht scheut (es ist anfangs etwas ungewohnt es zu lesen), wird dort komplett die Sprache beschrieben.
Ich weiß allerdings nicht, ob in script-fu alles genau so implementiert ist.

Fast alles. TinyScheme implementiert R5RS nicht komplett (z.B. kein define-syntax (http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-8.html#%_idx_198)), aber ansonsten ist das die Referenz.

PKHG
18.02.2009, 11:35
Hallo,

die Funktion (gimp-image-get-layers 1) liefert das Ergebnis Wie kann ich nun die Nummern aus dem Array auslesen?

Danke
wcgimp

Probier dies in de Script Fu Konsole:

(define resultat '(3 #( 135 136 137 )));dein Beispiel
(define anzahl (car resultat)) ; erste Zahl = Anzahl elemente im Vector
(define zaehler 0) ; fuer den loop
(define vector (cadr resultat)) ; hol den vector
(while (< zaehler anzahl) (newline)(prin1 (vector-ref vector zaehler))(set! zaehler (+ 1 zaehler))(newline)); Mache etwas mit allen Elementen , hier prin1!

Ergibt bei mir dies:

135

136

137
()

wcgimp
18.02.2009, 12:44
Ich muß mich entschuldigen, daß ich die Lösung nicht beschrieben habe:

entscheidend war die Funktion: (vector-ref vector zaehler)

Die hatte ich in meinem letzten Beitrag in der Dokumentation (http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.3.6)gefunden, damit war es für mich erledigt.
Nochmals vielen Dank für die Hilfe.
Gruß, wcgimp

PKHG
18.02.2009, 12:54
Ich muß mich entschuldigen, daß ich die Lösung nicht beschrieben habe:

entscheidend war die Funktion: (vector-ref vector zaehler)

Die hatte ich in meinem letzten Beitrag in der Dokumentation (http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.3.6)gefunden, damit war es für mich erledigt.
Nochmals vielen Dank für die Hilfe.
Gruß, wcgimp

Hi,
Wie gesagt ... ich hab vielleicht auch zu oberflächlich gelesen.

Aber ich antworte noch auf deine Links nach Schemedinge http://www.cs.hut.fi/Studies/T-93.210/schemetutorial/schemetutorial.html

Dies Tut ist englisch aber sehr gut lesbar, und trifft zu 90% (na ja so in etwa) auf Tiny Scheme zu.
Mit vielen vielen Beispielen, die beinahe alle mit kopieren und einkleben in die Kommandozeile von Script Fu funktionieren....
Man kann einen ganzen Absatz nehmen (und nicht Zeile für Zeile, das geht auch nicht)