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

Вниз

i1, i2, i3 и т.д.   Найти похожие ветки 

 
Елена   (2002-02-04 11:12) [0]

У меня имеется множество переменных вида i1, i2, i3 и т.д.
Как мне в цикле присвоить им определенные значения?
Заранее благодарна.


 
Виктор Щербаков   (2002-02-04 11:17) [1]

Для этих целей и нужны массивы
...
var a: array[1..3] of Integer;
i: Integer;
begin
for i := 1 to 3 do
a[i] := SomeValue //нужное значение
end;


 
Елена   (2002-02-04 11:23) [2]

Нет, мне с i1, i2, i3 и т.д., пожалуйста :)


 
drpass   (2002-02-04 11:32) [3]

Никак. Конечно, можно поиздеваться с указателями... но это может не получиться. Используй массив


 
Виктор Щербаков   (2002-02-04 11:35) [4]

Елена (04.02.02 11:23)
Издеваешься? :)
Для доступа к переменной по её номеру (это называется индекс), используются массивы.
Если для переменных i1, i2, i3... планировался доступ по индексу, нужно было объявить массив:
var i: array[1..3] of SomeType;


 
Digitman   (2002-02-04 13:18) [5]


var
i1, i2, i3: Integer; //блок смежных однотипных деклараций
i: Integer;
p: PInteger;

...
p:= @i1;
for i:= 1 to 3 do begin
p^:= ...
Inc(p);
end;




 
Алексей Петров   (2002-02-04 13:25) [6]

> Digitman © (04.02.02 13:18)
Работать будет, но шаг вправо, шаг влево - расстрел на месте Access Violation-ом :)


 
Digitman   (2002-02-04 13:26) [7]


var
i1, i2, i3: Integer; //блок смежных (!) однотипных (!)деклараций переменных (статических либо динамических)
i: Integer;
p: PInteger;

...
p:= @i1;
for i:= 1 to 3 do begin
p^:= Integer-значение;
Inc(p);
end;




 
Алексей Петров   (2002-02-04 13:33) [8]

А что от ! в комментариях код станет надежнее? :)

Где гарантии, что оптимизатор не выкинет, например, i2 как не нужную? Текущие версии выкидывают либо весь блок либо оставляют весь - но это особенность реализации и нет никаких гарантий, что работать будет в D7 например.

И нет гарантий, что в будующем компиляторе не поменяют их порядок в стеке.

Причем никаких предупреждений при компиляции не будет.

Этот код работоспособен, но не надежен. Такими приемами пользоваться, ИМХО, крайне не желательно.


 
Digitman   (2002-02-04 13:47) [9]

>Алексей Петров
Каков вопрос - таков ответ) решение-то существует, согласись ? Пусть даже и ненадежное ... вопросы надежности - уже на совести автора)


 
Alx2   (2002-02-04 13:48) [10]

Гора к Магомету не пошла :) Вот, в качестве стеба:
var i_p : array [1..3] of ^integer;
begin
i_p[1]:=@i1;
i_p[2]:=@i2;
i_p[3]:=@i3;
for k := 1 to 3 do i_p[k]^ := k;
end;


 
Алексей Петров   (2002-02-04 14:13) [11]

> Digitman © (04.02.02 13:47)
Против того, что это решает поставленную задачу я и не возражал, но ... :)



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
1-57148
-=VIT=-
2002-01-31 10:28
2002.02.18
Как наверняка


1-57072
Zool
2002-02-01 16:45
2002.02.18
Здравствуйте уважаемые Программисты! Ну помогите чайнику!


1-57055
Dim
2002-02-04 13:21
2002.02.18
Что такое TAddTeeFunction ?


1-57143
EsKor
2002-01-31 08:37
2002.02.18
Свойство Enabled компонента TGroupBox


1-57095
Ghost.
2002-02-01 10:20
2002.02.18
Cчетчик времени





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