Главная страница
    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.53 MB
Время: 0.025 c
3-1081274535
Deniska
2004-04-06 22:02
2004.05.09
Как указать TQuery чтобы он делал темпы не в текуще дериктории


1-1082042322
Erik
2004-04-15 19:18
2004.05.09
Анализ структуры файла.


1-1082700177
webpauk
2004-04-23 10:02
2004.05.09
OnClick


1-1082657485
K@rt
2004-04-22 22:11
2004.05.09
Список окон


14-1082043315
VMcL
2004-04-15 19:35
2004.05.09
Внимание, внимание!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский