Rozdzielenie textu poprzez "|"

0

Nie wiem gdzie umiescic tego posta tutaj czy do Newbie

Szykalem po forum ale nie znalazlem tego czego szukalem:
Mianowicie mam plik textowy a w nim takie cos:

|         2726 | 2004-10-21 | 43 | 22 | 67 | 61 | 41 | 77 | 17 |

I teraz chce zeby to np. Memo czy ListBox'a dodal mi same liczby (bez spacji):
43
22
67
61
41
77
17
Jak mam to zrobic wiem ze trzeba zrobic to ze znak "|" bedzie rozdzielal ale jak :-|

Napisalem takie cos:

procedure TForm1.LoadText(const TextIn: String; Start: Byte);
var
  I: Byte;
  S: AnsiString;
begin
  S := '';
  for I := Start to Length(TextIn)do
  begin
    if TextIn[I] = '|' then
    begin
      S := Copy(TextIn, Start, I-1);
      Exit;
    end;
  end;
end;

Ale nie dziala jak bym chcial :-/ Czy moze mi ktos pomoc [???]

Z gory wielkie dzieki Panowie i Panie oczywiscie ;)

0

Hehehe, ReplaceString... :P

0
Pos() & PosEx()
  • F1</delphi>
0

Dzieki juz dziala jako tako :D ;P

0

Kurcze, ludzie.
Jest w serwisie do ściągnięcia funkcja EXPLODE.

Dzieli łańcuch tekstowy na pod łańcuchy wg zadanego znaku(u Ciebie '|').
Potem już tylko funkcja trim.
Trim obcina początkowe i końcowe spacje w łańcuchu

0

ehhh
Owa funkacja:

type
  PTableString = ^TTableString;
  TTableString = Array Of String;
  
  
function explode(str: String; rozdzielacz: Char): TTableString;
var
  i, j: Integer;
begin
  j:=1;
  i:=1;
  while i <= Length(str) do
  begin
    if (str[i] = rozdzielacz) or (i = Length(str)) then
    begin
      if (i = Length(str)) and (str[i] <> rozdzielacz) then
        inc(i);
      SetLength(Result, High(Result)+2);
      Result[High(Result)] := Trim(Copy(str, j, i-j));
      j := i+1;
    end;
    inc(i);
  end;
end;

// A uzycie:
NP.
var
  Wyjscie: TTableString;
  ListaGrupa  :TTreeNode;
begin
Wyjscie := explode(Grupy, '|'); // Uzycie funkcji explode explode(string, char)
for I:=0 to High(Wyjscie) do
begin       // string-dowolny ciąg znaków; char-znak rozdzielający string na tablicę
  ListaGrup.Items.Add(Wyjscie[I]);
  ListaGrup.Checked[I] := INI.ReadBool('Grupy',ListaGrup.Items[I],False);
  Glowna.Lista.Items.Add(nil, Wyjscie[I]);
end;
end;

Spacje obcinamy poleceniem : trim()

0

A jak zrobić rozdzielanie stringów na podstawie strungu, np Explode('abcxxcbaxxend', 'xx');

0

A jak zrobić rozdzielanie stringów na podstawie strungu, np Explode('abcxxcbaxxend', 'xx');

procedure Explode(s: String; const Dot: String; var Buffer: TStringList);
begin
  Buffer.Clear;
  while Pos(Dot, s) <> 0 do begin
    Buffer.Add(Copy(s, 1, Pos(Dot, s) - 1));
    s := Copy(s, Pos(Dot, s) + Length(Dot), Length(s) - Pos(Dot, s));
  end;
  if Length(s) > 0 then begin
    Buffer.Add(s);
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1