AlphaNumeric

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
RUB
Beiträge: 15
Registriert: Do 5. Nov 2009, 13:02

AlphaNumeric

Beitrag von RUB »

Hallo ich hab da ein Problem mit einer Aufzahlung wenn die Datei Kodierung UTF8 ist.
Aber wenn ich auf CP1252 (Ansi) umstelle bekomme ich beim Compilieren zwar keine Fehlermeldung mehr aber dann funktionieren die Umlaute nicht mehr.

Die Fehlermeldung bei UTF8: Error: Ordinal expression expected

Code: Alles auswählen

const
     Alpha = ['a'..'z', 'A'..'Z', 'ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß', '_'];
     AlphaNumeric = ['0'..'9'] + Alpha;

Code: Alles auswählen

function NewUnderline(const S: string): string;
var
  i: integer;
  Vorher: boolean = False;
begin
  Result := '';
  for i := 1 to Length(S) do
  begin
    if (S[i] in AlphaNumeric) then
    begin
      Result := Result + S[i];
      Vorher := False;
    end
    else
    if not Vorher then
    begin
      Result := Result + '_';
      Vorher := True;
    end;
  end;
end;
der Übergebene String ist ein Unicode String (UTF8Decode), kann ich auch Ändern (Plattform: Win32,Linux)
Im Internet hab ich leider keine Lösung gefunden.

Danke schon mal im Voraus

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: AlphaNumeric

Beitrag von theo »

Sollte mit meinem utf8scanner und TCharacter machbar sein.
Alles hier: http://wiki.lazarus.freepascal.org/Theodp" onclick="window.open(this.href);return false;

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1619
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: AlphaNumeric

Beitrag von corpsman »

Zu deiner Fehlermeldung

die "ä","ü","ö" sind unter UTF8 2 Byte groß und alle anderen sind nur 1 Byte Groß. Deswegen meckert der Compiler da.

Unter CP1252 sind sie alle nur 1 Byte Groß.
--
Just try it

Antworten