AGB  ·  Datenschutz  ·  Impressum  







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

Problem bei Umlauterkennung

Ein Thema von DerTester · begonnen am 13. Jun 2013 · letzter Beitrag vom 13. Jun 2013
Antwort Antwort
DerTester

Registriert seit: 13. Jun 2013
3 Beiträge
 
Delphi 7 Personal
 
#1

Problem bei Umlauterkennung

  Alt 13. Jun 2013, 12:58
Delphi-Version: 5
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:
readln(eingabe);
i:=1;
dummy:='';
while i<=Length(eingabe) do begin
  if eingabe[i] = 'ß' then
    dummy:=dummy+'ss'
'ß' erkennt Delphi aber leider nicht, was kann ich statt 'ß' benutzen?
Danke im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:02
Hast Du es einmal mit Delphi-Referenz durchsuchenStringReplace versucht? Ich mag kaum glauben, dass Delphi kein 'ß' erkennen soll, es sei denn, Du verwendest einen merkwürdigen Zeichensatz.

P.S.: Willkommen in der 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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (13. Jun 2013 um 13:07 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.115 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:03
readln? Gehen Umlaufe über die Windows-Konsole überhaupt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:06
Japp, siehe mein Edit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DerTester

Registriert seit: 13. Jun 2013
3 Beiträge
 
Delphi 7 Personal
 
#5

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:14
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:17
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:
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;
Die Eingabe wandelst Du erst mit DosToAnsi um, arbeitest damit, und vor der Ausgabe wandelst Du mit AnsiToDos wieder zurück. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (13. Jun 2013 um 13:28 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:35
readln? Gehen Umlaufe über die Windows-Konsole überhaupt?
Ja, aber dort hat man die OEM-Zeichensatz und Delphi nutzt Ansi.

Eine mögliche Lösung für das ß könnte so aussehen:
Delphi-Quellcode:
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.
Die anderen Umlaute bitte selbst herausfinden (Sollte aber mit den paar Zeilen hier kein Problem sein.)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:44
Schon ein Problem, wenn die heutigen Schulbücher noch auf DOS aufsetzen ... eieiei.

Ja, Du wirst wohl auf die ASCII-Codes greifen müssen, wenn Du nach "ASCII codes" googelst, findest die Zahlen der einzelnen Umlaute.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#9

AW: Problem bei Umlauterkennung

  Alt 13. Jun 2013, 13:53
Delphi-Quellcode:
var
  N: Integer;
  S, O: AnsiString; //oder bei älteren, nicht unicodefähigen Delphiversionen, nur "String"
begin
  Readln(S);
  O:='';
  for N:=1 to Length(S) do
    case Ord(S[N]) of
      129: O:=O+'ue';
      132: O:=O+'ae';
      142: O:=O+'Ae';
      148: O:=O+'oe';
      153: O:=O+'Oe';
      154: O:=O+'Ue';
      225: O:=O+'ss';
      else O:=O+S[N]
    end;
  Writeln(O);
  Readln;
end.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:05 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