AGB  ·  Datenschutz  ·  Impressum  







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

Rechtschreibprüfung

Ein Thema von foerster7892 · begonnen am 29. Jan 2009 · letzter Beitrag vom 29. Jan 2009
Antwort Antwort
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#1

Rechtschreibprüfung

  Alt 29. Jan 2009, 07:45
Hi@all,
Ich hab versucht (wie man unten sieht) eine Rechtschreibprüfung zu entwerfen.
Leider funktioniert sie nicht richtig.

1.Problem
Es gibt keine Textdokumente mit nem Duden drin(für den Test hat mir zum Glück gereicht nen Txt mit nen paar Worten zu nutzen)
2.Problem
Es erkennt keine einzelnen Wörter was es aber laut quelltext machen sollte
3.Problem
Wenn ich den Button ein 2.Mal drücke hängt es sich auf
4.Problem
Es erkennt Fehler bei einzelnen Wörtern, aber wenn richtig dann 3.




Delphi-Quellcode:
const Worterbuch = 'C:\Users\user\Desktop\Wörterbuch.txt';

var
  Form4: TForm4;
  Eingabe, Zwablage, Fehler, Mistake :String;
  Beginn, Laenge, Ende, richtig, LaengeS :Integer;

implementation

{$R *.dfm}

function Falsch(Kontrolle :boolean; Ende, Anfang :integer):string;
var Wort, Woerter :string;
begin
  if Kontrolle=false then
  begin
    Wort := copy(Eingabe, Anfang, Ende);
    Woerter := Woerter +Wort + ', ';
    Falsch := Woerter;
    richtig := richtig + 1;
  end;
end;

function Kontrollf(Ende, Anfang :integer):boolean;
var Buch :textfile;
    Wort :string;
    richtig :integer;
begin
  richtig := 0;
  Zwablage := copy(Eingabe, Anfang, Ende-1);
  AssignFile(Buch, Worterbuch);
  reset(Buch);
  repeat
    readln(Buch, Wort);
    if Zwablage = Wort then
    richtig := richtig+1;
  until ((Zwablage = Wort) or (EOF(Buch)));
  if richtig = 1 then
  Kontrollf := true
  else
  Kontrollf := false;
end;

function Rechtschreibung(Eingabe:string):string;
var Anfang :integer;
    Kontrolle :boolean;
    Wort, Worter :string;
begin
  Anfang := Ende;
  repeat
    Beginn := Beginn + 1;
    Ende:= Ende + 1;
    Laenge := Laenge + 1;
    Zwablage := copy(Eingabe, Beginn, Ende);
  until ((Zwablage = ' ') or (Laenge=LaengeS));
  Kontrolle := Kontrollf(Anfang, Ende);
  Wort := Falsch(Kontrolle, Ende, Anfang);
  Worter := Worter + Wort;
  Rechtschreibung := Worter;
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  richtig := 0;
  Beginn := 0;
  Ende := 0;
  Eingabe := Edit1.Text;
  LaengeS:=length(Eingabe);
  repeat
    Fehler := Rechtschreibung(Eingabe);
  until (LaengeS=Laenge);
  if richtig >= 1 then
  Showmessage('Diese Wörter haben sie falsch geschrieben: ' + Fehler)
  else
  Showmessage('Alles richtig');
end;

end.

Könnt ihr mir helfen (aber bitte keine vollkommende Umstrukturierung des Quelltextes k? bin happy das so geschafft zu haben bisher)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 07:58
Guten Morgen,

zu Deinem ersten Problem, schaust Du dir vielleicht mal das dawg von Hagen an.

Zum 2. Problem, wenn Du Wörter trennen willst kannst Du vielleicht explode aus der CodeLib nutzen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 08:02
Zitat:
aber bitte keine vollkommende Umstrukturierung des Quelltextes
Hmmm, wäre aber besser, das zu tun.
Zunächst müssen mal die globalen Variablen verschwinden...
Ralph
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#4

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 08:13
@Klaus

Danke sieht interessant aus aber sehr kompliziert!

@taaktaak

Naja die brauch ich aber an einigen stellen (globale Var.)
wirf mal plz nen blick drauf und mach mal nen Vorschlag(Ich hab mir ja auch was bei gedacht ^^)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 08:20
Zitat von foerster7892:
@Klaus

Danke sieht interessant aus aber sehr kompliziert!
sieht nicht nur so aus, ist auch interessant.
.. und lernen kann man dabei auch etwas.

Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
begin
  // Laenge wird hier nirgendwo initialisiert
  // nach dem ersten Durchlauf hat es einen Wert, der größer ist als
  // LaengeS
  richtig := 0;
  Beginn := 0;
  Ende := 0;
  Eingabe := Edit1.Text;
  LaengeS:=length(Eingabe);
  repeat
    Fehler := Rechtschreibung(Eingabe);
  until (LaengeS=Laenge); // hier nicht auf gleichheit prüfen
  if richtig >= 1 then
  Showmessage('Diese Wörter haben sie falsch geschrieben: ' + Fehler)
  else
  Showmessage('Alles richtig');
end;
Ich würde schon das Design ändern, wie taaktak bereits geschrieben hat, und mher auf
lokale Variablen setzen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 08:21
Zitat:
Naja die brauch ich aber...
Nein, du brauchst sie nicht!
Sie sind ein Grund, dass dein Code nicht funktioniert.
Auch wenn's ein wenig länger dauert:
Versuche zunächst selbst, diese Variablen zu entfernen
Ralph
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#7

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 08:32
Klaus thx für info mit Slaenge

werd mir das mal anschauen

taaktaak
werd versuchen an globalen var zu sparen^^
mfg
foerster7892
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#8

Re: Rechtschreibprüfung

  Alt 29. Jan 2009, 09:03
Delphi-Quellcode:
const Worterbuch = 'C:\Users\user\Desktop\Wörterbuch.txt';

var
  Form4: TForm4;
  Zwablage :String;
  richtig :Integer;

implementation

{$R *.dfm}

function Falsch(Eingabe :string; Kontrolle :boolean; Ende, Anfang :integer):string;
var Wort, Woerter :string;
begin
  if Kontrolle=false then
  begin
    Wort := copy(Eingabe, Anfang, Ende);
    Woerter := Woerter + Wort + ', ';
    Falsch := Woerter;
    richtig := richtig + 1;
  end;
end;

function Kontrollf(Eingabe: string; Ende, Anfang :integer):boolean;
var Buch :textfile;
    Wort :string;
    richtig :integer;
begin
  richtig := 0;
  Zwablage := copy(Eingabe, Anfang, Ende-1);
  AssignFile(Buch, Worterbuch);
  reset(Buch);
  repeat
    readln(Buch, Wort);
    if Zwablage = Wort then
    richtig := richtig+1;
  until ((Zwablage = Wort) or (EOF(Buch)));
  if richtig = 1 then
  Kontrollf := true
  else
  Kontrollf := false;
end;

procedure Rechtschrp(var Rechtschreibung: string; Eingabe: string; LaengeS: integer; var Beginn, Ende, Laenge :integer);
var Anfang :integer;
    Kontrolle :boolean;
    Wort, Worter :string;
begin
  Anfang := Ende;
  repeat
    Beginn := Beginn + 1;
    Ende:= Ende + 1;
    Laenge := Laenge + 1;
    Zwablage := copy(Eingabe, Beginn, Ende);
  until ((Zwablage = ' ') or (Laenge=LaengeS));
  Kontrolle := Kontrollf(Eingabe, Anfang, Ende);
  Wort := Falsch(Eingabe, Kontrolle, Ende, Anfang);
  Worter := Worter + Wort;
  Rechtschreibung := Worter;
end;

procedure TForm4.Button1Click(Sender: TObject);
var Eingabe, Fehler :string;
    LaengeS, Beginn, Ende, Laenge, richtig :integer;
begin
  richtig := 0;
  Beginn := 0;
  Ende := 0;
  Eingabe := Edit1.Text;
  LaengeS:=length(Eingabe);
  repeat
    Rechtschrp(Fehler, Eingabe, LaengeS, Beginn, Ende, Laenge);
  until (LaengeS=Laenge);
  if richtig >= 1 then
  Showmessage('Diese Wörter haben sie falsch geschrieben: ' + Fehler)
  else
  Showmessage('Alles richtig');
end;

end.
so schauts aus die anderen oben bekomme ich nihct mehr weg

Das mit Laenge scheck ich nicht warum das größer wird als LaengeS
mfg
foerster7892
  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 23:16 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