Rozdzielanie lancucha

0

Mam lancuch, na. 123;456;789 i dziele go taka procedura:

procedure Dzielenie;
var
Lancuch : string;
P : Integer;
begin
memo1.Clear;
Lancuch := '123;456;789';
P := Pos(';', Lancuch);
P := Pos(';', Lancuch);
while P &gt 0 do begin
Memo1.Lines.Add(Copy(Lancuch, 1, P - 1));
Delete(Lancuch, 1, P);
P := Pos(';', Lancuch);
end;
Memo1.Lines.Add(Lancuch);
end;

jak jest dobrze gdy lancuch nie ma wiecej niz 3 skladniki. Jak chce podzielic cos takiego 123;456;789;000 to pokaze mi sie cos takiego:
123
456
789
a ostatni wyraz znika. Tak samo dzieje sie jak jest wiecej czlonow. Chyba wiecie w czym problem. Moze ktos wie jak zrobic zeby pokazywalo wiecej niz 3 skladniki?--pozdrawiam PEDROS {hello}
Delphi6

0

Możesz użyć mojej funkcji :

function spacja(c:String;m:integer;znak:char):String;
var
b:String;
i,j,z:integer;
begin
z:=1;
for i:=1 to m do
begin
b:='';
for j:=z to length(c) do
begin
if c[j] &lt&gt znak then b:=b+c[j];
if c[j] = znak then begin z:=j+1;j:=length(c);end;
end;
end;
spacja:=b;
end;

Jako "c" podać łańcuch np "123;1234;" jako "m" pozycje elementy (1,2,3), jako "znak" znak oddzielający (;) Zwóci ciąg numer "m" :-)

0

Zamiast tej jednej morki powinno być ( ; ), poza tym ten łańcuch trzeba zakończyć znakiem, żeby poskutkowało do ostatniego elementu :-)

0

u mnie procedurka ktora podal Pedros dziala dobrze :)

ps. po co zaraz po Lancuch := '123;456;789'; dwa razy napisales P := Pos(';', Lancuch); ?

--
-=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

LKS a dziala ci jak wezmiesz lancuch dluzszy niz 3 wyrazowy? Bo mi wasnie o to chodzi
ps. a co do tego dlaczego jest 2 razy P := Pos(';', Lancuch); to wyniklo przez przypadek przy pisanu kodu. Chyba mi to wybaczycie :-) --pozdrawiam PEDROS {hello}
Delphi6

0

pregusia chcialem sprawdzic twoj kod ale nie moglem dojsc po co ci zmienna m hmm... --pozdrawiam PEDROS {hello}
Delphi6

0

Zmioenna M odpowiada numerowi ciągu np
spacja('123;456;789;160;',2,';') zwróci '456', jakby było 3 to zwróciło by '789' itd :-)

0

Pedros napisal:

LKS a dziala ci jak wezmiesz lancuch dluzszy niz 3 wyrazowy

przed chwila sprawdzalem i ....
dziala :)---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

No mi tez juz dziala. Poszukalem i znalazlem glupi blad. Ale dzieki za odpowiedzi. Jak sie nie daje lancucha dluzszego niz 3 wyrazy to nie moze ich podzielic :-) --pozdrawiam PEDROS {hello}
Delphi6

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