Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String nach Trennzeichen aufteilen (https://www.delphipraxis.net/10362-string-nach-trennzeichen-aufteilen.html)

ChrisH90 16. Okt 2003 20:25


String nach Trennzeichen aufteilen
 
Hallo ihr alle,

habe ein kleines Anfängerproblem. Habe einen String mit unterschiedlicher Länge, welcher über einen Barcodeleser eingelesen wird. Funzt auch alles so weit recht gut. Der Barcode besteht jedoch aus zwei Teilen getrennt durch ein Pipe. Das bedeutet der Code sieht so aus: 22001232|5444555 . Diese Pipe trennt nun den linken Teil (Auftragsnummer) vom rechten Teil (Bezeichner). Beide brauche ich für sepparate SELECTs. Wie kriege ich die linke Seite von der rechten getrennt und beide somit als extra String? Es sei noch bemerkt, daß die Strings nicht immer gleich lang sind, aber immer durch ein Pipe getrennt sind. Bestimmt ist das ganz einfach, doch wie gesagt "Anfänger" hinsichtlich Delphi!

mirage228 16. Okt 2003 20:26

Re: String nach Trennzeichen aufteilen
 
such mal nach "Explode":

Hier im Forum suchenExplode

edit: oder besuch gleich diesen link hier: http://www.delphipraxis.net/internal...hlight=explode

mfG
mirage228

himitsu 16. Okt 2003 20:30

Re: String nach Trennzeichen aufteilen
 
S1 := Copy(S, 1, Pos('|', S) - 1);
S2 := Copy(S, Pos('|', S) + 1, Length(S));

ChrisH90 16. Okt 2003 20:42

Re: String nach Trennzeichen aufteilen
 
Whow, das ist ja schneller als wenn ich selber in einem Buch suche. Super hier, DANKE!!!!!!!

Pseudemys Nelsoni 16. Okt 2003 22:29

Re: String nach Trennzeichen aufteilen
 
hi,

also ich habe es immer so gemacht:

Delphi-Quellcode:
function strn(s: string; index: integer; sep: char): string;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  Try
    Repeat
      if Pos(sep, s) <> 0 then
      begin
        sl.Add(Copy(s, 1, Pos(sep, s)-1));
        Delete(s, 1, Pos(sep, s));
      end
      else
      begin
        sl.Add(s);
        s := '';
      end;
    until s = '';
    if index <= sl.Count then
    Result := sl.Strings[index-1]
    else Result := '';
  finally
    sl.Free;
  end;
end;
und dann mit:

Delphi-Quellcode:
procedure irgendwas;
var
  s: string;
begin
  s := strn(irgendeinstring, 1, ',') // das 2te is der 2te teil nach dem 1ten seperator des strings..das 3te der seperator selbst
end;

himitsu 16. Okt 2003 22:58

Re: String nach Trennzeichen aufteilen
 
@silent
Nicht schlecht, vor allem wenn mehreres geteilt werden soll. Ist sogar kürzer als das worauf mirage228 verlinkt hat.

Da ChrisH90 immer genau 2 Teile hat, ist es vielleicht etwas umständlich.

kleiner Tipp:
Wenn du in die Repeat-Schleife noch einen Zähler einbaust, kannst'e die Funktion unter umständern noch etwas beschleunigen.
(z.B. wenn der 3. Werte gesucht wird, nach dem 3. Durchgang Repeat verlassen)

Nachtrag (zum Beispiel so):
Delphi-Quellcode:
function strn(s: string; index: integer; sep: char): string;
var
  sl: TStringList;
  i: integer;                             {*}
begin
  sl := TStringList.Create;
  Try
    i := 0;                               {*}
    Repeat
      inc(i);                             {*}
      if Pos(sep, s) <> 0 then
      begin
        sl.Add(Copy(s, 1, Pos(sep, s)-1));
        Delete(s, 1, Pos(sep, s));
      end
      else
      begin
        sl.Add(s);
        s := '';
      end;
    until (s = '') or (i = index);        {*}
    if index <= sl.Count then
    Result := sl.Strings[index-1]
    else Result := '';
  finally
    sl.Free;
  end;
end;

Pseudemys Nelsoni 17. Okt 2003 00:20

Re: String nach Trennzeichen aufteilen
 
danke, werd ich mal ändern ^^


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