Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Delimiterproblem bei StringList bzw Explode (https://www.delphipraxis.net/79073-delimiterproblem-bei-stringlist-bzw-explode.html)

Zacherl 15. Okt 2006 22:44


Delimiterproblem bei StringList bzw Explode
 
Hi,
ich habe folgenden String: *SetClientData|Florian|"Florian Bernd"|FLORIAN|0|test1#*. Diesen möchte ich zuerst mit Delimiter * in seine zwei Teile trennen (Zweiter Teil ist klar leer), und dann mit Delimiter | in seiner Enzelteile zerlegen.

Komischeweise wird bei "Florian Bernd" immer beim Leerzeichen eine Trennung vollzogen.

Kann man das verhindern?

Dann habe ich grade die Funktion EXPLODE gefunden:
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;
welche allerdings den Delimiter innerhalb von " auch als Trennung ansieht ...

Florian

3_of_8 15. Okt 2006 22:49

Re: Delimiterproblem bei StringList
 
Das ist ein bekannter Bug der TStringList. Verwende einen der Codes aus der CodeLib.

Zacherl 15. Okt 2006 22:50

Re: Delimiterproblem bei StringList bzw Explode
 
Siehe Edit zur Explode Funktion ... :???:

3_of_8 16. Okt 2006 14:57

Re: Delimiterproblem bei StringList bzw Explode
 
Dann nimm halt die hier.

Dieser Bug ist schon sehr lange dabei, keien Ahnung warum Borland den nicht mal fixt, vielleicht sind die ja der Meinung, der gehört mittlerweile einfach dazu. :mrgreen:

Oder es ist ein Running Gag eines gelangweilten Entwicklers bei Borland. ;)

inherited 16. Okt 2006 15:00

Re: Delimiterproblem bei StringList bzw Explode
 
Nunja, stell dir mal vor, die würden die Bugs Fixen. Dann würden alle Delphi-QT's ums 400-Fache kleiner, und keiner wuerde die Sprache mehr ernst nehmen. DAS ist Marketing.

Zacherl 16. Okt 2006 15:29

Re: Delimiterproblem bei StringList bzw Explode
 
Zitat:

Zitat von 3_of_8
Dann nimm halt die hier.

Cool danke ... die muss ich übersehen haben ... :mrgreen:

Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 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