ich kämpfe mit einem eigenartigen Problem:
Ich möchte gerne am Anfang eines Strings Zahlen und Sonderzeichen vermeiden. Dabei sollen die Texte nur bis maximal 3 Zeichen "beschnitten" werden, damit im ungünstigen Fall wenigstens noch ein kurzer Text übrig bleibt.
Dazu habe ich die "function CheckText_Nummerierung" im Internet gefunden. Allerdings werden auch die Umlaute "ÄÖÜ" und "äöü" entfernt, obwohl diese Zeichen mit "AllowedChars" erlaubt sind.
Es scheint so zu sein, dass dieses Problem am Copy-Befehl liegt: Er überträgt nicht die Umlaute.
Warum ist das so?
Und wie kann man das Problem lösen?
Vielen Dank!
Aliobaba
Die "Showmessage"-Zeilen habe ich reingeschrieben, damit ich das Problem analysieren kann.
Code: Alles auswählen
  // entfernt die nicht erlaubten Zeichen, aber nur am Anfang
  Function Anfangs_Nummerierung_entfernen_nT ( A_String : string ): string ;
  var
     sss : string;
  begin
          Showmessage(A_String);
          A_String := trim (A_String);
          Showmessage('A>'+A_String+'<');
          While Length(A_String) > 3 do
          begin
            sss := copy (A_String,1,1);
            Showmessage('B>'+sss+'<');
            sss := Globl.CheckText_Nummerierung( sss );
            Showmessage('C>'+sss+'<');
            if sss <> '' then  break;
            A_String := copy ( A_String , 2, 700);
          end;
          Result := A_String ;
  end;  
Code: Alles auswählen
function CheckText_Nummerierung(AText: String): String;  
  var
        p: PChar;
        ch: string;
        L: Integer;
       const
        AllowedChars: String = 'abcdefghijklmnopqrsßtuvwxyzäöü' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ( )' + '*:\' ;
  begin
        Result := '';
        if AText = '' then exit;
        p := @AText[1];
        while p^ <> #0 do begin
          ch := UnicodeToUtf8(UTF8CharacterToUnicode(p, L));
          if UTF8Pos(ch, AllowedChars) > 0 then
          Result := Result + ch;
          inc(p, L);
        end;
  end;    


 
 

 
  Verein
Verein 
 Links
Links Suche
Suche