Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   posex oder pos, fester trenner im string (https://www.delphipraxis.net/181521-posex-oder-pos-fester-trenner-im-string.html)

motec 21. Aug 2014 18:34

Delphi-Version: 6

posex oder pos, fester trenner im string
 
Hallo zusammen,

ich habe ein Problem und hoffe hier auf die Lösung, mit Delphi hatte ich bisher nichts am Hut, muss aber in einem Projekt eine Lösung für ein Problem finden.

Ich habe einen string indem durch @@ die für mich interessanten Werte stecken, wie komme ich hier dran? Habe schon mit posex rum experementiert, gebe es aber auf.:pale:

Vorgabe: L99522621@@99@@05652s8@@85zzs81@@r-77 1564@@20082014@@22082014@@@@@@

zwischen den doppelten affen liegen die Indizes, diese können unterschiedlich lang oder auch leer sein. Wie komme ich am besten an diese Werte?:?:

Bin für jede Hilfe dankbar.

mfg

himitsu 21. Aug 2014 18:38

AW: posex oder pos, fester trenner im string
 
SplitString und Co.?
z.B. http://www.delphipraxis.net/181489-s...vorhanden.html

Man kann natürlich auch gern RegEx verwenden.

Uwe Raabe 21. Aug 2014 21:05

AW: posex oder pos, fester trenner im string
 
Wirklich Delphi 6?

Jens01 21. Aug 2014 22:58

AW: posex oder pos, fester trenner im string
 
Zitat:

Habe schon mit posex rum experementiert, gebe es aber auf.
"posex" ?
Ein kleiner Perversling der Neue?

himitsu 21. Aug 2014 23:22

AW: posex oder pos, fester trenner im string
 
Jupp, für irgendwas muß diese eine komische Erfindung ja gut sein.

Großschreibung :roll:

pelzig 22. Aug 2014 07:20

AW: posex oder pos, fester trenner im string
 
Delphi-Quellcode:
var
  s: string;
begin
  s := 'L99522621@@99@@05652s8@@85zzs81@@r-77 1564@@20082014@@22082014@@@@@@';
  s := StringReplace(s, '@@', '|', [rfReplaceAll]);
end;
StringReplace ersetzt den doppelten Klammeraffen durch ein bel. Zeichen (hier '|'), was möglichst nicht in s vorkommen sollte. Suche dann in der DP mal nach "delimiter".

MfG

Dejan Vu 22. Aug 2014 07:26

AW: posex oder pos, fester trenner im string
 
Wozu erst ersetzen? Einfach direkt verwenden:
Delphi-Quellcode:
Function Split(Var S: String; Del: String): String;
Var
  p: Integer;

Begin
  p := pos(Del, S);
  If p = 0 Then Begin
    Result := s;
    s := '';
  End
  Else Begin
    Result := Copy(s, 1, p - 1);
    s := Copy(s, p + length(Del), length(s));
  End;
End;

...
var
  s,teilString : string;

begin
  s := 'L99522621@@99@@05652s8@@85zzs81@@r-77 1564@@20082014@@22082014@@@@@@';
  while s<>'' do begin
    teilString := Split(s,'@@');
    TuWasMitDem(teilString);
  end;
end;
Und wenn es schnell gehen soll:
http://www.delphipraxis.net/82268-[optimiert]-explode-prozedur-reloaded-ersatz-fuer-codelib.html

Eine unicodefähige Variante ist weiter hinten zu finden.

Uwe Raabe 22. Aug 2014 07:31

AW: posex oder pos, fester trenner im string
 
Zitat:

Zitat von Dejan Vu (Beitrag 1269510)
Ich weiß nur nicht, ob das unicodefähig ist, sollte aber kein Problem sein, das anzupassen.

Wenn es wirklich um Delphi 6 geht, sollte sich diese Frage gar nicht stellen.

Bei neueren Delphi-Versionen kann man auch einfach eine TStringList nehmen und mit StrictDelimiter (gibt's auch noch nicht bei D7) und DelimitedText arbeiten.

Dejan Vu 22. Aug 2014 07:33

AW: posex oder pos, fester trenner im string
 
Ist mir auch grad aufgefallen..

pelzig 22. Aug 2014 07:35

AW: posex oder pos, fester trenner im string
 
@Dejan Vu:
Die vielen Klammeraffen am Stringende könnten dem TE beim PoSex vllt. Schwierigkeiten machen, daher der StringReplace-Vorschlag :-D

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Seite 1 von 3  1 23      

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