Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2009, 12:14   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не используемые переменные оптимизатор отсекает, ИМХО.
Код:
procedure MyProc;
var i,j:integer;
     s:string;
begin
 i:=100;
 s:='';
 for j:=90 to 110 do s:=s+chr(j);
end;
бессмысленная процедура, но на ней видно что выделенное можно убрать.
если вы не используете переменную то зачем она вообще?
можете ответить на столь простой вопрос?
(кстати Дельфи за вас грязную работу делает, а вы недовольны)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.06.2009, 12:30   #12
dextering
Новичок
Джуниор
 
Регистрация: 14.06.2009
Сообщений: 12
По умолчанию

я знаю что дельфи делает всю грязную работу.оптимизатор никогда не отключал.я использую переменную,в ней храню значение, что бы потом использовать ее в дальнейшем.
сейчас смог решить проблему так - отключил оптимизатор, что считаю делать нельзя. откомпилировал. затем включил его. теперь компилятор спокойно видит переменную и ее обрабатывает. но если я сейчас попробую ввести новую переменную взамен какой либо старой. т.е. тупо поменяю название i на t то компилято уже видеть ее перестанет, будет считать ее неиспользуемой. в результате у меня не пашет алгоритм, где я использую эту переменную в качестве хранилища
dextering вне форума Ответить с цитированием
Старый 14.06.2009, 12:35   #13
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

dextering, советую перечитать каждый пост этого топика по 20 - 30 раз.. или сколько там тебе нада чтобы до тебя дошло.. если ты используешь переменную в качестве хранилища..тоесть ложешь туда значение, а потом извлекаешь - то компилятор все видит, а если ты дописал переменную при своил ей значение.. а код на ее использование не написал - то компилятор и не будет видеть ее.. выложи код в котором у тебя возникла данная проблема.. и тебе скажут шо и как исправить шобы оно работало.. что еще не понятно??
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 14.06.2009, 12:40   #14
dextering
Новичок
Джуниор
 
Регистрация: 14.06.2009
Сообщений: 12
По умолчанию

Код:
procedure addT3(var i,t:integer);
var zi,g,s,Wi_Uc,Wi_Up:real;
    g0:real;// вот эту переменную не видел компилятор пока его не отключил
begin
  Wi_Uc:=0;
  Wi_Up:=0;
  zi:=(DinDataModule.TD2.fieldbyname('Cost').asfloat+DinDataModule.TD2.fieldbyname('CostPlus').asfloat*(i-1));
  if DinDataModule.TD2.fieldbyname('year').asfloat<i then
  s:=zi*(1/((exp((t+1)*ln(DinDataModule.TD2.fieldbyname('KProdag').asfloat)))))
  else s:=zi*(1/((exp((t)*ln(DinDataModule.TD2.fieldbyname('KProdag').asfloat)))));
  g:=(DinDataModule.TD2.fieldbyname('KSoderg').asfloat)*zi*(t+1);
  if t=0 then g0:=(DinDataModule.TD2.fieldbyname('KSoderg').asfloat)*zi*(t+1);// вот тут я сохраняю значение в эту переменную
  if DinDataModule.TD2.fieldbyname('year').asfloat=i then
    begin
        searhT31(i,t);
        Wi_Uc:=g-DinDataModule.TD3.fieldbyname('s(t)').asfloat;
        if t>0 then
        begin
          searhT31(i,0);
          Wi_Up:=zi-DinDataModule.TD3.fieldbyname('s(t)').asfloat;
          searhT32(i,0);
          Wi_Up:=Wi_Up+g0;// вот тут я использую эту переменную
        end
        else
        begin
          searhT31(i,t);
          Wi_Up:=zi-DinDataModule.TD3.fieldbyname('s(t)').asfloat;
          searhT32(i,t);
          Wi_Up:=Wi_Up+g{DinDataModule.TD3.fieldbyname('g(t)').asfloat}
        end;
        Wi_Up:=Wi_Up-(s);
    end;

Последний раз редактировалось Квэнди; 14.06.2009 в 13:54.
dextering вне форума Ответить с цитированием
Старый 14.06.2009, 12:43   #15
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Может переменная объявлена в глобальном разделе или в другом модуле? И у вас получается 2 переменных одного имени
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 14.06.2009, 12:51   #16
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

dextering для кода пользуйся тегом CODE (решоточка)!!



Цитата:
if t=0 then g0:=(DinDataModule.TD2.fieldbyname( 'KSoderg').asfloat)*zi*(t+1);// вот тут я сохраняю значение в эту переменную
а значение t равно 0?? потому что иначе g0 остается не иницыализированой.. и в ней лежит безвесть шо..правильнее было бы написать так

Код:
g0:=0;
if t=0 then g0:=(DinDataModule.TD2.fieldbyname( 'KSoderg').asfloat)*zi*(t+1);
и дальше использовать..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 14.06.2009, 12:52   #17
dextering
Новичок
Джуниор
 
Регистрация: 14.06.2009
Сообщений: 12
По умолчанию

нет,нигде она не объявлена кроме процедуры, я говорю о том что открыв любую свою старую программу, где все работало и не было не используемых переменных и заменяя скажем i переменную на t, естественно не только в заголовке заменяю, но и по всему коду, компилятор перестает ее использовать.
туплю конечно страшно, сам это понимаю
dextering вне форума Ответить с цитированием
Старый 14.06.2009, 12:59   #18
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

если все так безнадежно - то попробуй переставить винду и делфи.. у меня все работает нормально.. открываю любой проект.. любой давности.. меняю переменные.. и все компилируется нормально.. и все работает отлично..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 14.06.2009, 13:02   #19
dextering
Новичок
Джуниор
 
Регистрация: 14.06.2009
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Ntlegend Посмотреть сообщение
Код:
g0:=0;
if t=0 then g0:=(DinDataModule.TD2.fieldbyname( 'KSoderg').asfloat)*zi*(t+1);
и дальше использовать..
именно так я раньше и писал, за сегодня код переписывал уже раз 30, вот не видет он эту переменную и все.


да то то и оно что времени нет на всякие переустановки, потому и помощи прошу, может у кого такая проблема была, в delphe то дилетант

Последний раз редактировалось dextering; 14.06.2009 в 13:05.
dextering вне форума Ответить с цитированием
Старый 14.06.2009, 22:02   #20
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Быть может, вы обнулили переменную, а t<>0 то g0=0 и получается что к Wi_Up вы прибавляете 0. Естественно вы результата не увидите. (Попробуйте ее не обнулить, а прировнять например еденице).
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компилятор Avel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 27.11.2008 18:14
Компилятор Лубышев Помощь студентам 7 15.10.2008 18:53
Компилятор С++ Sanek_ntsk Свободное общение 1 09.01.2008 19:14
Компилятор Simply-Art Свободное общение 1 22.09.2007 11:07
компилятор ZhekON Общие вопросы Delphi 6 13.09.2007 18:00