Einzelnen Beitrag anzeigen

Chris603

Registriert seit: 19. Mär 2013
Ort: Deutschland
13 Beiträge
 
Delphi 7 Personal
 
#1

Umlaute in einem String umwandeln

  Alt 13. Jun 2013, 13:41
Hallo!
Bevor Ich anfange, ja das Problem wurde bereits mehrfach auf Delphi-Praxis.de behandelt, dummerweise hat mir keine einzige dieser Hilfen geholfen....

Also, was will Ich machen: Ich will den Benutzer einen String eingeben lassen(Konsole) und diesen dann ohne Umlaute ausgeben lassen. Das ist gerade eine Hausaufgabe in unserem Info-VK. Hier auf DP.de hab Ich auch die Funktion StringReplace gefunden, nur denke Ich, das wir die Funktion nicht benutzen sollten, da wir grad Schleifen durch genommen haben und es somit wahrscheinlich mit einer for-Schleife lösen sollten, außerdem wurmt mich das Problem jetzt so, das Ich es mit Schleife lösen will

Also Ich hab es am Anfang einfach mit einer for-Schleife probiert, die von 1 bis String.Lenght zählt und dann die einzelnen Zeichen per if auf Umlaute überprüft. Da das nicht funktioniert hat, hab Ich gegoogelt und hier auf DP.de ebenfalls diese Lösung gefunden, wenn auch per case-Überprüfung. Dummerweise funktioniert die Funktion bei mir nicht! Hier erstmal der Aufruf der Funktion und die Funktion selber:

Delphi-Quellcode:
// Main -> Aufgabe: Abfragen des Strings, umwandeln und Ausgeben.
procedure Main;
begin
  Writeln; Writeln; Writeln;
  Writeln('Bitte geben Sie nun den zu konvertierenden String an: ');
  Readln(strString);

  strString := ErsetzeUmlaute(strString);
  Writeln(strString);

  Writeln; Writeln; Writeln;
  Write('<ENTER> um neu zu starten....');
  Readln;

  ClrScr;
  asAppState := asRestart;
end;
Delphi-Quellcode:
function ErsetzeUmlaute(s: string): string;
var
  i: integer;
begin
  for i := 1 to length(s) do
  begin
    Case s[i] of
    'ä': result := result+'ae';
    'ü': result := result+'ue';
    'ö': result := result+'oe';
    'ß': result := result+'ss';
    else result := result+s[i];
    end;
  end;
end;
Also was macht die Funktion bei mir: gar nichts ^^ Sie gibt den String einfach so wie er ist zurück!

Mir ist aufgefallen, das wenn Ich das else ausklammere, gar nichts mit dem String gemacht wird, also scheint die case Anweisung irgendwie die Umlaute im String nicht zu erkennen....
Meine Vermutung ist, das es vlt. am Zeichensatz liegt? Leider hab Ich keinen Plan, was für ein Zeichsensatz(ANSI, UTF) da grad verwendet wird, oder welchen man verwenden sollte, da Ich eigentlich nie mit Delphi oder Strings(zumindest soche erweiterten String-Operationen) arbeite.

Ich hoffe, Ihr könnt mir helfen
LG
Chris
BuubleGamer
  Mit Zitat antworten Zitat