AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur innerhalb einer Prozedur

Ein Thema von nezumi7 · begonnen am 26. Nov 2022 · letzter Beitrag vom 26. Nov 2022
Antwort Antwort
nezumi7

Registriert seit: 11. Apr 2011
67 Beiträge
 
#1

Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 04:56
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?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 06:15
Das nennt sich "anonyme Methode" -> https://docwiki.embarcadero.com/RADS...oden_in_Delphi

So kannst Du Deiner Hauptmethode noch eine andere Methode mitgeben, die von dieser ausgeführt wird und jeweils (je nach Situation) etwas anderes tut.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#3

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 09:38
Weise einfach in der anonymen Methode deine variable zu, anstatt Edit2.text zu setzen.
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
67 Beiträge
 
#4

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 10:38
Weise einfach in der anonymen Methode deine variable zu, anstatt Edit2.text zu setzen.
Das geht leider nicht, keine Ahnung warum. Wenn ich die Übersetzung nicht Edit2 zuweise, sondern in eine globale variable, bleibt die leer.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#5

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 10:45
Die Variable wird natürlich erst nach einiger Zeit (asynchron!) gefüllt!
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#6

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 10:56
Du kannst auch sowas probieren, falls dir das lieber ist:

Delphi-Quellcode:

procedure TForm2.DoSomethingAfterTranslation(OriginalText, TranslatedText, SourceLang, TargetLang: string);
begin
  //Mach was mit TranlatedText ....
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  DeepLTranslateTextASync(tfile.ReadAllText(FAPIKeyFileName), 'EN', 'DE', Edit1.Text, DoSomethingAfterTranslation);
end;
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
67 Beiträge
 
#7

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 14:15
[QUOTE=Olli73;1515424]Du kannst auch sowas probieren, falls dir das lieber ist:


Danke, Olli. Jetzt hab ichs mit deinen Hinweisen und ein bisschen Rumprobieren hinbekommen....

  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Prozedur innerhalb einer Prozedur

  Alt 26. Nov 2022, 22:33
Das Oberthema sind Zeiger auf Funktionen. Hab da auch ein Video für dich:
https://www.youtube.com/watch?v=7PL_H2aBUOI
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz