Zaczytałem plik tekstowy do komponentu memo. Jak usunąć zbędne spacje. np. wygląda to tak:
text text text text
a powinno wyglądać tak:
text text text text
Pomocy!
[cya]
pozdrawiam
Piotr
Przeszukuj text litera po literze i w momencie napotkania spacji ustawiaj jakąś zmienną typu bool na true, a jeśli jest to inny znak to na false. Przy porównywaniu każdego znaku rób test: jeśli aktualny znak jest spacją i zmienna bool jest równa true to kasuj aktualny znak.
--
"Imagination is more important than knowledge." - A. Einstein
Z tym kasowaniem to nie tak do końca. A co w przypadku gdy mam 5 spacji koło siebie i chcę zostawić tylko jedną oraz jak usunąć spacje na początku linii?
Piotr
var tekst:string;
spacja:boolean;
Begin
spacja:=true;
if tekst[1]=' ' then procedura_przesuwajaca_tekst_o_jeden_znak;
if tekst[i]=' ' then
spacja:=true else spacja:=false;
if tekst[i]=' ' and spacja=true then
procedura_przesuwajaca_tekst_o_jeden_znak;
End;
--
Umiem troche, ale nie wszystko :) a na koncu i tak BLUE SCREEN
A można poprosić o tą procedurę przesuwającą tekst?
Piotr
Gdy odczytasz już to użyj funkcji Trim, TrimLeft lub TrimRight. Kasuje ona spacje przed lub po tekscie. [cygaro]
--
Pełen chenci i zapałó :)
var
Poz: Integer;
Tekst: string;
begin
Tekst := Memo1.Text;
repeat
Poz := Pos(' ', Tekst);
if Poz>0 then
Delete(Tekst, Poz+1, 1);
until Poz <= 0;
Trim(Tekst);
Memo1.Text := Tekst;
end;
Chyba najwygodniejsze :)
--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC:
Kanał: #4programmers
Serwer: warszawa.ircnet.pl
Sieć: POLNet
Port: 6667
sadze ze najlepiej wyszukac ciagu ' ' i pierwszy znak z niego skasowac
i tak przeszukiwac dalej ten ciag
--
"I think I'm Dumb"
sadze ze najlepiej wyszukac ciagu ' ' i pierwszy znak z niego skasowac
i tak przeszukiwac dalej ten ciag
werw0e: a co ja właśnie napisałem? (jakby co, to tam w pos są 2 spacje)
--
Jest jeszcze jeden błąd ... :)
--------Oficjalny kanał----------
Service for programmers w IRC:
Kanał: #4programmers
Serwer: warszawa.ircnet.pl
Sieć: POLNet
Port: 6667
Może tak:
var
dane, wynik: string;
poz: Integer;
begin
dane:=wiadomo_co;
poz:=Pos(' ', dane); // 1 spacja :P
wynik:='';
while poz > 0 do begin
wynik:=wynik + copy(dane, 1, poz);
dane:=trim(copy(dane, poz + 1, length(dane) - poz));
poz:=Pos('', dane)
end
end;
Powinno działać :)
--
Vogel [kylix.3.oe@slackware.8.1.0.1]
Life is just a dream, you know...
[Cowboy Bebop]