Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как с помощью цикла перевести из десятка edit в массив?   Найти похожие ветки 

 
Bestden   (2004-04-21 20:46) [0]

Как с помощью цикла перевести из десятка edit в массив?
Например существует у меня 15 Tedit, назвал я их a1, a2, ... a15! Как мне циклом перевести из ai.text в arr[i]?


 
Bestden   (2004-04-21 20:46) [0]

Как с помощью цикла перевести из десятка edit в массив?
Например существует у меня 15 Tedit, назвал я их a1, a2, ... a15! Как мне циклом перевести из ai.text в arr[i]?


 
VMcL ©   (2004-04-21 20:47) [1]

FindComponent
?


 
VMcL ©   (2004-04-21 20:47) [1]

FindComponent
?


 
Yanis ©   (2004-04-21 20:56) [2]


var
 ar:array[0..15] of string;
...
for i := 0 to Form1.ControlCount-1 do
 if Form1.Components[i] is TEdit then
   ar[i] := (Components[i] as TEdit).Text;

Но это учень "узкий" цикл - алгоритм. Если колво Edit"ов за ранее не известно, то ИМХО лучше динамический массив юзать.


 
Yanis ©   (2004-04-21 20:56) [2]


var
 ar:array[0..15] of string;
...
for i := 0 to Form1.ControlCount-1 do
 if Form1.Components[i] is TEdit then
   ar[i] := (Components[i] as TEdit).Text;

Но это учень "узкий" цикл - алгоритм. Если колво Edit"ов за ранее не известно, то ИМХО лучше динамический массив юзать.


 
Bestden   (2004-04-21 20:56) [3]

Что то я не пойму...
ну на такое транслятор ругается A1[i]:=StrToInt(findcomponent(a1+inttostr(i)).Text);
По идее с помощью findcomponent можно сделать массив объектов...


 
Bestden   (2004-04-21 20:56) [3]

Что то я не пойму...
ну на такое транслятор ругается A1[i]:=StrToInt(findcomponent(a1+inttostr(i)).Text);
По идее с помощью findcomponent можно сделать массив объектов...


 
Bestden   (2004-04-21 20:57) [4]

yanis Спасибо!


 
Bestden   (2004-04-21 20:57) [4]

yanis Спасибо!


 
Piter ©   (2004-04-21 22:13) [5]

Строчку

ar[i] := (Components[i] as TEdit).Text

можно заменить на

ar[i] := TEdit(Components[i]).Text

Так будет более оптимально :)


 
Piter ©   (2004-04-21 22:13) [5]

Строчку

ar[i] := (Components[i] as TEdit).Text

можно заменить на

ar[i] := TEdit(Components[i]).Text

Так будет более оптимально :)


 
Leshiy ©   (2004-04-22 06:19) [6]

Yanis ©   (21.04.04 20:56) [2]
А если на форме будут другие контролы (акромя TEdit"a)???

Bestden   (21.04.04 20:56) [3]
a[i]:=TEdit(FindComponent("a"+IntToStr(1))).Text;


 
Leshiy ©   (2004-04-22 06:19) [6]

Yanis ©   (21.04.04 20:56) [2]
А если на форме будут другие контролы (акромя TEdit"a)???

Bestden   (21.04.04 20:56) [3]
a[i]:=TEdit(FindComponent("a"+IntToStr(1))).Text;


 
Yanis ©   (2004-04-22 07:38) [7]

To [6]
>А если на форме будут другие контролы (акромя TEdit"a)???
И что тогда?


 
Yanis ©   (2004-04-22 07:38) [7]

To [6]
>А если на форме будут другие контролы (акромя TEdit"a)???
И что тогда?


 
Leshiy ©   (2004-04-22 07:59) [8]

Yanis ©   (22.04.04 07:38) [7]
ControlCount>16;
1.В массиве будут "дырки";
2.Out of Range;
3.Значения не всех Tedit"ов попадут в массив;


 
Leshiy ©   (2004-04-22 07:59) [8]

Yanis ©   (22.04.04 07:38) [7]
ControlCount>16;
1.В массиве будут "дырки";
2.Out of Range;
3.Значения не всех Tedit"ов попадут в массив;


 
Kto ©   (2004-04-24 13:12) [9]

Leshiy ©   (22.04.04 06:19) [6]
А если на форме будут другие контролы (акромя TEdit"a)???

var
ar:array {[0..15]}of string;
...
J:= 0;
for i := 0 to Form1.ControlCount-1 do
if Form1.Components[i] is TEdit then
begin
  SetLength(Ar, J+1);
  ar[J] := (Components[i] as TEdit).Text;  
  Inc(J)
end

И вот нам уже всё равно сколько на форме контролов и какие они там.


 
Kto ©   (2004-04-24 13:12) [9]

Leshiy ©   (22.04.04 06:19) [6]
А если на форме будут другие контролы (акромя TEdit"a)???

var
ar:array {[0..15]}of string;
...
J:= 0;
for i := 0 to Form1.ControlCount-1 do
if Form1.Components[i] is TEdit then
begin
  SetLength(Ar, J+1);
  ar[J] := (Components[i] as TEdit).Text;  
  Inc(J)
end

И вот нам уже всё равно сколько на форме контролов и какие они там.


 
Kto ©   (2004-04-24 13:14) [10]

Что-то у меня не везде жирный шрифт нарисовался, но я думаю разобраться и найти отличия не сложно ;)


 
Kto ©   (2004-04-24 13:14) [10]

Что-то у меня не везде жирный шрифт нарисовался, но я думаю разобраться и найти отличия не сложно ;)


 
pavia   (2004-04-24 14:10) [11]

1 if Form1.Components[i] is TEdit then
2 (Components[i] as TEdit)
Это одно и тоже.


 
pavia   (2004-04-24 14:10) [11]

1 if Form1.Components[i] is TEdit then
2 (Components[i] as TEdit)
Это одно и тоже.


 
Kto ©   (2004-04-24 14:33) [12]

pavia   (24.04.04 14:10) [11]
Ага, сейчас, как же. Очень смешно. >:(

1 if Form1.Components[i] is TEdit then
проверка является ли i-тый компонент на форме экземпляром класса TEdit
(Components[i] as TEdit)
Обращение к компоненту как к TEdit"у (т.б. приведение типа). Если на самом деле Components[i] не TEdit, то будут траблы (логично не правда ли ?).

Components: array of TComponent;


 
Kto ©   (2004-04-24 14:33) [12]

pavia   (24.04.04 14:10) [11]
Ага, сейчас, как же. Очень смешно. >:(

1 if Form1.Components[i] is TEdit then
проверка является ли i-тый компонент на форме экземпляром класса TEdit
(Components[i] as TEdit)
Обращение к компоненту как к TEdit"у (т.б. приведение типа). Если на самом деле Components[i] не TEdit, то будут траблы (логично не правда ли ?).

Components: array of TComponent;


 
evvcom ©   (2004-04-24 16:30) [13]


> то будут траблы

Какие траблы?

> Если на самом деле Components[i] не TEdit

то
if Form1.Components[i] is TEdit
будет ложным.


 
evvcom ©   (2004-04-24 16:30) [13]


> то будут траблы

Какие траблы?

> Если на самом деле Components[i] не TEdit

то
if Form1.Components[i] is TEdit
будет ложным.


 
Kto ©   (2004-04-24 16:39) [14]

pavia   (24.04.04 14:10) [11]
1 if Form1.Components[i] is TEdit then
2 (Components[i] as TEdit)
Это одно и тоже.

Насколько я понял, из этого поста следует предложение один из пунктов убрать...

А траблы будут, если проверку не поставить. Согласись, будет возвращаться чёрт знает что, если попадётся неTEdit.


 
Kto ©   (2004-04-24 16:39) [14]

pavia   (24.04.04 14:10) [11]
1 if Form1.Components[i] is TEdit then
2 (Components[i] as TEdit)
Это одно и тоже.

Насколько я понял, из этого поста следует предложение один из пунктов убрать...

А траблы будут, если проверку не поставить. Согласись, будет возвращаться чёрт знает что, если попадётся неTEdit.


 
evvcom ©   (2004-04-24 16:44) [15]

Потерял немного нить того, кто чего сказал. Это pavia   (24.04.04 14:10) [11] не прав. Соглашаюсь...


 
evvcom ©   (2004-04-24 16:44) [15]

Потерял немного нить того, кто чего сказал. Это pavia   (24.04.04 14:10) [11] не прав. Соглашаюсь...


 
Piter ©   (2004-04-24 19:42) [16]

Kto (24.04.04 14:33) [12]
Обращение к компоненту как к TEdit"у (т.б. приведение типа).


не правда. Никаких траблов не будет.
as проверяет возможно ли приведение типов, иначе гененирует исключение.

Обращение же как к edit"у будет таково: TEdit(componentname).
и вот если тут componentname не TEdit - то будут траблы


 
Piter ©   (2004-04-24 19:42) [16]

Kto (24.04.04 14:33) [12]
Обращение к компоненту как к TEdit"у (т.б. приведение типа).


не правда. Никаких траблов не будет.
as проверяет возможно ли приведение типов, иначе гененирует исключение.

Обращение же как к edit"у будет таково: TEdit(componentname).
и вот если тут componentname не TEdit - то будут траблы


 
Kto ©   (2004-04-26 12:50) [17]

Piter ©   (24.04.04 19:42) [16]
Не знал. Проверил - убедился ;). Спасибо.


 
Kto ©   (2004-04-26 12:50) [17]

Piter ©   (24.04.04 19:42) [16]
Не знал. Проверил - убедился ;). Спасибо.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.035 c
14-1082369956
Aleksandr
2004-04-19 14:19
2004.05.09
Сколько брать за программу?


6-1078666286
Gym
2004-03-07 16:31
2004.05.09
TIdTCPServer + несколько клиентов.


3-1081526271
lockheed_man
2004-04-09 19:57
2004.05.09
Изменение данных в DBGrid


7-1080203192
ламерламер
2004-03-25 11:26
2004.05.09
динамическое создание формы


4-1079172047
Sur
2004-03-13 13:00
2004.05.09
TProcessEntry32





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский