Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > For to do begin


Автор: vovan430 3.10.2005, 09:05
Помогите мне пожалуйста почему у меня не работает код




как я не пытался не полусается
Код

var
i:integer;
begin 
 for i:=1 to 10 do begin
   edit[i].text:='a';
 end;
end;

[move][/move] smile

Автор: Mayk 3.10.2005, 09:07
а что такое n?
И что не получается? Не компилится, не работает?

Автор: vovan430 3.10.2005, 09:10
ошибку выдаёт на .Text

Автор: Mayk 3.10.2005, 09:15
А что такое edit?
Какую ошибку выдает?

Автор: vovan430 3.10.2005, 09:19
edit это компонент в котором чтонибудь пишешь. Я вот хочу чтоб при нажатии на кнопку содержимое edit1......edit10 .Text становилось буквой А

Автор: Mayk 3.10.2005, 09:20
Если edit, как это можно предположить, массив указателей, то афаир надо
писать edit[i]^.text

Автор: vovan430 3.10.2005, 09:21
^ - всё из-за этой галочки?
Добавлено @ 09:23
^ - всё из-за этой галочки?

Автор: Mayk 3.10.2005, 09:27
Цитата(vovan430 @ 3.10.2005, 13:21)
^ - всё из-за этой галочки?

Цитата(Mayk @ 3.10.2005, 13:20)
Если edit --8<-- массив указателей,



Если нет, то играйся с полем .tag.

Автор: Albinos_x 3.10.2005, 09:34
Код

 var i : Integer; 
begin 
for i := 0 to 9 do 
  if (Components[i] is TEdit) then 
    (Components[i] as TEdit).Text := 'а'; 
end;

Добавлено @ 09:36
это должно решить проблему... smile
Добавлено @ 09:38
а вообще лучше использовать:
Код

for i := 0 to ComponentCount-1 do

Автор: ~FoX~ 3.10.2005, 09:46
Цитата(Albinos_x @ 3.10.2005, 10:34)
а вообще лучше использовать:

Угу, только вот так.
Код

for i :=  ComponentCount-1 downto 0 do

Автор: Rennigth 3.10.2005, 09:47
еще как вариант:
Код

var
  lControl: TControl;
  i: Integer;
begin
for i := 0 to 9 do
begin
  lControl := (FindComponent(Format('Edit%d', i)));
  if Assigned(lControl) then
    (lControl as TEdit).Text := a;
end;

Автор: Albinos_x 3.10.2005, 09:55
Цитата
Угу, только вот так.

в принципе, без разницы и так, и так работает... и так:
Код

for i := 0 to 9 do 

при определённых условиях, конечно...
Цитата
var i : Integer; 
begin 
for i := 0 to ComponentCount-1 do 
  if (Components[i] is TEdit) then 
    (Components[i] as TEdit).Text := 'а'; 
end;

если не ошибаюсь, то в FAQ или DRKB это есть...

Автор: Bibimij 4.10.2005, 20:51
Если знаешь сколько компонентов должно быть на форме, так же можешь воспользоваться массивом из компонентов

Код


var
  form1:tform1;
  edit:array[1..10] of tedit;

//потом при показе формы пишешь:

procedure TForm1.FormShow(Sender: TObject);
var b:byte
begin
//...

 for b:=1 to 10 do begin
    edit[b]:=c.Create(nil);
    edit[b].Parent:=form1
 end;
//...
end;

//ну и затем горячо любимый тобой код... :D 

var
i:integer;
begin 
 for i:=1 to 10 do begin
   edit[i].text:='a';
 end;
end;



Также можно воспользоваться TList'ом... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)