Hallo,
ich habe mich in den letzten Tagen ein wenig intensiver mit den verschiedenen lateinischen Konjugationen beschäftigt. Herausgekommen ist eine
Unit, die ein bestimmtes Verb in allen Zeiten, Modi, Leideformen und Personen bilden kann.
Wie ihr alle wisst

sieht ein lateinisches Wort i.d.R. so angegeben. Beispiel:
Code:
capere capo cepi captum
Infinitiv Präsens aktiv - 1.P.Sg.Präs.Ind.akt. - 1.P.Sg.Perf.Ind.aktiv - Partizip Perfekt Passiv (PPP)
Um ein Verb richtig konjugieren zu konnen, sind - je nach Zeit - alle vier Formen notwenig.
Version [Beta]
daraus entstand folgendes record:
Delphi-Quellcode:
type TWort = record
Infinitiv, Praesens, Perfekt, PPP: string;
end;
Ich hoffe die Funktion des records ist eindeutig
Enstanden sind nun also folgende 12 Funktionen:
Delphi-Quellcode:
function FuturII_Indikativ_aktiv(w:TWort;Person:integer): string;
function FuturII_Indikativ_passiv(w:TWort;Person:integer): string;
function FuturI_Indikativ_aktiv(w:TWort;Person:integer): string;
function FuturI_Indikativ_passiv(w:TWort;Person:integer): string;
function Praesens_Indikativ_aktiv(w:TWort;Person:integer): string;
function Praesens_Indikativ_passiv(w:TWort;Person:integer): string;
function Praesens_Konjunktiv_aktiv(w:TWort;Person:integer): string;
function Praesens_Konjunktiv_passiv(w:TWort;Person:integer): string;
function Imperfekt_Indikativ_aktiv(w:TWort;Person:integer): string;
function Imperfekt_Indikativ_passiv(w:TWort;Person:integer): string;
function Imperfekt_Konjunktiv_aktiv(w:TWort;Person:integer): string;
function Imperfekt_Konjunktiv_passiv(w:TWort;Person:integer): string;
function Perfekt_Indikativ_aktiv(w:TWort;Person:integer): string;
function Perfekt_Indikativ_passiv(w:TWort;Person:integer): string;
function Perfekt_Konjunktiv_aktiv(w:TWort;Person:integer): string;
function Perfekt_Konjunktiv_passiv(w:TWort;Person:integer): string;
function Plusquamperfekt_Indikativ_aktiv(w:TWort;Person:integer): string;
function Plusquamperfekt_Indikativ_passiv(w:TWort;Person:integer): string;
function Plusquamperfekt_Konjunktiv_aktiv(w:TWort;Person:integer): string;
function Plusquamperfekt_Konjunktiv_passiv(w:TWort;Person:integer): string;
Neben dem eigentlich Verb (TWort), benötigen sie auch die Person, für die das Verb gebildet werden soll. Dies erfolgt über ein Integer:
Code:
1 - 1.P.Sg
2 - 2.P.Sg
3 - 3.P.Sg
4 - 1.P.Pl
5 - 2.P.Pl
6 - 3.P.Pl
So kann man nun relativ einfach Verformen bilden:
Delphi-Quellcode:
[...]
var verb: TWort;
[...]
with verb do
begin
infinitiv := 'capere';
praesens := 'capo';
perfekt := 'cepi';
ppp := 'captum';
end;
Perfekt_Indikativ_Passiv(Verb, 4);
gibt also den Wert "capti sumus" zurück.
Neben der a-/e-/i-/gemischt kons.- und der kononsantischen-Konjugation, beherrscht die
Unit auf das unregelmäßige Verb "esse". Andere unregelmäßige Verben werden folgen.
So, das wars erstmal, ich wäre über weitere Anregungen sehr froh.
Version [1.0]
So, hier mal ein paar Änderungen, die mir spontan möglich erschienen Very Happy
function wort(InfinitivPraesensAktiv,PraesensAktiv,PerfektAktiv,PPP:string):twort;
Das sollte eigentlich selbsterklärend sein. Wie unten erwäht wurde ist es eben wie funtion point(x,y):tpoint.
Dann kommt die "Management-Funktion" Konjugiere:
function konjugiere(Person:integer;Zeit:string;Indikativ,Aktiv: boolean;Verb: TWort): string;
Parameter 1:
Code:
Person: (Eingabe als Integer von 1 bis 6)
1 - 1.P.Sg
2 - 2.P.Sg
3 - 3.P.Sg
4 - 1.P.Pl
5 - 2.P.Pl
6 - 3.P.Pl
Parameter 2:
Code:
Zeit: (Eingabe erfolgt über einen String, der wie folgt aussehen kann)
"FuturII"
"FuturI"
"Praesens"
"Imperfekt"
"Perfekt"
"Plusquamperfekt"
Parameter 3:
Code:
true = Indikativ
false = Konjunktiv
Parameter 4:
Code:
true = Aktiv
false = Passiv
Parameter 5:
Code:
Verb = TWort - eben das Verb, dass Konjugiert werden soll!
TWort, wie oben erklärt
So gibt der Aufruf
konjugiere(4,'FuturII',true,false,wort('amare','amo','amavi','amatum'))
"amati erimus" zurück.
Ich hoffe, so konnte ich den umgang ein wenig einfacher machen.
Das PPP beispielsweise kann man dieser "Masterfunktion" nicht gebildet werden. Es wird später bei den Deklinationen folgen, da ich denke, dass es da mehr benötigt wird, als bei den Konjunktionen.
Version [1.0b]
Fehler behoben (gemeldet am 26.02 siehe unten)
Beispielanwendung
Im Anhang ist noch eine Beispielanwenung, sodass man die Funktionen der
Unit einfach testen kann. (und natürlich ein Screenshot dazu).
Vielen Dank