[Delphi] Zbędne spacje w pliku tekstowym

0

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

0

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

0

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

0

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

0

A można poprosić o tą procedurę przesuwającą tekst?
Piotr

0

Gdy odczytasz już to użyj funkcji Trim, TrimLeft lub TrimRight. Kasuje ona spacje przed lub po tekscie. [cygaro]

--

Pełen chenci i zapałó :)

0

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

0

sadze ze najlepiej wyszukac ciagu ' ' i pierwszy znak z niego skasowac
i tak przeszukiwac dalej ten ciag

--
"I think I'm Dumb"

0

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

0

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 [[email protected]]

Life is just a dream, you know...
[Cowboy Bebop]

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