Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите некотрректно работает DelimitedText в StringGrid [WinXP]


Extar ©   (2007-01-10 14:33:00) 

В Мемо1 загружен текстовик (колонки разделенные табуляцией, в некоторых колонках содержатся пробелы)
Нужно разобрать в StringGrid по колонкам (по табуляциям но не по пробелам)

Использую:

StringGrid1.Rows[i].Delimiter:=#9;
StringGrid1.Rows[i].DelimitedText:=Memo1.Lines[j];


Разбирает и по табуляции и по пробелам.
Как разобрать игнорируя пробелы?
Или руками по символам в цикле каждую строку разбирать?
(естественно срочно нужно)
Delphi8

Спасибо заранее


Extar   (2007-01-10 16:44:00) [1]

Var
memotexttmp:string;


Loginov Dmitry   (2007-01-10 16:38:00) [2]

> memotexttmp.Length


Это чего?


Extar   (2007-01-10 16:30:00) [3]

memotexttmp:=memo1.Lines.Text;
for i:=1 to memotexttmp.Length do if memotexttmp[i]=' ' then memotexttmp[i]:='@';
memo1.Lines.Text:=memotexttmp;

Так почемуто не сработало, а реплэйс помог, спасибо


гостъ   (2007-01-10 16:23:00) [4]

Сорри,
Ну тогда как советовали выше, novill


var
 s : String;
begin
 s := Memo1.Text;
 s := StringReplace ( s, ' ', '@', [ rfReplaceAll ] );
 Memo1.Text := s;


Anatoly Podgoretsky   (2007-01-10 16:13:00) [5]

> гостъ  (10.01.2007 16:06:11)  [11]

Text это свойство, а не переменная


Extar   (2007-01-10 16:11:00) [6]

for i:=1 to memo1.Lines.Text.Length do if memo1.Lines.Text[i]=' ' then memo1.Lines.Text[i]:='@';

Первое что попробовал.
Left side cannot be assignet to rigth side.. или в этом духе.

Вопрос в силе


гостъ   (2007-01-10 16:06:00) [7]

ошибся быстро :)


for I := 1 to Length ( Memo1.Text ) do
 if ( Memo1.Text[I] =#32 ) then
   Memo1.Text[I] := #64; {@}


гостъ   (2007-01-10 16:04:00) [8]


for I := 1 to Length ( Memo1.Text ) do
 if ( Memo1.Text[I] = $20 ) then
   Memo1.Text[I] := $40; {@}


Extar   (2007-01-10 15:58:00) [9]

А как быстро в Мемо1.text заменить пробелы на другой символ?
(не успеваю уже сам)


Extar   (2007-01-10 15:44:00) [10]

>Юрий Зотов
Прочитал позже


Extar   (2007-01-10 15:43:00) [11]

>Novill
Спасибо, но результат такой же почемуто(

>Anatoly Podgoretsky
Буду знать, спасибо

Думаю сделать вот так тупо:
1)Заменить в Мемо1 пробелы на какой-нибудь символ типа @
2)Раскидать по колонкам стрингрид
3)пробежать по гриду и заменить @ на пробелы
Финт ушами)


Anatoly Podgoretsky   (2007-01-10 15:27:00) [12]

> Юрий Зотов  (10.01.2007 15:06:05)  [5]

По стандарту пробел спецсимвол, поэтому значения с пробелами должны браться в двойные кавычки, поспольку это не сделано, то придется прыгать с заменой


Юрий Зотов   (2007-01-10 15:06:00) [13]

Временно заменить пробелы каким-нибудь спецсимволом, а потом сделать обратную замену.


Anatoly Podgoretsky   (2007-01-10 14:50:00) [14]

> Extar  (10.01.2007 14:33:00)  [0]

Работает в соответствии с описанием и в соответствии с определением формата CSV
Твой текстовик не соответствует формату


novill   (2007-01-10 14:44:00) [15]

rfReplaceAllслитно пишется


novill   (2007-01-10 14:43:00) [16]

ты всё с файлом возишься? :)

Ты ж не сказал что у тебя там проблеы есть.

Можно сделать еще вот таким способом (эта строчка вместо двух тех что выше)

StringGrid1.Rows[i].Text:=stringrelapce(Memo1.Lines[j],#9,#13#10,[rfReplac eAll]);


Extar   (2007-01-10 14:34:00) [17]

Сорри, *некорректно в сабже


Наверх

Титульная страница Поиск, карта сайта Написать письмо