Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Übersetzer - Ansatzprobleme (https://www.delphipraxis.net/91097-uebersetzer-ansatzprobleme.html)

mkinzler 30. Apr 2007 15:57

Re: Übersetzer - Ansatzprobleme
 
Sorry muß natürlich
Delphi-Quellcode:
s := memo1.lines.Text;
heißen

BTW. wprde statt
Zitat:

edit2.text
auch ne lokale Variable nehmen

Meflin 30. Apr 2007 16:18

Re: Übersetzer - Ansatzprobleme
 
Und viel schöner wird dein Code noch so ;)
Delphi-Quellcode:
var
  Chars: array[0..2] of string = ('E', 'M', 'T');
  Replacement: array[0..2] of string = ('3', '|\/|', '7');

for i := 0 to Length(Chars) - 1 do
  NewText := StringReplace(OldText, Chars[i], Replacement[i], [rfReplaceAll, rfIgnoreCase]);

Matze 30. Apr 2007 16:21

Re: Übersetzer - Ansatzprobleme
 
Anstelle die StringReplace-Funktion zu nutzen, die bei so vielen Aufrufen recht langsam ist, würde ich Lösungen wie beispielsweise diese verwenden.

inherited 30. Apr 2007 16:23

Re: Übersetzer - Ansatzprobleme
 
Zitat:

Zitat von naudoc
Nochwas:
Der Text wird 1:1 kopiert in Edit2 und nicht verändert, warum?

Weil du immer wieder Edit1 als Quelle benutzt, dessen Text aber nie geändert wird

thule 20. Feb 2008 22:38

Re: Übersetzer - Ansatzprobleme
 
ich bin hier über die suche gelandet und meine frage ist auch etwas offtopic aber:
ich möchte einen sehr einfachen sprache-zu-sprache übersetzer schreiben und mir fehlen etwas die ansätze. ich denke ein (z.B Ini [wegen "=" ])-File ist irgendwie ungünstig was performance, DB-size usw angeht. sagen wir es so: ich habe eine konsole, ich gebe ein "translate://morgen" und hätte nun gern die ausgabe der möglichen übersetzungen. wie müsste ich vorgehen? vielen dank. gruß

inherited 21. Feb 2008 19:35

Re: Übersetzer - Ansatzprobleme
 
Da bietet sich eine Datenbank (MySQL, Firebird, ist hier eigentlich egal) an. Damit kannst du auch mehrere mögliche Übersetzungen leicht implementieren. Du hast dann zum beispiel eine Tabelle GermanToEnglish mit den Feldern German und English und mit der Abfrage "SELECT * FROM GermanToEnglish WHERE German='MeinSuchString'; und bekommst alle Eingetragenen übersetzungen.
Ein Speicherschonenderer Ansatz wäre, für jedes Wort nur einen Eintrag in der Liste zu haben und alle Übersetzungen mit Komma oä. separiert. Abfrage ist fast die gleiche (evtl noch ein LIMIT 1 dahinter), du musst dann nurnoch dein Ergebnis mit explodeexplode oä. Trennen.

thule 22. Feb 2008 01:35

Re: Übersetzer - Ansatzprobleme
 
Ja, das klingt sehr gut.
So wird's getestet.
Ich bin hier schon weiterführend fündig geworden. Noch ne andere Frage dazu: Nicht das ich jetzt extrem faul bin, aber kann jemande freie datenbanken empfehlen (gibt es welche?). Sie müssen nicht extrem groß sein. ich habe mir schon die von dict.cc (knapp 14mb) besorgt, aber die darf nicht weitergegeben werden und ist viel zu groß, da meine übersetzerfunktionen im normalen "use" rahmen sein dürfen.

vielen dank und gruß :)

alzaimar 22. Feb 2008 06:24

Re: Übersetzer - Ansatzprobleme
 
Zitat:

Zitat von Matze
Anstelle die StringReplace-Funktion zu nutzen, die bei so vielen Aufrufen recht langsam ist, würde ich Lösungen wie beispielsweise diese verwenden.

Na nun, das spielt sich aber eher im Millisekundenbereich ab, meinst Du nicht? Bei massivem Einsatz würde ich Deinem Einwand Recht geben, aber in Anbetracht der Tatsache, das es sich beim Threadsteller um einen Rookie handeln dürfte, würde ich (wie auch sonst in Projekten) nach der Devise: "Keep it simple" handeln.
Zitat:

Zitat von inherited
Ein Speicherschonenderer Ansatz wäre, für jedes Wort nur einen Eintrag in der Liste zu haben ...

Bei einem DB-Ansatz sollte man diese Überlegung nicht anstellen, weil dann die Rückwärtsübersetzung nicht mehr orthogonal funktioniert. Dein erster Ansatz ist schon ok. Eventuell kann man noch über die Normalisierung in die 3NF nachdenken, da Wörter in beiden Spalten doppelt vorkommen können.
Grundsätzlich ist ein 'Übersetzer' dieser Form jedoch nur als Vokabeltrainer zu gebrauchen. Ein Übersetzer muss ja auch noch das Zeugs verstehen, was er übersetzen soll, und da wird es dann schon etwas schwerer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.
Seite 3 von 3     123   

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