![]() |
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:
Aber wenn ich etwas eingebe, kommt nichts raus. Die Aufgabe war, dass alles ohne replace geschrieben werden soll.
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. Danke schonmal im voraus! |
AW: Warum funktioniert mein Übersetzer nicht?
Und was passiert, wenn Du buchstabe vernünftig initialisierst bzw in einer Schleife benutzt?
|
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:
4. Du gibst Deine Stringliste frei und willst dann erst eine Datei hineinladen. |
AW: Warum funktioniert mein Übersetzer nicht?
hallo,
müsstest du nicht eine Zählschleife um dein Ersetzen programmieren, du prüfst mit
Delphi-Quellcode:
nur den ersten Buchstaben auf ein 'Ü'. Muss da nicht ein
if Satz[buchstabe]='Ü' then begin
Delphi-Quellcode:
rein.
For i:=0 to length(Satz) do begin
if Satz[i]='Ü' then begin ... end; mfg |
AW: Warum funktioniert mein Übersetzer nicht?
Zitat:
Zitat:
Danke!:thumb: |
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; |
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.
|
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? |
AW: Warum funktioniert mein Übersetzer nicht?
Was hast du wie geändert?
|
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:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz