![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||