Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Explode Unicode Änderung (https://www.delphipraxis.net/145052-explode-unicode-aenderung.html)

Grolle 22. Dez 2009 21:32


Explode Unicode Änderung
 
Hallo,

ich nutze bisher folgende Explode-Funktion aus dem Forum:
Delphi-Quellcode:
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;
Wie muss ich die anpassen, damit ich Sie unter D2010 nutzen kann?

Viele Grüße ....

himitsu 23. Dez 2009 09:58

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.

Grolle 23. Dez 2009 10:46

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 ....

Bernhard Geyer 23. Dez 2009 10:49

Re: Explode Unicode Änderung
 
Gibt es. Nick Hodges hat auf dn.codegear.com einige Beiträge zur Unicode-Umstellung bereitgestellt.

himitsu 23. Dez 2009 10:58

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 02:48 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