|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разделение строки на отдельные символы
Всем привет!
Вопрос для повышения квалификации Делаю следующее: Дана строка в Edit1:"Сталь20; круг Ш50x250 - 2 заг." Перегоняю ее в StringGrid следующей процедурой Код:
procedure TForm1.Button1Click(Sender: TObject); var T, T1: TStringList; I,a, j: Integer; k, b:string; begin T :=TStringList.Create; T1:=TStringList.Create; try T.Delimiter := ' '; T.DelimitedText := Edit1.Text; for I := 0 to T.Count - 1 do StringGrid1.Cells[0,0]:= T[0]; StringGrid1.Cells[1,0]:= T[1]; StringGrid1.Cells[2,0]:=T[2]; StringGrid1.Cells[4,0]:= T[4]; k:=StringGrid1.Cells[2,0]; a:=Length(k); for a:=1 to a do begin b:= #$00D8; j:=pos(b,k); Delete(k,j,1); StringGrid1.Cells[2,0]:=k; end; T1.Delimiter := 'x'; T1.DelimitedText :=StringGrid1.Cells[2,0] ; for I := 0 to T1.Count - 1 do StringGrid1.Cells[2,0]:= T1[0]; StringGrid1.Cells[3,0]:= T1[1]; finally T.Free; T1.Free; end; end; |
#2
|
||||
|
||||
Цитата:
А ещё я не пойму зачем тут вообще нужны циклы? Они же здесь не делают никакой полезной работы. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
bambooshoot (11.12.2012)
|
#3
|
|||
|
|||
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var T: TStringList; i, j: Integer; k, b:string; begin T :=TStringList.Create; try T.Delimiter := ' '; T.DelimitedText := Edit1.Text; StringGrid1.Cells[0,0]:= T[0]; StringGrid1.Cells[1,0]:= T[1]; StringGrid1.Cells[2,0]:=T[2]; StringGrid1.Cells[4,0]:= T[4]; k:=StringGrid1.Cells[2,0]; i:=Length(k); for i:=1 to i do begin b:= #$00D8; j:=pos(b,k); Delete(k,j,1); StringGrid1.Cells[2,0]:=k; end; T.Delimiter := 'x'; T.DelimitedText :=StringGrid1.Cells[2,0] ; StringGrid1.Cells[2,0]:= T[0]; StringGrid1.Cells[3,0]:= T[1]; finally T.Free; end; end; |
#4
|
||||
|
||||
Этот кусок кода с единственно оставшимся циклом (и единственным который выполнял полезную работу ):
Цитата:
Код:
k := StringGrid1.Cells[2, 0]; for i := Length(k) downto 1 do begin if k[i] = #$D8 then Delete(k, i, 1); end; StringGrid1.Cells[2, 0] := k; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
bambooshoot (12.12.2012)
|
#5
|
|||
|
|||
Красота! Я наверное вас не удивлю, если скажу, что и работает код на отлично Спасибо! Приятно было пообщаться и выслушать совет. Вот то, что мы имеем на выходе:
Код:
procedure TForm1.Button1Click(Sender: TObject); var T: TStringList; i, j: Integer; k, b:string; begin T :=TStringList.Create; try T.Delimiter := ' '; T.DelimitedText := Edit1.Text; StringGrid1.Cells[0,0]:= T[0]; StringGrid1.Cells[1,0]:= T[1]; StringGrid1.Cells[2,0]:=T[2]; StringGrid1.Cells[4,0]:= T[4]; k:=StringGrid1.Cells[2,0]; for i := Length(k) downto 1 do if k[i] = #$00D8 then Delete(k, i, 1); StringGrid1.Cells[2,0]:=k; end; T.Delimiter := 'x'; T.DelimitedText :=StringGrid1.Cells[2,0] ; StringGrid1.Cells[2,0]:= T[0]; StringGrid1.Cells[3,0]:= T[1]; finally T.Free; end; end; |
Этот пользователь сказал Спасибо bambooshoot за это полезное сообщение: | ||
Speech (14.12.2012)
|