blikk info infothek forum galerie sitemap

Umlaute und Großbuchstaben

anfang zurueck weiter ende nach oben

                                                                                                                von Alexander Engl

c)Filter von Umlauten und scharfen ß und Umwandeln von Klein- in Großbuchstaben

Da Pascal Umlaute und ß nicht richtig lesen kann, diese aber in einem String vorkommen können, müssen diese in die zwei-Buchstaben-Schreibweise umgewandelt werden.


Strings enthalten Groß- und Kleinbuchstaben, sollen aber oft nur in Großbuchstaben ausgegeben werden.


 

Beispielprozedur:

(*Diese Prozedur ist ein Filter fuer Umlaute und ß*)


PROCEDURE filter (txtein : STRING; VAR txtaus : STRING);
VAR
i              : INTEGER; (*Zaehlvariable*)
buchstab : CHAR;

BEGIN

     (*Initialisierung*)

      zaehl := 0; (*Um zu Zaehlen wie viele Veraenderungen durchgfuehrt wurden*)

                txtaus := ''; (* txtaus als leer initialisieren*)

                FOR i := 1 TO length(txtein) DO BEGIN

                      buchstab := txtein[i];

           (*Falls unerlaubtes Zeichen auftritt*)

 CASE buchstab OF

'ä' : BEGIN

       txtaus[i + zaehl] := 'A';

       txtaus[i + zaehl + 1] := 'E';

                 zaehl := zaehl + 1;

END;

'Ä' : BEGIN

txtaus[i + zaehl] := 'A';

txtaus[i + zaehl + 1] := 'E';

zaehl := zaehl + 1;

END;

'ö' : BEGIN

txtaus[i + zaehl] := 'O';

txtaus[i + zaehl + 1] := 'E';

zaehl := zaehl + 1;

END;

'Ö' : BEGIN

txtaus[i + zaehl] := 'O';

txtaus[i + zaehl + 1] := 'E';

zaehl := zaehl + 1;

END;

'ü' : BEGIN

txtaus[i + zaehl] := 'U';

txtaus[i + zaehl + 1] := 'E';

zaehl := zaehl + 1;

END;

'Ü' : BEGIN

txtaus[i + zaehl] := 'U';

txtaus[i + zaehl + 1] := 'E';

zaehl := zaehl + 1;

END;

'ß' : BEGIN

txtaus[i + zaehl] := 'S';

txtaus[i + zaehl + 1] := 'S';

zaehl := zaehl + 1;

END

ELSE

      (*Wenn Kleinbuchstaben*)

      IF (Ord(buchstab) >= Ord('a')) AND(Ord(buchstab) <= Ord('z')) THEN

     (*Mache daraus Grossbuchstaben*)

            txtaus[i + zaehl] := Chr (Ord(buchstab) + Ord('A') - Ord('a'))

       ELSE

       (*Wenn erlaubtes Sonderzeichen*)

            IF ((Ord(buchstab) >= Ord('A')) AND(Ord(buchstab) <= Ord('Z'))

 OR (buchstab = ' ') OR (buchstab = '!') OR (buchstab = '?')

  OR (buchstab = '.') OR (buchstab = ',')) THEN

         (*Uebernahme in die neue Datei*)

txtaus[i + zaehl] := buchstab

(*Wenn unerlaubtes Sonderyeichen*)

     ELSE BEGIN

          Writeln('Eingabedatei enthaelt unerlaubtes Zeichen!!!');

Readln;

exit

      END;

END;

END;

    (*Veraenderung des Laengenfelds, da Programm sonst meint, dass txtaus die*)

     (*Laenge 0 hat*)

      txtaus[0] := Chr(length(txtein) + zaehl + Ord('0'));

END;

nach oben