![]() |
Explode Unicode Änderung
Hallo,
ich nutze bisher folgende Explode-Funktion aus dem Forum:
Delphi-Quellcode:
Wie muss ich die anpassen, damit ich Sie unter D2010 nutzen kann?
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen); Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := AnsiStrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end; Viele Grüße .... |
Re: Explode Unicode Änderung
Hab jetzt mal grob drübergeguckt und würde erstmal vermuten, daß diese Funktion schon Unicodefähig ist,
also daß sie ab D2009 problemlos funktioniert. AnsiStringPos dürfte als Unicode verfügbar sein (liegt an der kranken Umsetzung, wo es zwar ansi heißt, aber Unicode drin ist) ... ich vermute einfach mal, daß es ab D2009 als Unicode definiert ist. Insgesamt muß man anscheinend nur an 2 Stellen aufpassen: AnsiStrPos und StrEnd (gibt es da eventuell auch ein AnsiStrEnd?) Wenn diese beiden Funktionen in D2009/D2010 mit PWideChar arbeiten, sollte es keine Probleme geben, ansonsten muß man nur passende unicodefähige Ersatzfunktionen dafür verwenden. Ansonsten seh ich keinerlei Probleme. |
Re: Explode Unicode Änderung
Hi,
danke für deine Antwort. Gibts eigentlich generell eine Anleitung, auf was man achten muss, wenn man Projekte von <2009 auf eine neue Version umzieht (im Bezug auf Unicode und Strings)? Viele Grüße .... |
Re: Explode Unicode Änderung
Gibt es. Nick Hodges hat auf
![]() |
Re: Explode Unicode Änderung
Wenn vorher nur PChar und String verwendet wurde, dann gibt es kaum probleme, da Delphi so umgestellt wurde, daß dann alles gleich paßt.
Probleme gibt es vorallem dann, wenn String mit AnsiString und PChar mit PAnsiChar vermischt wurde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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