[gelöst] Umlaute im Text suchen und ersetzten

1. November 2007 16:08

Das Suchfeld soll keine ä,ü,ö mehr enthalten

Hallo zusammen, wie lese ich aus einem Textfeld aus, ob ein ä,ü oder ö enthalten ist und wie kann ich diesen einfach austauschen?

Hintergrund:
Das Suchfeld wird automatisch neu gefüllt, wenn div. Änderungen an Debitoren oder Kreditoren vorgenommen werden. Leider wird damit auch eine manuelle Änderung überschrieben, in meinem Fall: alle ä sind ae usw.
Wie kann ich dafür sorgen, dass die Suchbegriffe entsprechend gebaut werden? Wo ich den Code einfügen muss weiß ich, komme aber nicht weiter...

LG - Christian%
Zuletzt geändert von eric_unplugged am 2. November 2007 10:59, insgesamt 1-mal geändert.

1. November 2007 17:01

Hallo Christian

Auf die schnelle habe ich folgenden Vorschlag, wie Du ungefähr vorgehen könntest:

Code:
i2 := STRLEN(DeinString)
FOR i := 1 TO I2 DO BEGIN
  CASE DeinString[i] OF
    'Ä' : DeinString := COPYSTR(DeinString,1,i-1) + Ersatzzeichen + COPYSTR(DeinString,i+1);
             i2 := STRLEN(DeinString);
    'Ö' : //dto.
    'Ü' : //dto.
    'ä' : //dto.
    'ö' : //dto.
    'ü' : //dto.
END;


Zu Deinem Verständnis: Einen String kann man wie ein Array aus einzelnen Zeichen behandeln.

Ich hoffe das hilft Dir schon mal etwas weiter

Gruß
Ralf

1. November 2007 17:05

Hallo zusammen,

Austauschen von Zeichen kann man mit CONVERTSTR

evtl hilft Dir das weiter:
http://www.navision24.de/befehle/convertstr.html

Gruss
Rick

1. November 2007 17:19

Schon richtig Rick,

aber CONVERTSTR kann nur verwendet werden, wenn FromCharacter und ToCharacter eine identische Länge haben.
Bei z.B. 'ü' in 'ue' klappt das damit nicht.

Gruß
Ralf

1. November 2007 17:28

uuhh, ganz fies... das wusste ich nicht. Danke für den Hinweis!

1. November 2007 18:30

Hat es denn jetzt geklappt ...?

1. November 2007 18:34

oh, Natalie, du bist aber ungeduldig, :shock:
Du solltest Eric_unplugged aber schon noch die Möglichkeit geben, die Antwort erst mal zu lesen ;-)

1. November 2007 18:40

Michael Schumacher hat geschrieben:oh, Natalie, du bist aber ungeduldig, :shock:

lol erwischt!
Bitte um Verzeihung ;-)

2. November 2007 10:57

Hallo zusammen, vielen Dank, besonders natürlich an Ralf!
Das hat in der Tat geklappt. Ich poste einmal "meine" Umsetzung.

Mein lieber Kollege wird sich nun freuen, er ist von der alten Schule und "kann" keine Umlaute verwenden. In zwei Jahren ist er in Rente und ich ändere die Umlaute zurück...

Code:
 i2:= STRLEN("Search Name");
 FOR i:= 1 TO i2 DO BEGIN
 CASE "Search Name"[i] OF
  'Ä' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'Ae' + COPYSTR("Search Name",i+1);
              i2 := STRLEN("Search Name");
        END;
   'Ü' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'Ue' + COPYSTR("Search Name",i+1);
              i2 := STRLEN("Search Name");
         END;
   'Ö' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'Oe' + COPYSTR("Search Name",i+1);
              i2 := STRLEN("Search Name");
         END;
   'ä' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'ae' + COPYSTR("Search Name",i+1);
               i2 := STRLEN("Search Name");
         END;
   'ü' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'ue' + COPYSTR("Search Name",i+1);
               i2 := STRLEN("Search Name");
         END;
   'ö' : BEGIN "Search Name" := COPYSTR("Search Name",1,i-1) + 'oe' + COPYSTR("Search Name",i+1);
               i2 := STRLEN("Search Name");
         END;
  END;
    "Search Name" := COPYSTR("Search Name", 1, 50);

2. November 2007 11:27

eric_unplugged hat geschrieben:
Mein lieber Kollege wird sich nun freuen, er ist von der alten Schule und "kann" keine Umlaute verwenden. In zwei Jahren ist er in Rente und ich ändere die Umlaute zurück...

Das ist aber nicht mehr eindeutig programmierbar. Nicht jedes 'ae' im Text nach der Konvertierung war vorher unbedingt ein 'ä' usw.. Am besten die aktuellen Feldwerte speichern.
Zuletzt geändert von Kowa am 2. November 2007 11:32, insgesamt 1-mal geändert.

2. November 2007 11:32

Da hast Du vollkommen Recht, bei uns handelt es sich aber nur um ca. 20.000 Kontakte und die sind schnell per Hand gefiltert + per Hand korrigiert. Per Code hätte ich das nicht gemacht, auch wenn der Hinweis auf meinen Kollegen so klingt. :-)

Wichtig ist die Programmierung vor allem an der Table, damit die neuen Kontakte gleich richtig angelgt werden.
Der Code oben ist bei mir in der Table 5050 verbaut worden.

Danke für den Hinweis und viele Grüße - Christian%