AGB  ·  Datenschutz  ·  Impressum  







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

StringReplace in Delphi 2009

Ein Thema von Prototypjack · begonnen am 21. Okt 2008 · letzter Beitrag vom 22. Okt 2008
Antwort Antwort
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

StringReplace in Delphi 2009

  Alt 21. Okt 2008, 12:17
Moin,

Ist StringReplace aus SysUtils in Delphi 2009 wirklich Unicode-fähig? Im Code-Kommentar und in der Hilfe steht zwar, dass diese Funktion erwartet, dass der String Multi-Byte-Zeichen enthalten könnte, aber dennoch greift die Funktion innerhalb auf eine Menge Ansi-Funktionen (AnsiUpperCase, AnsiPos, etc.) zurück.

Irgendwas kann doch da nicht stimmen, oder?

Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: StringReplace in Delphi 2009

  Alt 21. Okt 2008, 18:37
AnsiPos und AnsiUpperCase arbeiten unter D2009 auch mit Unicode - wie fast alle stringverarbeitenden Routinen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#3

Re: StringReplace in Delphi 2009

  Alt 22. Okt 2008, 13:33
Moin,

OK, das verstehe ich nicht (aber ich kam mit etwas Nachforschung zu selbigem Ergebnis).

Ich dachte das [b]Ansi[b] im Namen würde die Funktion wissentlich auf Ansi-Strings beschränken? Merkwürdig implementiert ist das.

Grüße & Danke,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Volle

Registriert seit: 25. Nov 2003
Ort: Stuttgart
100 Beiträge
 
Delphi 7 Personal
 
#4

Re: StringReplace in Delphi 2009

  Alt 22. Okt 2008, 13:40
Zitat:
Borland Hilfe
Trotz ihres Namens ist die Klasse AnsiString nicht auf den ANSI-Zeichensatz beschränkt, sondern kann jeden Zeichensatz benutzen, der vom aktuell definierten Gebietsschema unterstützt wird, einschließlich Multibyte-Zeichensätze.
is aber schon komisch ....
cYa n' sTay [ S ! C ]
  Mit Zitat antworten Zitat
Lasse2002

Registriert seit: 29. Nov 2004
79 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: StringReplace in Delphi 2009

  Alt 22. Okt 2008, 14:23
Die Namensgebung ist jetzt vielleicht etwas ungewohnt, aber wenn man sich es genau überlegt macht es schon Sinn. Weil sonst müßte man alle Ansi-Funktionen gegen Wide-Funktionen austauschen. Das würde gemeinsamen Quellcode mit älteren Delphiversionen und die Portierung nach Unicode ziemlich aufwändig machen.

Viele Ansifunktionen haben übrigens auch in früheren Versionen schon intern mit Unicode gearbeitet. Bisher hat z.B. AnsiUpperCase die Windows Funktion CharUpperBuffA aufgerufen. CharUpperBuffA hat dann den String erst mal nach Unicode konvertiert, dann in Großbuchstaben umgewandelt, und dann zurück nach Ansi konvertiert. Somit ist AnsiUpperCase in Delphi 2009 schneller geworden, und der Speicherverbrauch gesunken, da die Strings nicht mehr von Ansi nach Unicode konvertiert werden müssen. Anmerkung: Da Win9x keine Unicodeunterstützung mitliefert, verhält sich CharUpperBuffA dort vermutlich anders.

Vielleicht hat ja jemand mal Lust genauer zu untersuchen, wie sich Verwendung von Windows Ansi Funktionen auf die Fragmentierung des Heaps auswirkt.
Lasse
  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 07:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz