Podział

0

Cze!
Mam string ok 43 literowy, bez spacji, enterów i tabulatorów. Teraz moje pytanie: jak zrobić, aby wrzucić ten tekst do memo tak aby maksymalnie w jednej linii było 8 znaków.
Dzięki

Ps. Jak wykonać to samo tylko w drugą stronę, tzn. połączyć w jeden string?

0

for, copy, delete

0

for i := 1 to length(s) do
memo1.lines.add(copy(s,1i,8i));

Jesli nic nie pomieszalem to dobrze :) i to integer a s to ten twoj string;

0

for i := 1 to length(s) do
memo1.lines.add(copy(s,1i,8i));

Jesli nic nie pomieszalem to dobrze :) i to integer a s to ten twoj string;

Oj pomieszałeś i to dużo :) dla i=1 jest ok, ale dla następnych... np. dla 2 kopiujesz znaki od 2-go do 16-go, dla 3 - od 3-ego do 24-ego i tak dla kazdej liczby z przedziału <1,i> - a więc w warunkach problemu powstaną 43 linie, z których najdłuższa bezie miała aż 43 znaki - bo pustych po prostu nie dołoży.....

To działa - ale jest przekombinowane:

var
lancuch, linia: string;
ile, len,i: integer;
begin

 len := Length(lancuch);
 ile:= len div 8;
for i:=1 to ile do
begin
    linia:=Copy(lancuch,(8*i)-7,(8*i)-8*(i-1));
    memo1.lines.add(linia);
end;

//tylko upraszczam troszke:

for i:=1 to (length(lancuch)+7)shr 3 do memo1.lines.add(Copy(lancuch,(i shl 3)-7,8) 

// 8, bo i tak nie skopiuje spoza konca stringa (3-ci parametr to długość)
// shl/shr 3= */div 8 [mf]

0

Oj pomieszałeś i to dużo :)

No fakt juz wiem w czym problem :> Musze przyznac ku uciesze Sheitara 'Za duzo linuxa' :) W c by to bylo lepiej napisac bo tam lepsza petla jest :)

0

No fakt juz wiem w czym problem :> Musze przyznac ku uciesze Sheitara 'Za duzo linuxa' :) W c by to bylo lepiej napisac bo tam lepsza petla jest :)

heh, jakby sie dało ustawić Interval na pętli for,zeby skakała po 8, to by było dobre rozwiazanie... Mogliby to dołozyć w D9 - życie byłoby łatwiejsze...

0

A jak przekształcić kod aby działał tak aby było 16 znaków?

0

Zastanów sie.. czy cyfra "8" w kodzie ma jakiś sens.. ? czy jest słowo kluczowe?

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