Formatowanie prostego tekstu

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

janosik00 ten post 08-02-2010 12:35





Hej mam problem, dopiero zaczynam programowanie w Delphi, i potrzebuje wyciągnąć tekst  z takiego zdania:

slowo1|slowo2|slowo3

takie zdanie jest w jednej zmiennej string ale ja potrzebuje wyciagnac kazde słowo slowo1,slowo2,slowo3 i wlozyc kazde slowo do trzech roznych zmiennych...w jaki sposob to zrobic automatycznie korzystajac z tych znakow rozdzielających "|" , czy jest jakas gotowa funkcja ?? dzieki za pomoc
Przejdź na górę strony
cytuj
cimak ten post 08-02-2010 12:45
avatar

Użytkownik
Status: Offline
Dołączył: 01-12-2002
Skąd: Chatka na środku lasu
jest wiele szkół ;] ja robie tak:

var list:TStringList;
    i:Integer;
begin
  list:=TStringlist.Create;
  list.Text:='slowo1|slowo2|slowo3';
  list.Text:=StringReplace(list.Text,'|', #13#10 , [rfReplaceAll] );
  //lub te dwie linijki mozna zamienic na jedna: list.Text:=StringReplace('slowo1|slowo2|slowo3','|', #13#10 , [rfReplaceAll] );

  for i:=0 to list.Count-1 do
      showmessage(list[i]);

  list.Free;
end;


po prostu zamieniasz znaki z "|" na znak nastepnej linii "#13#10" i w ten sposob masz kolejne slowa w kolejnych itemach.

mozna jeszcze tak:
var list:TStringList;
    i:Integer;
begin
  list:=TStringlist.Create;
  ExtractStrings(['|'], [' '], PChar('slowo1|slowo2|slowo3'), list);

  for i:=0 to list.Count-1 do
      showmessage(list[i]);

  list.Free;
end;


Ostatnio zmodyfikowany: 08-02-2010 12:52 przez cimak
Przejdź na górę strony
cytuj
czytaczek ten post 08-02-2010 12:56





albo tak

procedure TForm1.Button1Click(Sender: TObject);
var
  str : TStringList;
  i   : integer;
begin
  str := TStringList.Create;
  str.Delimiter := '|';
  str.DelimitedText := 'aaa|bbb|ccc';

  for i := 0 to str.Count-1 do begin
    Memo1.Lines.Add(str.Strings[i]);
  end;
end;
Przejdź na górę strony
cytuj
Misiekd ten post 08-02-2010 13:00
avatar

Użytkownik
Status: Online
Dołączył: 02-12-2003
Skąd: Dąbrowa Górnicza
tu trzeba uważać bo SL traktuje każdy znak o kodzie mniejszym od 33 (CZYLI SPACE TEŻ!) jako delimiter
przez internet społeczeństwo jest coraz głupsze...

Google NIE GRYZIE!

Ogrodzenia, meble kute i nie tylko
Pomogłem - kliknij
Przejdź na górę strony
cytuj
zajcev ten post 08-02-2010 13:33
avatar

Użytkownik
Status: Offline
Dołączył: 11-01-2008
Skąd: Bielsko-Biała
Albo użyć tej procki.. Parametr 1 to tekst, 2 to znak separatora, 3 lista do ktorej maja byc wrzucone poszczegolne czesci..


procedure prTokenize(AText: String; ASeparator: Char; var AList: TStringList);
begin
  AList.Clear;
  while (Pos(ASeparator, AText) > 0) do begin
    AList.Add(Copy(AText, 0, Pos(ASeparator, AText) -1));
    AText := Copy(AText, Pos(ASeparator, AText) + 1, Length(AText) -Pos(ASeparator, AText));
  end;
  if (Length(Trim(AText)) > 0) then
    AList.Add(Trim(AText));
end;
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0426 sek. (zapytań SQL: 9)