Lange hat es gedauert, aber nun gibt es sie! Das deutsche Gegenstück
zur TRANSLATOR.LIBRARY - die UEBERSETZER.LIBRARY!!!!!!!!!!!!!!!!!!!!!!
Die uebersetzer.library basiert auf Speechd, P. Kittel 11.10.89 und
dem AmigaBASIC-Programm SagDatei5, P. Kittel 15.8.90.
Da diese Programme allerdings mehr zur Ausgabe von Textdateien gedacht
waren, mußten für die ubersetzer.library die Routinen entsprechend
abgeändert werden. Ergebnis ist eine Library, die der
TRANSLATOR.LIBRARY ähnelt.
Installieren:
Irgendwie habe ich keine große Lust, für eine zu kopierende Datei ein
Installer-Script zu schreiben... :-)
Also, die Datei "uebersetzer.library" muß ins LIBS: Verzeichnis
kopiert werden. Die C-Include-Datei soll jeder dahier kopieren, wo es
es für richtig hält, am besten in sein C-Includes Verzeichnis.
Benötigt:
Die Library sollte schon unter Kick 1.3 laufen, das Beispiel-Programm
läuft erst ab OS2.0. Außerdem wird das "narrator.device" benötigt, das
bis einschließlich OS2.0 zum System gehörte. Wer OS2.1 oder höher hat,
sollte sich das "narrator.device" von seinen alten OS1.3 oder OS2.0
System-Disketten kopieren.
Zur Library:
Alle nötigen C-Include-Dateien liegen (hofentlich) bei. Im Prinzip
können aber auch die Include-Dateien der TRANSLATOR.LIBRARY verwendet
werden.
Einzige Funktion der uebersetzer.library ist die Funktion
Translate().
Die Parameter entsprechen der der TRANSLATOR.LIBRARY:
LONG Translate(Text, Länge, Ziel, Zielgröße)
a0 d0 a1 d1
Aber nun konnt der Unterschied:
Da die Original-Programme (Speechd, SagDatei5) nunmal Dateien
vorlesen, ist der Parameter Länge zur Zeit ohne Bedeutung. Der Text
wird grundsätzlich bis zu einem NULL-Byte übersetzt. Um jedoch mit
späteren Versionen kompatiebel zu bleiben, sollte man den
Länge-Parameter richtig initialisieren!
Ebenfalls kann der Rückgabe-Parameter nicht 100%ig ernst genommen
werden. Wenn alles glatt lief ist der zwar NULL, im Fehlerfall (z.B.
bei zu kleinem Ziel-Puffer) jedoch irgendein Wert von NULL
verschieden. Naja, er soll zwar mit der Position übereinstimmen, bis
zu der übersetzt werden konnte - aber die original Programme machen
das nicht gerade leicht.
Da intern ein Puffer von 300 Zeichen verwendet wird, kann 1. der
Ziel-Puffer nicht größer sein und 2. der Quell-Text auch nicht.
Um Problemen mit zu kleinem Ziel-Puffer aus dem Weg zu gehen, sollte
der Text nicht länger als 90-100 Zeichen lang sein und der Zielpuffer
möglichst 3mal so groß, wie der Quell-Text.
Noch eine letzter Sache. Sollte der Quelltext am Ende kein Satzzeichen
haben, wird immer ein Punkt gesetzt!
Das Beispielprogramm:
Das Beispiel-Programm kann nur vom CLI aus gestartet werden. Als
Parameter erwartet es den zu sagenden Text. Die Parameter des
NARRATOR.DEVICE können nicht geändert werden. Es soll ja auch nur zum
ersten Testen der uebersetzer.library dienen.
Die Library und das Beispielprogramm wurden in C geschreiben. Da ich
erst kürzlich von Pascal gewechselt habe, möge man mir den vielleicht
etwas eigenwilligen Style nachsehen.
Diese Library darf frei kopiert werden - egal wohin, ob Mailbox,
PD-Diskette oder CD-Rom oder sonstwo - nur muß der Autor bei
PD-Disketten und CD-Roms informiert werden (eine PD-Diskette als
Dankeschön wäre auch nett :).
Anschriften:
Post:
Jürgen Schmitz
Bergstr. 82
56859 Bullay/Mosel
Deutschland
FidoNet:
Juergen Schmitz, 2:2454/550.3
AmigaNet:
Juergen Schmitz, 39:176/401.2
Internet (innerh. Deutschland):
j.schmitz@rheinland.sky.oopsnet.de
Und wer wirklich gute Programme sucht, sollte mal bei der
Rheinland-Box (2:2454/550) ins File-Echo 39 gucken! Da gibt es u.a.
BARNEY, ein Filelisten Request Utility der Extraklasse.
|