[Dies ist eine vorläufige Dokumentation und ist veränderbar]

Ein erster .NET Aufruf

Liogo ursprünglich erstellt worden, um leicht mit dem existierenden .NET-Code integriert zu sein. Daher mit Liogo, kann Ihre Logo Anwendung nun Vorteil nehmen an den Investitionen, welche Microsoft auf einer seiner letzten Plattform getätigt hat: .NET (oder MONO auf einer Linux-Plattform).

Um .NET von Liogo aufzurufen, müssen Sie eine DLL erzeugen mit jedem Eingangspunkt, den Sie aufrufen möchten. Hier ist ein C# Beispiel, benannt "hallodotnet.cs" (C#-Datei) und erstellt in "hallodotnet.dll" mit CSC.EXE vom .NET SDK Framework:


using System;
using LIOGO.Core;

namespace LIOGO.Framework
{
	[LogoLibrary]
	public class MyLib
	{
		[LogoProcedure]
		static public ILogoValue hallo()
		{
			Console.WriteLine("Hallo Welt!");
			return null;
		}
	}
}

Um aufrufbar von Liogo zu sein, unsere Methode "hallo" :

Die Datei "hallow.log" (Endung "log" für deutsche Logodatei) ruft dazu unsere neue Methode mit folgender Logozeile auf:

hallo

MessageBox in Liogo

Auf einem gleichem Weg wie eine Logo-Prozedur, kann eine .NET-Methode irgendein Logo-Angabe empfangen und ausgeben. Hier ist ein Probebeispiel, das Wörter erhält, um die bekannte Messagebox-Windowsfunktion aufzurufen (in Datei confirmdotnet.cs zu übertragen):



using System;
using System.Windows.Forms;
using LIOGO.Core;

namespace LIOGO.Framework
{
	[LogoLibrary]
	public class MyLib
	{
		[LogoProcedure]
		static public ILogoValue confirm_q(ILogoValue message)
		{
			DialogResult result = MessageBox.Show(
					null, 
					message.Print(), 
					"Liogo Confirmation", 
					MessageBoxButtons.YesNo, 
					MessageBoxIcon.Question);

			if(result == DialogResult.Yes)
				return LogoWord.True;
			return LogoWord.False;
		}
	}
}

Wie Sie sehen können, wird ILogoValue für jeden Parameter verwendet.

Die neue Operation definiert hier ein neues Prädikat, genannt "confirm?". Weil spezielle Zeichen in .NET nicht für Methoden-Namen erlaubt sind, wird der Logo-Name verschlüsselt:

Die "ILogoValue.Print()" Methode gibt den Wert als einen druckbaren String zurück (wie beim druckezeile-Befehl).

LogoWord, LogoNumber, LogoList und LogoArray sind die vier .NET Klassen, erstreckend auf ILogoValue Interface. Einzig LogoWord wird in diesem Probebeispiel mit konstantem Logo-Wert wahr und  falsch verwendet.

Der folgende Logo-Code ruft unser neues "confirm?"-Prädikat auf (die folgende Zeile muss in der Datei confirm.log stehen):


(druckezeile [Behauptung ist] confirm? [Liogo ist ganz cool, nicht wahr?])

Nachdem man den Ja-Button angeklickt hat, erscheint "Behauptung ist wahr" (vgl. unten).

.NET Reguläre Ausdrücke

Unser nächstes Probebeispiel zeigt den hinzugefügten Wert, um .NET Framework zu nutzen. Genauer gesagt, verwenden wir hier System.Text.RegularExpressions. Diese APs dürfen ein Muster (Pattern) gültig machen, splitten und ersetzen in einen String. Warum nicht diese Eigenschaften für ein Logo-Wort verwenden? Konkret hier wird die Sache angegangen (das Folgende steht in der Datei matchdotnet.cs, die zunächst mit CSC.EXE zu einer dll-Datei umgewandelt werden muss):


using System;
using System.Text.RegularExpressions;
using LIOGO.Core;

namespace LIOGO.Framework
{
	[LogoLibrary]
	public class MyLib
	{
		[LogoProcedure]
		static public ILogoValue match_q(ILogoValue pattern, ILogoValue valueToTest)
		{
			LogoContext.BeginProcedure("match?", pattern, valueToTest);
			
			Regex r = new Regex(pattern.Print());
			Match m = r.Match(valueToTest.Print());
			ILogoValue result = LogoWord.False;
			if (m.Success)
				result = LogoWord.True;

			return LogoContext.EndProcedure("match?", result);
		}
	}
}

Das Folgende sind wenige Logo-Zeilen, um "match?" mit einem Muster für einen Email-Validator (Gültigkeitsüberprüfer) zu testen (in Datei alleinstimmig.log):

setze "emailmuster "|[\w\.\-]+@[\w\.\-]+\.\w{2,5}|

druckezeile match? :emailmuster "llaske
druckezeile match? :emailmuster "llaské@sourceforge.net 


Natürlich, .NET-Prozeduren sind gänzlich verwendbar in Liogo:

Hier eine komplexere Verwendung unserer "match?" Operation:

pr eintrag :istvalide :eingabe
    wennsonst nicht? :istvalide [rückgabe (wort :eingabe "\ ist "\ nicht "\ korrekt.)] [rückgabe "]
ende

dz [Geben Sie Ihren Vornamen mit dem ersten Buchstaben als Großbuchstabe ein:]
setze "vorname lieswort
dz [Geben Sie Ihren Nachnamen mit dem ersten Buchstaben als Großbuchstabe ein:]
setze "nachname lieswort
dz [Geben Sie Ihre Emailadresse ein:]
setze "email lieswort

dz (erfasse "eintrag (erfasse "match? [|[A-Z][a-z]+| |[A-Z][a-z]+| |[\w\.\-]+@[\w\.\-]+\.\w{2,5}|] (liste :vorname :nachname :email)) [Vorname Nachname Emailadresse])



Was ist mehr?

Auf eine gleiche Weise wie Reguläre Ausdrücke lässt Liogo sie Web-Dienste aufrufen, auf einer SQL-Databasis nachfragen, Windows Formen zur Schau stellen, ActiveX Komponenten aufrufen, ... Auf der anderen Seite kann jeder Liogo Kontext von einer .NET DLL behandelt werden. Tatsächlich ist jedes Liogo Framework in C# geschrieben, indem das gleiche Schema verwendet wird. Mit Liogo, haben Sie wahrhaftig eine Grenze, um Logo und .NET zu mischen: Ihre Vorstellung!