AGB  ·  Datenschutz  ·  Impressum  







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

Umlaute in string erstetzen

Ein Thema von khh · begonnen am 10. Nov 2012 · letzter Beitrag vom 10. Nov 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 14:22
Ansonsten hätte ich dir eine meiner Funktionen empfohlen. Die habe ich damals bei Delphi 3 geschrieben, die hatte kein StringReplace. Die Funktion ist zwar für Strings, aber ich schätze die kann man für seine Bedürfnisse anpassen:

Delphi-Quellcode:
type
  TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); //Wichtig!!! Global setzen


function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

  function PosEx(Substr: string; S: string; Flag: TReplaceFlags): Integer;
  begin
    if rfIgnoreCase in Flag
    then Result := Pos(AnsiUpperCase(Substr), AnsiUpperCase(S))
    else Result := Pos(Substr, S);
  end;

var
  S2: String;
begin
  S2 := S;
  Result := '';
  while Length(S2) > 0 do begin
    if PosEx(OldPattern, S2, Flags) > 0 then begin
      Result := Result + Copy(S2, 1, PosEx(OldPattern, S2, Flags) - 1);
      Delete(S2, 1, PosEx(OldPattern, S2, Flags) + Length(OldPattern) - 1);
      Result := Result + NewPattern;
    end else begin
      Result := Result + S2;
      Delete(S2, 1, Length(S2));
    end;
    if not (rfReplaceAll in Flags) then begin
      Result := Result + S2;
      Delete(S2, 1, Length(S2));
    end;
  end;
end; {Popov}
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 15:22
und das funktioniert auch, wenn der String utf-8 kodiert ist?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 15:26
Keine Ahnung, wahrscheinlich nicht, habe ich auch für Delphi 3 geschrieben. Ist auch nur selber etwas machen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.393 Beiträge
 
Delphi 12 Athens
 
#4

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 15:28
Das wird ihm nicht viel helfen, da das ANSI-UTF8-Problem weiterhin besteht.

Manchmal ist es zwar nervig, daß Delphi automatisch die Stringtypen konvertiert und da "versucht" automatisch die "richtige/passende" Konvertierung zu wählen, aber meistens ist es doch recht praktisch, daß hier Compiler und RTL/VCL zusammengehören.

Bei Lazarus ist halt das Problem, daß FPC und Lazarus nicht wirklich zusammengehören.
Der Compiler (FreePascal) und seine Typen sind weiterhin ANSI (bei Delphi hatte man sich dazu entschieden das auf Unicode umzustellen, genauer auf UCS2/UTF-16, was allerdings andere Probleme verursachte),
wärend Lazarus (RTL/VCL) an den meisten Stellen auf UTF-8 (damit es in 'nen AnsiString paßt) umgestellt wurde.

Nur gibt es da eben hier und da einige Probleme, wenn man vergißt die String-Kodierung anzupassen, bzw. wenn unterschiedliche Kodierungen aufeinandertreffen.
Man kann eben kein ANSI "ä" in einem UTF-8-String finden, oder umgekehrt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Nov 2012 um 18:58 Uhr) Grund: zu langsam getippt ... da war wer schneller X'D
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Umlaute in string erstetzen

  Alt 10. Nov 2012, 18:15
ich danke euch allen
Karl-Heinz
  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 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz