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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 16:07   #1
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
Вопрос переменная переменной...

на php это $$a
а как на Delphi 7?

Последний раз редактировалось sew960i; 23.02.2010 в 20:09.
sew960i вне форума Ответить с цитированием
Старый 23.02.2010, 16:10   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

указатель? ...вам собственно для какой цели.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 23.02.2010, 16:17   #3
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

ну вот пишу калькулятор валют... нужно минимум 30...
Вот код:
----------------------------------------
Код:
unit kurs;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sEdit, sComboBox, sSkinProvider, sSkinManager;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    sComboBox1: TsComboBox;
    sComboBox2: TsComboBox;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton3: TsButton;
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a,b: real;
  usd,uah,rur,eur: real;
implementation

{$R *.dfm}

procedure TForm1.sButton1Click(Sender: TObject);
begin
if ((sComboBox1.Text = 'из') or (sComboBox2.Text = 'в')) then
MessageDlg('Выберите курс валют!',mtWarning,[mbOk,mbCancel],0)
else
//////////////////////////////////////////////
if  (sComboBox1.Text = 'UAH') then
uah:=StrToFloat(sEdit1.Text)
else if (sComboBox1.Text = 'USD') then
uah:=(StrToFloat(sEdit1.Text)*7.998)
else if (sComboBox1.Text = 'EUR') then
uah:=(StrToFloat(sEdit1.Text)*10.812)
else if (sComboBox1.Text = 'RUR') then
uah:=(StrToFloat(sEdit1.Text)*0.265);
//////////////////////////////////////////////
usd:=(uah/7.998);
eur:=(uah/10.812);
rur:=(uah/0.265);
//////////////////////////////////////////////
if  (sComboBox2.Text = 'UAH') then
sEdit2.text:=floattostr(uah);
if  (sComboBox2.Text = 'USD') then
sEdit2.text:=floattostr(usd);
if  (sComboBox2.Text = 'EUR') then
sEdit2.text:=floattostr(eur);
if  (sComboBox2.Text = 'RUR') then
sEdit2.text:=floattostr(rur);
///////////////////////////////////////////////
end;

end.
-----------------------------------------------------------
Я просто подумал, что компактней будет если вместо
Код:
if  (sComboBox2.Text = 'UAH') then
sEdit2.text:=floattostr(uah);
if  (sComboBox2.Text = 'USD') then
sEdit2.text:=floattostr(usd);
if  (sComboBox2.Text = 'EUR') then
sEdit2.text:=floattostr(eur);
if  (sComboBox2.Text = 'RUR') then
sEdit2.text:=floattostr(rur);
------
написать так
Код:
sEdit2.text:=floattostr(из sComboBox2.Text как переменная);

Последний раз редактировалось sew960i; 23.02.2010 в 16:28.
sew960i вне форума Ответить с цитированием
Старый 23.02.2010, 16:32   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...заведите лучше массивчик
Код:
valyta: array[0..n] of string = ('UAN', 'USD', 'RUR', 'EUR', ...n);
и выборку не по тексту, а по свойству itemindex
Код:
sEdit2.text:= valyta[combobox.itemindex]
аналогично можете и с курсом поступить, а то и хранить в виде объекта items комбобокса.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 23.02.2010 в 16:34.
raxp вне форума Ответить с цитированием
Старый 23.02.2010, 16:32   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
sEdit2.text:=floattostr(из sComboBox2.Text как переменная);
||
||
||
\/
Код:
sEdit2.text:=sComboBox2.Text;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.02.2010, 17:05   #6
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

нет... мне не нужно чтоб в sEdit2.text выводилось значение sComboBox2.Text...
Мне нужно чтоб в sEdit2.text выводился результат перевода валюты...
из sComboBox2.Text берется только вид валюты... т.е. какую вывести...
Вот скрин ниже...
Изображения
Тип файла: jpg 1234567.JPG (24.4 Кб, 63 просмотров)
sew960i вне форума Ответить с цитированием
Старый 23.02.2010, 20:14   #7
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

Ну так что... У кого-нибудь есть еще идеи?
sew960i вне форума Ответить с цитированием
Старый 23.02.2010, 20:29   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Когда-то я делал конвертор валют простенький такой ...
Там в ComboBox`ах было "рубли" и "доллары" и все
Так вот все сводилось к этому (полный код не приведу - сам сделай):
Код:
  case sComboBox1.ItemIndex of
    0:case sComboBox2.ItemIndex of
        0:begin
          // наши действия - смотрим на индексы выбранных элементов в ComboBox`ах
          end;
        1:begin
          // наши действия - смотрим на индексы выбранных элементов в ComboBox`ах
          end;
      end;
    1:case sComboBox2.ItemIndex of
        0:begin
          // наши действия - смотрим на индексы выбранных элементов в ComboBox`ах
          end;
        1:begin
          // наши действия - смотрим на индексы выбранных элементов в ComboBox`ах
          end;
      end;
  end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 23.02.2010, 23:02   #9
sew960i
Пользователь
 
Регистрация: 24.01.2010
Сообщений: 34
По умолчанию

не... такой вариант мне не подходит...
у тебя было 2 вида валют... а мне нужно 30...
(я хочу записать так, чтоб код был максимально короткий...)
Вот само задание:
Цитата:
Курсы валют Нацбанка Украины (не менее 30 валют)
Калькулятор валют должен обеспечивать пересчет в гривневый эквивалент любой валюты.
Кроме того, калькулятор валют должен обеспечивать пересчет выбранной валюты в эквивалент любой другой.
Мне просто нужен ответ на первый пост...
Цитата:
переменная переменной...
------------------------------------
на php это $$a
а как на Delphi 7?

Последний раз редактировалось Stilet; 24.02.2010 в 07:24.
sew960i вне форума Ответить с цитированием
Старый 24.02.2010, 00:58   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Мне просто нужен ответ на первый пост...
иногда задачи в лоб не решаются, всегда есть нюансы в реализации...

...чтоб уменьшить код, нужно:
1- принять 1 валюту в качестве константы и хранить соотношения всех остальных к ней
2- используя combobox, грех не воспользоваться свойством tobject
3- использовать обратимость операций.
Код:
var valyta: array[0..3] of string = ('UAN', 'USD', 'RUR', 'EUR');
     kurs  : array[0..3] of integer = (1100, 150, 5500, 100);

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
 for i:= low(valyta) to high(valyta) do begin // заполняем комбо вне зависимости от кол-ва валют
  combobox1.Items.AddObject(valyta[i], TObject(kurs[i]));
  combobox2.Items.AddObject(valyta[i], TObject(kurs[i]))
 end 
end;

procedure TForm1.RxSpinEdit1Change(Sender: TObject);
begin
 if combobox1.ItemIndex=-1 then combobox1.ItemIndex:= 0; // обрабатываем, если пользователь забыл выбрать
 if combobox2.ItemIndex=-1 then combobox2.ItemIndex:= 0;
 //
 rxspinedit2.Value:= rxspinedit1.Value * // собственно выборка
                     Integer(combobox2.Items.Objects[combobox2.ItemIndex])/
                     Integer(combobox1.Items.Objects[combobox1.ItemIndex])
end;


procedure TForm1.RxSpinEdit2Change(Sender: TObject);
begin
 if combobox1.ItemIndex=-1 then combobox1.ItemIndex:= 0;
 if combobox2.ItemIndex=-1 then combobox2.ItemIndex:= 0;
 //
 rxspinedit1.Value:= rxspinedit2.Value *
                     Integer(combobox1.Items.Objects[combobox1.ItemIndex])/
                     Integer(combobox2.Items.Objects[combobox2.ItemIndex])
end;


procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 rxspinedit1.OnChange(nil)
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
 rxspinedit2.OnChange(nil)
end;
вот и весь калькулятор...


upd
-------

добавлю, чтоб не было недопонимания... подход изложенный мной, позволяет переводить из любой валюты в любую другую и обратно при том коде, что уже есть... наращивается только массивы соотношений валют и все.
Изображения
Тип файла: jpg Копировать из новый-2.jpg (10.8 Кб, 48 просмотров)
Вложения
Тип файла: zip обратимый калькулятор валют.zip (149.5 Кб, 12 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 24.02.2010 в 14:52.
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнуляется переменная Hippie Помощь студентам 1 09.01.2010 20:22
C++ [Глобальная переменная] Lemo Помощь студентам 2 26.10.2009 17:49
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06
Переменная не декрементируется Hypermaster Помощь студентам 10 19.04.2008 11:38
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47