![]() |
Delphi-Version: 5
Problem bei Umlauterkennung
So, erstmal sorry falls ich das ins falsche Unterforum gepackt habe.
Ich muss schulbedingt ein Programm erstellen, das Umlaute einer vom Benutzer eingegebenen Zeichenkette erkennt und sie ersetzt mit z.B. "ss" für "ß" oder "ae" für "ä". Mit Delphi kenne ich mich auch noch nicht soooo gut aus, deshalb verzeiht mir bitte, wenn das Teil voller Fehler ist. Hier ein Teil des Codes:
Code:
'ß' erkennt Delphi aber leider nicht, was kann ich statt 'ß' benutzen?
readln(eingabe);
i:=1; dummy:=''; while i<=Length(eingabe) do begin if eingabe[i] = 'ß' then dummy:=dummy+'ss' Danke im Voraus |
AW: Problem bei Umlauterkennung
Hast Du es einmal mit
![]() P.S.: Willkommen in der DP :dp: [edit] Ach, Moment, ist das ein Konsolenprogramm? In dem Fall müsstest Du wohl auf die Win32-API zurückgreifen und OEMToCharBuff bzw. CharToOEMBuff einsetzen. Allerdings erscheint mir das für eine Schulaufgabe etwas happig. [/edit] |
AW: Problem bei Umlauterkennung
readln? Gehen Umlaufe über die Windows-Konsole überhaupt?
|
AW: Problem bei Umlauterkennung
Japp, siehe mein Edit.
|
AW: Problem bei Umlauterkennung
Es ist eine Konsolenanwendung (wir benutzen nur Konsolenanwendungen). Mein Lehrer hat uns 3 Aufgaben gegeben, diese hier ist laut ihm auf Grundkursniveau (11. Klasse), und solche Dinge wie OEMToCharBuf haben wir noch gar nicht durchgenommen, was bedeutet, dass wir solche Befehle noch gar nicht nutzen sollen (die Hausaufgaben beziehen sich nur auf das, was im Unterricht durchgenommen wurde), was widerrum zu der Erkenntnis führt, dass es noch einen anderen Weg geben muss (oder mein Lehrer hat einen Fehler gemacht).
Ich hab schon stundenlang das Internet durchforstet aber nichts gefunden, fällt Euch noch was ein? |
AW: Problem bei Umlauterkennung
Ein 'Ä' in der Konsole ist nun einmal kein 'Ä' an der GUI, wenn es keine Konvertierfunktion gibt, die mir bislang verborgen geblieben ist, dann dürfte es ohne die genannten Funktionen schwierig werden.
[edit] Nur mal zum Testen: funktioniert es hiermit?
Delphi-Quellcode:
Die Eingabe wandelst Du erst mit DosToAnsi um, arbeitest damit, und vor der Ausgabe wandelst Du mit AnsiToDos wieder zurück. [/edit]
uses
..., Windows; function DosToAnsi(const InStr: AnsiString): AnsiString; begin SetLength(Result, Length(InStr)); OemToCharBuffA(PAnsiChar(InStr), PAnsiChar(Result), Length(InStr)); end; function AnsiToDos(const InStr: AnsiString): AnsiString; begin SetLength(Result, Length(InStr)); CharToOemBuffA(PAnsiChar(InStr), PAnsiChar(Result), Length(InStr)); end; |
AW: Problem bei Umlauterkennung
Wahrscheinlich soll er die Funktion selber schreiben. Stichworte hierzu wären deshalb FUNCTION und vor allem CASE. Guck da mal nach. Fertige Funktion poste ich aber jetzt nicht. :stupid:
|
AW: Problem bei Umlauterkennung
Und was hat das jetzt damit zu tun, dass Delphi kein "Konsolen-Ä" erkennt?
|
AW: Problem bei Umlauterkennung
Zitat:
Eine mögliche Lösung für das ß könnte so aussehen:
Delphi-Quellcode:
Die anderen Umlaute bitte selbst herausfinden (Sollte aber mit den paar Zeilen hier kein Problem sein.)
program Project1;
{$APPTYPE CONSOLE} var eingabe : String; dummy : String; i : Integer; begin ReadLn(Eingabe); dummy := ''; for i := 1 to Length(Eingabe) do begin case ord(Eingabe[i]) of 225 : dummy := dummy + 'ss'; else dummy := dummy + Eingabe[i]; end; WriteLn(Eingabe[i],' = ',ord(Eingabe[i])); end; WriteLn(dummy); ReadLn; end. |
AW: Problem bei Umlauterkennung
früher, als es noch wenige fertige Funktionen gab, hat man erst einmal ein Programm geschrieben, welches den Zeichencode für einen Tastendruck ausgab. Da gab man dann alle komische Zeichen ein, schrieb den Code dazu auf und hat dann die Konvertierfunktion selbst zusamengebaut.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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-2025 by Thomas Breitkreuz