[ Impressum ]

LiveCode BasicLib

www.Rozek.de > LiveCode > BasicLib
Die "BasicLib" ist ein kleiner LiveCode [1] "Library Stack" mit einer Reihe von einfachen, aber dennoch häufig verwendeten, Funktionen.

Download und Installation

Die "BasicLib" liegt als unverschlüsselter LiveCode-Stack bereit und kann von hier aus heruntergeladen werden:
Nach dem Herunterladen legen Sie die "BasicLib" einfach in einem Verzeichnis Ihrer Wahl ab - eine explizite Installation ist nicht erforderlich.

Verwendung in Desktop-Anwendungen

Die "BasicLib" wurde als LiveCode "Library Stack" implementiert und muss deshalb vor ihrer Verwendung zunächst einmalig mithilfe der Anweisung

start using stack "BasicLib"

eingebunden werden. Zweckmäßigerweise wird diese Anweisung im Rahmen einer preOpenStack-Prozedur von einem MainStack ausgeführt.

Soll aus dem MainStack später eine eigenständige Anwendung werden, muss die "BasicLib" außerdem Bestandteil der Liste der "Stack Files" zu diesem MainStack sein (am einfachsten geschieht dies mithilfe der "Standalone Application Settings" aus der LiveCode-Entwicklungsumgebung heraus).

Verwendung in mobilen Anwendungen

Die "BasicLib" kann auch in mobilen Anwendungen eingesetzt werden. Allerdings muss sie dann - anders als für eigenständige Desktop-Anwendungen - in die Liste der "non-stack files" aufgenommen und mithilfe der Anweisung

start using stack (specialFolderPath("engine") & "/BasicLib.livecode")

in den MainStack eingebunden werden. Die Liste der "non-stack files" findet sich ebenfalls auf der Seite "Copy Files" in den "Standalone Application Settings" der LiveCode-Entwicklungsumgebung.

Funktionsübersicht

Die "BasicLib" enthält nur Funktionen, keine Kommandos.

Zeichenketten-Funktionen

Eine Reihe von Funktionen befassen sich mit dem Inhalt von Zeichenketten. Dies sind (in alphabetischer Reihenfolge):

enquoted (<Candidate>)


enquoted liefert eine Kopie der Zeichenkette Candidate, in welcher alle einfachen Hochkommata (') durch doppelte (") ersetzt wurden.

Da LiveCode keine Escape-Sequenzen (wie z.B. \") kennt, kann das Einfügen von doppelten Hochkommata in ein Zeichenketten-Literal sehr mühsam sein:

put "say" && quote & "Hello!" & quote && "to me" into myMessage

Auch die merge-Funktion ist nicht wirklich hilfreich:

put "say [quote]Hello![quote] to me" into myMessage

Solange in der Zeichenkette aber keine einfachen Hochkommata benötigt werden, erweist sich enquoted als recht praktisch:

put enquoted("say 'Hello!' to me") into myMessage


HTMLSafe (<Candidate>)


HTMLSafe liefert eine Kopie der Zeichenkette Candidate in einem Format, welches gefahrlos von einem Web-Browser angezeigt werden kann. Dazu werden die Zeichen <, > und & durch ihre HTML-Äquivalente ersetzt.

printable (<Candidate>)


printable liefert eine Kopie der Zeichenkette Candidate in einem Format, welches gefahrlos angezeigt werden kann. Dazu werden sämtliche Steuerzeichen durch die Escape-Sequenzen wie z.B. \n, \r oder \x04 ersetzt.

quoted (<Candidate>)


quoted liefert eine in doppelte Anführungszeichen (") eingeschlossene Kopie der Zeichenkette Candidate.

quotedPrintable (<Candidate>)


quotedPrintable liefert eine in doppelte Anführungszeichen (") eingeschlossene Kopie der Zeichenkette Candidate in einem gefahrlos anzeigbarem Format.

trimmed (<Candidate>)


trimmed liefert eine Kopie der Zeichenkette Candidate ohne führende oder nachfolgende Leerzeichen.

Unicode-Unterstützung

Der Einsatz von Unicode in LiveCode-Anwendungen ist immer noch recht mühsam. Die folgenden Funktionen sollen dies etwas vereinfachen (in alphabetischer Reihenfolge):

ISOtoUnicode (<ISOtext>)


ISOtoUnicode liefert eine Kopie der im Zeichensatz ISO 8859-1 vorliegenden Zeichenkette ISOtext im Unicode-Format zurück.

Auf Nicht-MacOS-Systemen entspricht dieses Verhalten der Funktion uniEncode - unter Mac OS X funktioniert uniEncode jedoch nicht korrekt, weshalb auf ISOtoUnicode ausgewichen werden sollte.

putUnicodeAfterMsg (<UnicodeText>)


putUnicodeAfterMsg hängt die im Unicode vorliegende Zeichenkette UnicodeText an den Inhalt der Message Box an.

putUnicodeIntoMsg (<UnicodeText>)


putUnicodeIntoMsg löscht den Inhalt der Message Box und fügt stattdessen die im Unicode vorliegende Zeichenkette UnicodeText ein.

UnicodeToISO (<UnicodeText>)


UnicodeToISO liefert eine Kopie der im Unicode vorliegenden Zeichenkette UnicodeText im Format ISO 8859-1 zurück. Dabei wird einfach das höherwertige Byte jedes Zeichens ignoriert, weswegen Zeichen außerhalb des Wertebereiches 0...255 zu vermutlich unerwünschten Ergebnisse führen.

Auf Nicht-MacOS-Systemen entspricht dieses Verhalten der Funktion uniDecode - unter Mac OS X funktioniert uniDecode jedoch nicht korrekt, weshalb auf UnicodeToISO ausgewichen werden sollte.

Erstellen von Referenzen

Bisweilen muss man in einem Skript auf die umgebende Gruppe, die Karte oder den Stack eines Control zugreifen. Die folgenden Funktionen ermöglichen die Erstellung derartiger Referenzen in allgemeingültiger Form (in alphabetischer Reihenfolge):

CardOf (<ControlRef>)


CardOf liefert eine Referenz auf die Karte, die das durch ControlRef referenzierte Control enthält.

currentCardOf (<ControlRef>)


currentCardOf liefert eine Referenz auf die gerade aktive Karte des Stacks, der das durch ControlRef referenzierte Control enthält.

MainStackOf (<ControlRef>)


MainStackOf liefert eine Referenz auf den MainStack, zu dem der Stack gehört, der das durch ControlRef referenzierte Control enthält.

myCard ()


myCard liefert eine Referenz auf die Karte, die das Control mit dem Skript enthält, von dem aus myCard aufgerufen wurde.

myCurrentCard ()


myCurrentCard liefert eine Referenz auf die gerade aktive Karte des Stack, von dessen Skript aus myCurrentCard aufgerufen wurde.

myMainStack ()


myMainStack liefert eine Referenz auf den MainStack, zu dem der Stack gehört, der das Control mit dem Skript enthält, von dem aus myMainStack aufgerufen wurde.

myOwner ()


myOwner liefert eine Referenz auf die nächstäußere Gruppe, Karte oder den nächstäußeren Stack, der das Control mit dem Skript enthält, von dem aus myOwner aufgerufen wurde.

myStack ()


myStack liefert eine Referenz auf den Stack, der das Control mit dem Skript enthält, von dem aus myStack aufgerufen wurde.

OwnerOf (<ControlRef>)


OwnerOf liefert eine Referenz auf die nächstäußere Gruppe, Karte oder den nächstäußeren Stack, der das durch ControlRef referenzierte Control enthält.

StackOf (<ControlRef>)


StackOf liefert eine Referenz auf den Stack, der das durch ControlRef referenzierte Control enthält.

Sonstige

Die folgende Funktion passt in keine der oben genannten Kategorien:

iif (<Condition>, <TrueValue>, <FalseValue>)


Ist das Condition-Argument true, gibt iif den Wert des TrueValue-Argumentes zurück - anderenfalls den des FalseValue-Argumentes.

Auf diese Weise kann man sich u.U. den Schreibaufwand einer if-then-else-Anweisung sparen - unter der Voraussetzung, dass die TrueValue- und FalseValue-Argumente beim Aufruf von iif ausgewertet werden dürfen (und nicht allzu viel Rechenaufwand benötigen).

Ein typisches (obgleich konstruiertes) Anwendungsbeispiel wäre die Verwendung von

return iif(myValue is not empty, myValue, myDefault)

anstelle von

if (myValue is empty) then
return myValue
else
return myDefault
end if

System-Anforderungen

Die "BasicLib" benötigt LiveCode 6.x oder neuer und funktioniert unabhängig vom jeweiligen Betriebssystem sowohl auf stationären wie auch auf mobilen Plattformen.

Abhängigkeiten

Die "BasicLib" hängt von keinem weiteren Stack ab.

Automatisierte Tests

Für die "BasicLib" steht auch ein separater Stack mit (einem unvollständigen Satz von) automatisierten Tests dieser Bibliothek bereit:
Beim Öffnen dieses Stack wird zugleich auch das Kommando performTests ausgeführt, welches für die eigentlichen Tests zuständig ist. Am Ende sollte die "Message Box" der LiveCode-Entwicklungsumgebung erscheinen und die Meldung

all tests passed

angezeigt werden - anderenfalls sollte dort stattdessen eine Fehlermeldung mit Hinweisen zum fehlgeschlagenen Test zu finden sein.

Bekannte Fehler

Derzeit sind keine Fehler der "BasicLib" bekannt.

Lizenz-Hinweis

Die "BasicLib" und die zugehörigen Tests unterliegen der "Creative Commons Namensnennung 4.0 Unported Lizenz", was im Wesentlichen bedeutet, dass Sie beides (selbst in kommerziellem Rahmen) sowohl verwenden als auch verändern dürfen, sofern Sie Ihre Änderungen als solche kenntlich machen und an geeigneter Stelle auf mich als den ursprünglichen Autor hinweisen.

                       
Viel Spaß mit LiveCode und der "BasicLib"! Creative Commons Lizenzvertrag

Literaturhinweise

[1]
(RunRev Ltd.)
LiveCode | Create apps for multiple platforms. Quickly. Easily. Free
LiveCode ist eine (dem legendären HyperCard von Apple) nachempfundene Entwicklungsumgebung sowohl für stationäre (Windows, Linux, MacOS X) als auch für mobile (IOS, Android) Anwendungen. Ein visueller Editor ermöglicht den schnellen Entwurf von Bedienoberflächen, die der englischen Sprache nachempfundene Programmiersprache erlaubt auch Nicht-Programmierprofis die Entwicklung professioneller Anwendungen und das Konzept der "Modifikation am laufenden Programm" vereinfacht Test und Fehlerbehebung.