Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Umlaute in einem String umwandeln (https://www.delphipraxis.net/175341-umlaute-einem-string-umwandeln.html)

Chris603 13. Jun 2013 13:41

Umlaute in einem String umwandeln
 
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 :D

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

Hansa 13. Jun 2013 13:46

AW: Umlaute in einem String umwandeln
 
Na gut, jetzt kann ich sie dir geben. :P

Delphi-Quellcode:
  for i := 1 to Length(s) do
  begin
    case s[i] of
      #142: Result := Result + #196; {Ž}
      #153: Result := Result + #214; {™}
      #154: Result := Result + #220; {š}
      #132: Result := Result + #228; {„}
      #148: Result := Result + #246; {”}
      #129: Result := Result + #252; {}
      #225: Result := Result + #223; {á}
    else
      Result := Result + s[i];
    end;
  end;
Hat der Lehrer nichts gesagt in Richtung ASCII/ANSI ? :shock:

baumina 13. Jun 2013 13:49

AW: Umlaute in einem String umwandeln
 
Wieviele Schüler stellen nun jetzt noch ein und die selbe Frage hier :roll:

http://www.delphipraxis.net/175335-p...ml#post1218508

Hansa 13. Jun 2013 13:59

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von baumina (Beitrag 1218511)
Wieviele Schüler stellen nun jetzt noch ein und die selbe Frage hier :roll:

Das würde ich mal den Lehrer fragen. Es ist völlig unnötig in das wirklich einfache CASE ein Umlaute-Problem einzubauen. Warum wird nicht gefordert z.B. bei Zahleneingabe irgendwas per Function/Case zu machen ? Nicht mal chinesische Schüler hätten damit ein unnötiges Problem. 8-)

Chris603 13. Jun 2013 14:10

AW: Umlaute in einem String umwandeln
 
@Hansa: Daaaanke! :-D Jetzt klappt's wenn auch mit kleiner Änderung:
Delphi-Quellcode:
function Replace(s: AnsiString): AnsiString;
var
  i: integer;
begin
  for i := 1 to Length(s) do
  begin
    case s[i] of
      #142: Result := Result + 'Ae'; // Ä
      #153: Result := Result + 'Oe'; // Ö
      #154: Result := Result + 'Ue'; // Ü
      #132: Result := Result + 'ae'; // ä
      #148: Result := Result + 'oe'; // ö
      #129: Result := Result + 'ue'; // ü
      #225: Result := Result + 'ss'; // ß
    else
      Result := Result + s[i];
    end;
  end;
end;
Davor mit den Codes kamen nur recht seltsame Zeichen raus^^

Und nein, unser Lehrer hat uns überhaupt nichts darüber gesagt, er hat uns nur die Email geschrieben:
Delphi-Quellcode:
2. Erstellen Sie ein Programm, das die deutschen Umlaute ä, ö, ü, ß in ae, oe, ue und ss in einer vom Benutzer eingegebenen Zeichenkette ersetzt und das Ergebnis wieder ausgibt.
Naja, jetzt hab Ich's ja, nochmal Vielen Dank :D

@baumina: Sorry, das hätte mir auch weitergeholfen! Dummerweise hab Ich im Forum nicht nach Umlauterkennung, sondern nach Umlaute-Umwandeln gesucht :/ Ich hab das wirklich net gesehen, sry!

LG
Chris

baumina 13. Jun 2013 14:23

AW: Umlaute in einem String umwandeln
 
Macht nichts, es freut mich zu sehen, dass die heutigen Lehrpläne noch auf soliden (evtl. nicht mehr ganz zeitgemäßen) Konsolenanwendungen basieren. Wer weiß, vielleicht kommen wir nach den gekachelten Apps ja wieder mal dort hin.

Das mit den verschiedenen Zeichensätzen war natürlich ne echte Gemeinheit, die dem Lehrbuch (aus welchem Jahr stammt das eigentlich?) sicherlich entgangen ist.

Chris603 13. Jun 2013 14:26

AW: Umlaute in einem String umwandeln
 
Es kam nicht aus einem Lehrbuch, das war einfach eine EMail, die uns unser Lehrer zugeschickt hat zusammen mit anderen Aufgaben zu Strings :/ Ich bin auch echt gespannt, ob die anderen das lösen können^^

baumina 13. Jun 2013 14:29

AW: Umlaute in einem String umwandeln
 
Nach meiner Erfahrung stellen Lehrer ihre Aufgaben auch nur aus einem Lehrbuch heraus.

Hansa 13. Jun 2013 14:31

AW: Umlaute in einem String umwandeln
 
Der Spickzettel ist ja jetzt im Internet gelandet. Bei uns wurde der noch auf dem Schulhof oder unter der Bank weitergereicht. :lol: Heutiger Nachteil davon : "Feind" hört mit. 8-)

jaenicke 13. Jun 2013 14:35

AW: Umlaute in einem String umwandeln
 
Das passiert halt, wenn man die Schüler nicht mit (für Schüler wohl eher interessanten) Fenstern arbeiten lässt, sondern auf Kommandozeilenebene arbeitet...
Bei uns wurde graphisch gearbeitet und das kam auch gut bei den Schülern an und funktionierte auch sehr gut. Ich glaube bei Kommandozeilen hätte die Hälfte Informatik abgewählt...

Der schöne Günther 13. Jun 2013 14:41

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von baumina (Beitrag 1218521)
Nach meiner Erfahrung stellen Lehrer ihre Aufgaben auch nur aus einem Lehrbuch heraus.

Ja, insbesondere auch gerne mit dem Titel "Informatik heute" lautet und darauf eine Jahreszahl folgt die älter als die Schüler selbst sind :(

Zumindest war es bei mir so

baumina 13. Jun 2013 14:42

AW: Umlaute in einem String umwandeln
 
Unser "Informatik-Lehrer" hatte vom Programmieren keine Ahnung, der hat nur immer im Lehrbuch paar Seiten gelesen und das gelesene uns dann versucht beizubringen ... wehe es wollte jemand was anderes wissen, was erst 4 Seiten nachher kam.

Als Programmiersprache wurde die damals schon vom aussterben bedrohte Sprache COBOL gelehrt; wir waren der erste Jahrgang der das schon lernen durfte (ganz neu eingeführt).

joachimd 13. Jun 2013 14:43

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von Chris603 (Beitrag 1218517)
Und nein, unser Lehrer hat uns überhaupt nichts darüber gesagt, er hat uns nur die Email geschrieben:
Delphi-Quellcode:
2. Erstellen Sie ein Programm, das die deutschen Umlaute ä, ö, ü, ß in ae, oe, ue und ss in einer vom Benutzer eingegebenen Zeichenkette ersetzt und das Ergebnis wieder ausgibt.

Wo steht da was von Konsole? Ein TForm, zwei TEdits und einen TButton drauf und feddisch. Nix mit ANSI/OEM/Unicode o.ä.

DeddyH 13. Jun 2013 14:45

AW: Umlaute in einem String umwandeln
 
Ausgehend von der Annahme, dass es sich um Klassenkameraden handelt: http://www.delphipraxis.net/1218490-post5.html

Chris603 13. Jun 2013 14:46

AW: Umlaute in einem String umwandeln
 
Wir hatten bisher nur Konsolen-Programmierung, deshalb ist es recht unwahrscheinlich, das er das meint! :/

p80286 13. Jun 2013 14:47

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von jaenicke (Beitrag 1218523)
Das passiert halt, wenn man die Schüler nicht mit (für Schüler wohl eher interessanten) Fenstern arbeiten lässt, sondern auf Kommandozeilenebene arbeitet...

Nee, das passiert, wenn man sich nicht darüber im Klaren ist, daß die ausgegebenen Zeichen nur eine von mehreren möglichen Darstellungsformen sind.
(Es lebe der Hex-Dump!!)

Gruß
K-H

DeddyH 13. Jun 2013 14:49

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von Chris603 (Beitrag 1218531)
Wir hatten bisher nur Konsolen-Programmierung, deshalb ist es recht unwahrscheinlich, das er das meint! :/

Dann wage ich mal die kühne Behauptung, dass er wahrscheinlich selbst nichts von der unterschiedlichen Zeichenkodierung wusste oder ein Musterprogramm unter TurboPascal für DOS geschrieben hat *g*.

Chris603 13. Jun 2013 14:50

AW: Umlaute in einem String umwandeln
 
@DeddyH: Haha das kann gut sein, und dann auch noch am selben Datum... Naja das zeigt mir wenigstens, das Ich nicht der einzige bin der das net hingekriegt hat^^ Andererseits spammt jetzt mein Jahrgang DP.de zu :?
edit: Naja, er wirkt schon recht kompetent, vielleicht hat er's ja einfach vergessen anzugeben :? Ich kann ihn ja mal fragen ^^

BUG 13. Jun 2013 19:55

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von Hansa (Beitrag 1218522)
Der Spickzettel ist ja jetzt im Internet gelandet. Bei uns wurde der noch auf dem Schulhof oder unter der Bank weitergereicht. :lol: Heutiger Nachteil davon : "Feind" hört mit. 8-)

Oder eben auf Facebook, da hört nur die NSA mit :angel2:

Der.Kaktus 13. Jun 2013 20:06

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von DeddyH (Beitrag 1218533)
Zitat:

Zitat von Chris603 (Beitrag 1218531)
Wir hatten bisher nur Konsolen-Programmierung, deshalb ist es recht unwahrscheinlich, das er das meint! :/

Dann wage ich mal die kühne Behauptung, dass er wahrscheinlich selbst nichts von der unterschiedlichen Zeichenkodierung wusste oder ein Musterprogramm unter TurboPascal für DOS geschrieben hat *g*.

Nix gegen Turbo-Pascal fuer DOS :-D..das hat man noch verstanden :lol:

Perlsau 14. Jun 2013 05:53

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von jaenicke (Beitrag 1218523)
Das passiert halt, wenn man die Schüler nicht mit (für Schüler wohl eher interessanten) Fenstern arbeiten lässt, sondern auf Kommandozeilenebene arbeitet ... Bei uns wurde graphisch gearbeitet und das kam auch gut bei den Schülern an und funktionierte auch sehr gut. Ich glaube bei Kommandozeilen hätte die Hälfte Informatik abgewählt...

Ich gehe davon aus, daß diese Lehrer einfach nicht mehr wissen als das, was sie sich vor 20 Jahren einmal mit Turbo Pascal erarbeitet hatten ... auch wenn sie in den Augen ihrer Schüler kompetent wirken. :stupid:

Puke 18. Jun 2013 19:51

AW: Umlaute in einem String umwandeln
 
Unser Lehrer (in diesem Fall der Gleiche wie der des Eröffners) möchte uns erst die Grundlagen wie Variablentyoen und so beibringen.:evil: Da ich eh schon die ganze Zeit graphisch arbeite, ist das eigentlich kein Problem. Bis auf den Mist jetzt. Wurde allerdings werst später darauf hingewiesen das es diesen Thread schon 3x in den letzten 2Wochen gegebn hat.:oops: Was ein Zufall!8-)

Was den Plan des Lernens angeht, Grapisch gehts bei uns in der Q1 bei einem anderen Lehrer weiter. Hoch LEbe der Leistungskurs:thumb:
Gruß Puke.:thumb:

Perlsau 18. Jun 2013 19:55

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von Puke (Beitrag 1218948)
Unser Lehrer (in diesem Fall der Gleiche wie der des Eröffners) möchte uns erst die Grundlagen wie Variablentyoen und so beibringen.:evil:

Die folgende Antwort ist u.U. müßig, da Lehrpläne ja von niemandem, der ihnen ausgesetzt wird, verändert werden können, aber man kann diese Grundlagen auch in einer grafischen Entwicklungsumgebung erlernen.

Puke 18. Jun 2013 19:57

AW: Umlaute in einem String umwandeln
 
Wir können daran leider nichts ändern!
Ich mach es lieber graphisch, was solls? Nur das unser Lehrer uns für voll blöde hält!

@Christoph: Bitte änder den Quellcode ein bisschen um. Der merkt sonst, dass wir es uns einfach machen!

Warum nimmst du eigentlich nicht StringReplace! Das hatten wir auch schon! Case ist langweilig!

Gruß Puke.

DeddyH 18. Jun 2013 20:02

AW: Umlaute in einem String umwandeln
 
Da Du StringReplace ja je zu änderndem Zeichen brauchst, musst Du es auch entsprechend oft aufrufen. Da ist die Case-Variante aber um Längen schneller.

Puke 18. Jun 2013 20:04

AW: Umlaute in einem String umwandeln
 
Bei mir reichen momentan vier Zeilen.(IgnoreCase!)
Sieht schön aus und ich bin wenigstens schon mit Aufgabe 3 fertig.:wink: (Warum muss die 2 auch am schwersten sein?:roll:)

Perlsau 18. Jun 2013 20:13

AW: Umlaute in einem String umwandeln
 
Zitat:

Zitat von Puke (Beitrag 1218951)
Wir können daran leider nichts ändern!

Sag ich doch :!:

Zitat:

Zitat von Puke (Beitrag 1218951)
Ich mach es lieber graphisch, was solls?

Ist ja auch zeitgemäßer. Ich hatte damals zuerst Turbo Pascal gelernt, Delphi gab's da noch nicht, und hatte enorme Anfangs-Schwierigkeiten beim Umstieg auf die erste grafische Pascal-IDE "Borland Pascal für Windows".

Zitat:

Zitat von Puke (Beitrag 1218951)
Nur das unser Lehrer uns für voll blöde hält!

Es ist eine weitgehend verborgene und tabuisierte Tatsache, daß viele Eltern und Lehrer es insgeheim nicht abkönnen, wenn Jüngere, die gefälligst weniger Lebenserfahrung haben sollen als ein Erwachsener, in gewissen Bereichen mehr können und wissen. Mit anderen Worten: Solche Lehrer müssen diejenigen unter euch, die sich besser auskennen als sie, für "blöde" halten, um sich nicht selbst blöd vorzukommen. Das wirft natürlich bei den Schülern, die darüber nicht bescheid wissen (und das sind gewöhnlich alle), Fragen auf, die sie quasi niemandem außer mitwissenden Schülern stellen können, ohne gleich zurechtgewiesen oder als frech bezeichnet zu werden. Aber das ist ein weites Thema, da könnte man ganze Bücher mit füllen ...

Puke 18. Jun 2013 20:21

AW: Umlaute in einem String umwandeln
 
Leider bezweifel ich dies bei unserm jetzigen Lehrer und vor allem bei meinem Nächsten.
Unser jetziger Lehrer hat sau viel Ahnung (zumindest von HTML http://www.arg-heusenstamm.de).
Zudem ist der eigentlich richtig cool.8-) (13 Punkte in Physik):thumb:

Allerdings ist er nunmal ein Lehrer. Er glaubt ich, bzw. wir können nichts. Allerdings hab ich meine Delphi-Künste nicht in der Schule gelernt.
Gruß Puke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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