AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ein Zeichen durch eine Leerstelle ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Zeichen durch eine Leerstelle ersetzen

Ein Thema von der olli · begonnen am 18. Mai 2004 · letzter Beitrag vom 18. Mai 2004
Antwort Antwort
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
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#2

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:12
Schau dir mal
StringReplace(...) an
  Mit Zitat antworten Zitat
der olli

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

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:17
Danke für deine schnelle Antwort, aber das hilft MIR leider auch nicht weiter, wie gesagt, bin ziemlich schlecht in Info. Habe über die Hilfe rausgefunden, das die Funktion so aufgerufen wird:

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; Wie kann ich diese denn so umändern, das der eingegebene Buchstabe aus dem Feld "BtZeichen" durch eine Leerstelle ersetzt wird?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:21
Zitat von der olli:
Danke für deine schnelle Antwort, aber das hilft MIR leider auch nicht weiter, wie gesagt, bin ziemlich schlecht in Info.
Dazu muss man keine großen Kenntnisse in Informatik haben. Ein bisschen Lesen reicht schon
Zitat:
Code:
[b][color=red]function[/color][/b] StringReplace(const [b]S[/b],
  [color=red]Old[/color]Pattern,
  [color=red]New[/color]Pattern: string;
  Flags: TReplaceFlags): [color=red]string[/color];
Zumal es in der Hilfe sogar noch erklärt wird:
Borland hat nämlich dazu geschrieben
Mit StringReplace ersetzen Sie in dem angegebenen String den im Parameter OldPattern festgelegten Sub-String mit dem im Parameter NewPattern übergebenen neuen Sub-String. StringReplace nimmt an, daß der String Multibyte-Zeichen enthalten kann.

Wenn im Parameter Flags nicht rfReplaceAll enthalten ist, wird nur das erste Vorkommen von OldPattern im String S ersetzt. Andernfalls werden alle Instanzen von OldPattern durch NewPattern ersetzt.

Wenn der Parameter Flags rfIgnoreCase enthält, wird die Groß-/Kleinschreibung nicht berücksichtigt.
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:43
[OT] Das wird der Frau Moritz aber gar nicht gefallen, wenn du einen unbekannten Aufruf benutzt [OT]

Also ich geb dir den Tipp, dass du einfach noch ne neue String Variable nimmst, die du am anfang immer auf '' (also leer) setzt. Nun fügst du diesem text , falls "Text[Index] = Zeichen" ist, ein leerzeichen hinzu, anderenfalls einfach "Text[Index]".
@ Alle die sich darüber wundern: unsere Lehrerin hat nen Knall und keine Ahnung von der Materie
€dit: @MathiasSimmack: So besser. Du hast aber ansprüche.

Delphi-Quellcode:
{***** zeichen durch leerzeichen ersetzen *****}
function aendern(Text: String; Zeichen: Char): String;
Var Index: Shortint;

    text_neu:string;
begin
 text_neu:='';
 For Index := 1 TO Length(Text) Do
  If Text[Index] = Zeichen Then
    text_neu:=text_neu+' '
    else
   text_neu:=text_neu+text[index];

   result:=text_neu;
end;

//Der Aufruf
procedure TFrmString.b_ersetzen1Click(Sender: TObject);
Var Text: String;
     Zeichen,ersatzzeichen: Char;
begin
 Einlesen(Text, Zeichen,ersatzzeichen);
 Ausgeben(aendern(Text, Zeichen));
end;
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:47
Zitat von Thorben86:
@ Alle, die sich darüber wundern: unsere Lehrerin hat nen knall und keine Ahnung von der Materie
Solche Äußerungen würde ich mir verkneifen, wenn meine Deutschkenntnisse auch ganz offensichtlich zu wünschen übrig lassen:
Zitat:
[OT] Das wird der frau Moritz aber gar nicht gefallen, wenn du einen unbekanten Aufruf benutztz [OT]
  Mit Zitat antworten Zitat
der olli

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

Re: Ein Zeichen durch eine Leerstelle ersetzen

  Alt 18. Mai 2004, 22:51
Ah, bist also auch hier angemeldet... Gut zu wissen Ich tue morgen einfach so, als hätte ich keine andere Lösung gefunden, denn so ist es ja viel einfacher:

Delphi-Quellcode:
procedure TFrmString.BtErsetzenClick(Sender: TObject);
begin
 EdErgebnis.Text := StringReplace(EdText.Text,EdZeichen.Text,' ',[rfReplaceAll, rfIgnoreCase]);
end;
Trotzdem danke, ich kopier's mir mal in ein neues Programm zur Sicherheit :p
  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 09:44 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