Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Warum funktioniert mein Übersetzer nicht? (https://www.delphipraxis.net/188026-warum-funktioniert-mein-uebersetzer-nicht.html)

Phillip0405 25. Jan 2016 13:56

Warum funktioniert mein Übersetzer nicht?
 
Ich wollte einen Übersetzer programmieren [Deutsch-Englisch](es sollen die deutschen Wörter unten nochmal vollständig angezeigt werden, nur ohne Umlaute), ich habe folgendes programmiert:


Delphi-Quellcode:
 procedure TForm4.Button1Click(Sender: TObject);


var
   englisch: TStringlist;
   W, satz : string;
   b,a,buchstabe: integer;

begin
  w := edit1.Text;
  satz:=edit1.Text;
  englisch := TStringlist.create;
    if Satz[buchstabe]='Ü' then begin
       a:=Pos('Ü',W,a);
       Delete(w,b,a);
       insert('Ue',w, a);
       edit3.Text:= w;
       englisch.free;
       englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
       edit2.Text := (englisch.Values[W]);
    end
    else if Satz[buchstabe]='Ä' then begin
       a:=Pos('Ä',W,a);
       Delete(w, b, a);
       insert('Ae',w, a);
       edit3.Text:= w;
       englisch.free;
       englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
       edit2.Text := (englisch.Values[W]);
     end
     else if Satz[buchstabe]='Ö' then begin
       a:=Pos('Ö',W,a);
       Delete(w,b, a);
       insert('Oe',w, a);
       edit3.Text:= w;
       englisch.free;
       englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
       edit2.Text := (englisch.Values[W]);
     end
     else if Satz[buchstabe]='ß' then begin
       a:= Pos('ß',W,a);
       Delete(w,b, a);
       insert('ss',w, a);
       edit3.Text:= w;
       englisch.free;
       englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
       edit2.Text := (englisch.Values[W]);
     end
     else if Satz[buchstabe]='a''e''i''o''u' then begin
       edit3.Text:= w;
       englisch.free;
       englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
       w:=edit1.Text;
     end

 
 end.
Aber wenn ich etwas eingebe, kommt nichts raus. Die Aufgabe war, dass alles ohne replace geschrieben werden soll.

Danke schonmal im voraus!

gammatester 25. Jan 2016 14:02

AW: Warum funktioniert mein Übersetzer nicht?
 
Und was passiert, wenn Du buchstabe vernünftig initialisierst bzw in einer Schleife benutzt?

DeddyH 25. Jan 2016 14:04

AW: Warum funktioniert mein Übersetzer nicht?
 
Hallo und Willkommen in der DP :dp:,

1. Falsche Sparte, Du willst ja keine erarbeitete Lösung vorstellen, sondern hast ein Problem.
2. Benutze bitte in Zukunft keine Code- sondern Delphi-Tags (das ist der "Helm" im Editor)
3. Kompiliert der Code überhaupt? Zumindest die Zeile
Zitat:

Delphi-Quellcode:
else if Satz[buchstabe]='a''e''i''o''u' then begin

sieht schon irgendwie komisch aus.
4. Du gibst Deine Stringliste frei und willst dann erst eine Datei hineinladen.

frankyboy1974 25. Jan 2016 14:07

AW: Warum funktioniert mein Übersetzer nicht?
 
hallo,

müsstest du nicht eine Zählschleife um dein Ersetzen programmieren, du prüfst mit

Delphi-Quellcode:
   if Satz[buchstabe]='Ü' then begin
nur den ersten Buchstaben auf ein 'Ü'. Muss da nicht ein

Delphi-Quellcode:
For i:=0 to length(Satz) do begin
  if Satz[i]='Ü' then begin
...
end;
rein.

mfg

Phillip0405 25. Jan 2016 14:14

AW: Warum funktioniert mein Übersetzer nicht?
 
Zitat:

Zitat von DeddyH (Beitrag 1328123)
Hallo und Willkommen in der DP :dp:,

1. Falsche Sparte, Du willst ja keine erarbeitete Lösung vorstellen, sondern hast ein Problem.
2. Benutze bitte in Zukunft keine Code- sondern Delphi-Tags (das ist der "Helm" im Editor)

Danke für den Hinweis!
Zitat:

Zitat von DeddyH (Beitrag 1328123)
4. Du gibst Deine Stringliste frei und willst dann erst eine Datei hineinladen.

Muss das andersherum?

Danke!:thumb:

DeddyH 25. Jan 2016 14:17

AW: Warum funktioniert mein Übersetzer nicht?
 
Ja, mit Free gibst Du die Liste ja wieder frei, danach kannst Du sie nicht mehr benutzen, weil weg. Üblicherweise arbeitet man mit lokalen Instanzen so:
Delphi-Quellcode:
Dings := TDingsklasse.Create;
try
  Dings.MachIrgendwas;
finally
  Dings.Free;
end;

DP-Maintenance 25. Jan 2016 14:25

Dieses Thema wurde am "25. Jan 2016, 15:25 Uhr" von "MrSpock" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Algorithmen, Datenstrukturen und Klassendesign" verschoben.

Phillip0405 25. Jan 2016 14:29

AW: Warum funktioniert mein Übersetzer nicht?
 
Ich habe es jetzt mal so geändert, aber es kommt dann immer wieder die Fehlermeldung "Zugriffsverletzung bei Adresse 005A8301 in Modul "Übersetzer"".
Kennt ihr den Fehler?

baumina 25. Jan 2016 14:53

AW: Warum funktioniert mein Übersetzer nicht?
 
Was hast du wie geändert?

Phillip0405 25. Jan 2016 15:12

AW: Warum funktioniert mein Übersetzer nicht?
 
Delphi-Quellcode:
unit UnÜbersetzer;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Actions,
  Vcl.ActnList, Vcl.ExtCtrls, Vcl.Menus;

type
  TForm4 = class(TForm)
    Edit1: TEdit;
    edit2: TEdit;
    Button1: TButton;
    edit3: TEdit;
    procedure Button1Click(Sender: TObject);


   private
    { Private-Deklarationen }
  public
   { Public-Deklarationen }
  end;

var
  Form4: TForm4;


implementation

{$R *.dfm}

 procedure TForm4.Button1Click(Sender: TObject);


var
   englisch: TStringlist;
   W, satz : string;
   i, b,a,buchstabe: integer;

 begin
   w := edit1.Text;
   satz:=edit1.Text;
   englisch := TStringlist.create;
    a:=Pos('Ü',W,a);
    a:=Pos('Ä',W,a);
    a:=Pos('Ö',W,a);
    a:=Pos('ß',W,a);
    a:=Pos('a''e''i''o''u',W,a);
   try
      if Satz[buchstabe]='Ü' then begin
         a:=Pos('Ü',W,a);
         Delete(w,b,a);
         insert('Ue',w, a);
         edit3.Text:= w;
         englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
         edit2.Text := (englisch.Values[W]);
      end
  finally
        try

            if Satz[buchstabe]='Ä' then begin
            a:=Pos('Ä',W,a);
            Delete(w, b, a);
            insert('Ae',w, a);
            edit3.Text:= w;
            englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
            edit2.Text := (englisch.Values[W]);
           englisch.Free;
         end
      finally
        try

          if Satz[buchstabe]='Ö' then begin
          a:=Pos('Ö',W,a);
          Delete(w,b, a);
          insert('Oe',w, a);
          edit3.Text:= w;
          englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
          edit2.Text := (englisch.Values[W]);
          englisch.Free;
          end
        finally
            try
                if Satz[buchstabe]='ß' then begin
                a:= Pos('ß',W,a);
                Delete(w,b, a);
                insert('ss',w, a);
                edit3.Text:= w;
                englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
                edit2.Text := (englisch.Values[W]);
                englisch.Free;
                end

            finally
                if Satz[buchstabe]='a''e''i''o''u' then begin
                edit3.Text:= w;
                englisch.loadFromFile('D:\Übersetzer\Neu1.txt');
                w:=edit1.Text;
                englisch.free;
                end


            end;
         end;
       end;
      end;
 end;
 end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.
Seite 1 von 2  1 2      

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