AGB  ·  Datenschutz  ·  Impressum  







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

Leerzeichen in Unterstriche umwandeln

Ein Thema von Snow Dragon · begonnen am 5. Feb 2009 · letzter Beitrag vom 11. Feb 2009
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#13

Re: Leerzeichen in Unterstriche umwandeln

  Alt 9. Feb 2009, 09:36
Wie sieht denn dein Code nun aus?
Wäre ja nicht schlecht, wenn wir dennoch den Fehler finden und du dabei lernst/erfährst warum es nicht ging.

Hast du beim StringReplace auch den Rückgabewert übernommen?
Ist oftmals ein/DER Fehler, warum da nix passiert


Delphi-Quellcode:
VAR S: AnsiString;
    I: Integer;
    B, Schl: Byte;

BEGIN
  // ALLES in Großbuchstaben umwandeln
  S := AnsiUpperCase(edein.Text);
  // Umlaute ersetzen
  S := StringReplace(S, 'Ä', 'AE', [rfReplaceAll]);
  S := StringReplace(S, 'Ö', 'OE', [rfReplaceAll]);
  S := StringReplace(S, 'Ü', 'UE', [rfReplaceAll]);
  S := StringReplace(S, 'ß', 'SS', [rfReplaceAll]);
  // nicht erlaubte Zeichen rauslöschen
  FOR I := Length(S) DOWNTO 1 DO
    IF NOT (S[I] IN [' ', 'A'..'Z']) THEN
      Delete(S, I, 1);
  // Schlüssel holen
  Schl := StrToInt(lbein.Text);
  FOR I := 1 to Length(S) DO
    // das Leerzeichen wird nicht verarbeitet (war doch bei Cäsar so?)
    IF S[I] IN ['A'..'Z'] THEN
    BEGIN
      // bei Cäsar werden nur die Buchstaben in sich verschoben

      // Buchstabe in Zahl umwandeln und auf den Nullpunkt verschieben
      B := Ord(S[I]) - Ord('A');
      // Schlüssel zurechnen und den Zahlenbereich anpassen
      B := (B + Schl) MOD 26;
      // Zahl wieder in den Buchstabenbereich verschieben und in ein Zeichen Wandeln
      S[I] := Chr(B + Ord('A'));
    END;
    edaus.Text := S;
  END;
Buchstabe ... auf den Nullpunkt verschieben
ist nur, damit sich leichter Rechnen läßt, da es sonst etwa so aussehen würde:
Delphi-Quellcode:
VAR B, Schl: Integer;

Schl := StrToInt(lbein.Text);

IF S[I] IN ['A'..'Z'] THEN
BEGIN
  // bei Cäsar werden nur die Buchstaben in sich verschoben

  // Buchstabe in Zahl umwandeln
  B := Ord(S[I]);
  // Schlüssel zurechnen und den Zahlenbereich anpassen
  B := B + Schl;
  WHILE B < Ord('A') DO A := A + 26;
  WHILE B > Ord('Z') DO A := A - 26;
  // Zahl wieder in den Buchstabenbereich verschieben und in ein Zeichen Wandeln
  S[I] := Chr(B);
END;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 05:49 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 by Thomas Breitkreuz