Einzelnen Beitrag anzeigen

Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Eigene Funktion erstellen

  Alt 22. Jan 2006, 01:52
ehh leute...?

wenn ich dich richtig verstehe willst du doch nen ganzen satz überprüfen:

Also aus

s := 'Heute ist ein schöner Tag!'; soll dannn

s2 := 'Heute ist ein schöer Tag!' werden?
Wenn ja:

dann musst du ja auf jeden fall das teil einmal für jeden Buchstaben & für jedes zu erstzende Zeichen druchgehen:

ok dann man ein bissel code

Delphi-Quellcode:

(*
  angenommen hier steht der ganze krams von der Form der dann irgendwann mal mit

  end; endet ^^
*)


// da machen wir uns mal nen eigenen kleinen verbund typ...
// ist so als wenn man ein paar variablen mit "klebeband" zu einem neuen namen "zusammenklebt"
// der name hier ist einfach mal replace... kannst du aber nennen wie du willst

type replace = record
  was : String; // ok wir müssen uns ja auf jeden fall merken, was wir erstzen wollen
  durch : String; // und klar... natürlich auch wodurch
end;

var
  liste : Array[0..2] of replace; // so da gibts ja bestimmt nicht nur eine sache, die wir erstzen wollen
                                  // also nicht nur ä sondern auch z.B. ö
                                  // die liste ist erst mal auf max. 3 -> (0, 1, 2) einträge ausgelegt
                                  // wenn du mehr brauchst einfach die "hinter" zahl erhöhen (die obere grenze)
  Form1: TForm1;
 
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject); // so wenn das "formular gemacht" wird
begin
  liste[0].was := 'ä'; // soll er sich merken, dass im ersten (ACHTUNG 0 ist der erste!) das ä steht
  liste[0].durch := 'ä'; // dass soll dann durch ein "ä" ausgetauscht werden

  liste[1].was := 'ü'; // das zweite in der liste (ACHTUNG index = 1!)
  liste[1].durch := 'ü'; // usw. sollte einigermaßen selbst erklärend sein

  liste[2].was := 'ö';
  liste[2].durch := 'ö';
end;

(*
unsere funktion heisst einmalAllesBitte
bekommt einen String der "aufgeräumt" werden soll
und soll uns einen "sauberen" string zurückgeben //seltsame formulierung ^^

diese eigene funktion gehört zum objekt TForm1 (deswegen steht das auch davor)
  die musst du oben auch nochmal eintragen!
 
    da solte dann so was stehen

    private
      function einmalAllesBitte(str: String): String;
      { Private declarations }
    public

    und jupp da lässt man das Obj wieder weg... weil das ja schon in "seinem bereich" steht
*)


function TForm1.einmalAllesBitte(str : String) : String; // so nun kommt der "dicke brocken"
var // so in unser schönen funktion gibt es eigene nur hier gültige variablen
  i : Integer; // eine zahl zum druchlaufen der liste
  res : String; // und das ergebnis, zwischengelagert in res

begin
  res := str; // so erst mal merken wir uns das ungewaschene in res

  for i := 0 to length(liste) - 1 do // dann gehen wir jedes zu erstzende einzelteil in der liste durch
    res := StringReplace(res, liste[i].was, liste[i].durch, [rfReplaceAll]);
(*
    res := "..." ok im resultat soll das gewaschene sein
    und zwar das, was die funktion StringReplace zurück gibt (das ist ein delphi hausmittel)
    was bekommt die StringReplace eigentlich?
    ok klar 1. worin sie was erstzen soll
    2. was ersetzt werden soll
    3. wodurch das gefundene ersetzt werden soll
    4. ein Schalter (Flag) der den modus einstellt; in dem fall soll es alle vorkommnisse erstzten
      (kann auch noch anders geschaltet werden aber das wäre jetzt zu viel des guten!)

  so das läuft jetzt ja alle durch...
*)

  result := res; // so wenn wir fertig sind... dann kann man das auch wieder zurückgeben
end;
so...

benutztung ist dann wie folgt

ergebnis := einmalAllesBitte('Der super gemeine text, der so umlaute oder so enthält... oder auch nicht...');

hat den großen vorteil, dass du das nicht alles buchstabe weise durchlaufen musst...
und dass es recht gut zu verwalten ist...
Und kurz ist es auch noch ^^

hoffe ich konnte helfen und habe dich nicht zu sehr erschlagen

cya
Corelgott

[edit]
aso:
der code ist nicht getestet... der ist einfach mal so frei schnautze...
also bugs behalet ich mir mal vor...

[/edit]
wer Rächtschraibfehler findet daaf sie behalten...
  Mit Zitat antworten Zitat