Einzelnen Beitrag anzeigen

der olli

Registriert seit: 18. Mai 2004
14 Beiträge
 
#1

Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:09
Hallo,

wir arbeiten in Info im Moment mit Delphi und unsere Aufgabe ist es, ein vom Benutzer eingegebenes Wort zu prüfen und zwar mit Hilfe eines zweiten Eingabefeldes, wo der Benutzer einen Buchstaben eingeben soll, der in dem Wort vorkommt. Nach einem Druck auf einen Button soll der eingegebene Buchstabe durch ein Leerzeichen ersetzt und in einem dritten Eingabefeld das Wort OHNE den Buchstaben - also mit der Leerzeile an der/den ansprechenden Stelle/Stellen - ausgegeben werden.

Wir haben im Unterricht dieses Programm schon auf eine etwas andere Art verwendet, sodass nur ein Stück im Quellcode verändert werden muss (die Funktion dieses Programmes ersetzt den Buchstaben nicht durch ein Leerzeichen, sondern zählt, wie oft der eingegebene Buchstabe in dem eingegebenen Wort vorkommt und gibt die Anzahl des Vorkommens in einem dritten Eingabefeld aus - es wird also einfach der Buchstabe ersetzt). Hier ist der Quellcode:

Delphi-Quellcode:
procedure TFrmString.Einlesen(Var Text: String; Var Zeichen: Char);
 begin
  Text := EdText.Text;
  Zeichen := EdZeichen.Text[1];
 end;

procedure TFrmString.Ausgeben(Ergebnis: String);
begin
 EdErgebnis.Text := Ergebnis;
end;

{*************** selbstdefinierte Methoden ohne Klassenzugehörigkeit *********}

function gezaehlt(Text: String; Zeichen: Char): Shortint; // diese Funktion muss verändert werden, weiß aber nicht wie :(
Var Index: Shortint;
    Anzahl: Shortint;
begin
 Anzahl := 0; // Initialisierung der Zeichenanzahl
 For Index := 1 TO Length(Text) Do
  If Text[Index] = Zeichen Then
   Anzahl := Anzahl + 1;
 gezaehlt := Anzahl; // Zuweisung an die Funktion erforderlich
end;


procedure TFrmString.BtZaehlenClick(Sender: TObject);
Var Text: String;
     Zeichen: Char;
     Anzahl: Shortint;
begin
 Einlesen(Text, Zeichen);
 Anzahl := gezaehlt(Text, Zeichen);
 Ausgeben('Anzahl von '+ Zeichen + ' : ' + IntToStr(Anzahl)); // hier sollte dann das Wort OHNE den Buchstaben stehen
end;

procedure TFrmString.BtBeendenClick(Sender: TObject);
begin
 FrmString.Close
end;

procedure TFrmString.BtLoeschenClick(Sender: TObject);
begin
 EdText.Text := '';
 EdZeichen.Text := '';
 EdErgebnis.Text := '';
end;
Ich bräuchte das am besten heute Abend noch, sitze da schon ca. zwei Stunden dran, aber bin zu blöd (bin kein Info-Ass). Ich glaube, das es nicht sehr viel Arbeit ist und hoffe, hier ist jemand bereit, mir zu helfen. Danke schonmal im Voraus!
  Mit Zitat antworten Zitat