Ich möchte deepL in mein Programm einbinden und habe dafür bei GitHub eine
Unit gefunden, die wunderbar funktioniert (OlfSoftware.DeepL.ClientLib.pas). Leider versteh ich den Aufruf überhaupt nicht und kann das daher nicht nach meinen Wünschen anpassen:
Code:
procedure TForm2.Button1Click(Sender: TObject);
begin
DeepLTranslateTextASync(tfile.ReadAllText(FAPIKeyFileName), 'EN', 'DE',
Edit1.Text,
procedure(OriginalText, TranslatedText, SourceLang, TargetLang: string)
begin
Edit2.text := TranslatedText;
end);
end;
wobei in Edit1 der zu übersetzende Text steht und das Ergebnis dann in Edit2 geschrieben wird.
Was ich noch nie gesehen habe ist, dass in der Prozedur eine andere Prozedur steht, die noch nicht einmal einen Namen hat und ja eigentlich auch nichts zurückliefert. Es funktioniert trotzdem. Am Liebsten würde ich es verstehen und das alles so ändern, dass die Prozedur irgendwie aufgelöst oder "herausgeholt" wird.
Wenn das nicht geht würde ich es zumindest so ändern wollen, dass das Ergebnis ("TranslatedText") nicht zwingend in eine Komponente (Edit2) geschrieben wird, sondern in eine Variable. Komischerweise funktioniert das nicht. Wenn ich statt Edit2 eine lokale oder globale Variable nehme, kommt da nichts an.
Kann mir da bitte jemand einen Tipp geben?