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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 18:45   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
Сообщение Несоответствие типов

Такой вопрос, мучает меня давно...
имеется строка
str:='bsSizeable';
Возможно ли присвоить str как-нить Form1.BorderStyle-у , как если бы я выполнил след. оператор- Form1.BorderStyle:=bsSizeable;:conf used:
Form1.BorderStyle:=str; - не работает оно и понятно...

bsSizeable-имя константы
str - имя константа в значении которого лежит имя другой константы
иначе говоря значение str надо воспринимать как имя другой константы.
Спасибо.
nusik вне форума Ответить с цитированием
Старый 28.05.2009, 19:29   #2
EugeneIsmatulin
Пользователь
 
Аватар для EugeneIsmatulin
 
Регистрация: 24.05.2009
Сообщений: 64
По умолчанию

а так пробовал
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  str : TFormBorderStyle;
begin
  str:= bsDialog;
  Form1.BorderStyle:= str;
end;
EugeneIsmatulin вне форума Ответить с цитированием
Старый 28.05.2009, 20:36   #3
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Цитата:
Сообщение от EugeneIsmatulin Посмотреть сообщение
а так пробовал
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  str : TFormBorderStyle;
begin
  str:= bsDialog;
  Form1.BorderStyle:= str;
end;

напоминаю
str : string;
nusik вне форума Ответить с цитированием
Старый 29.05.2009, 00:27   #4
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

а чем простой оператор if не подходит??

Код:
var
  str : string;
******************

procedure TForm1.Button1Click(Sender: TObject);
begin
  if str='bsSizeable';
    then  Form1.BorderStyle:= bsSizeable;
end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 29.05.2009, 01:20   #5
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Цитата:
if str='bsSizeable';
then Form1.BorderStyle:= bsSizeable;
1)можно использовать только str и свойтсво Form1.BorderStyle
2) и еще известно что str='bsSizeable'
Используя вышеук. пункты надо добиться результата как если бы мы написали:
Form1.BorderStyle:= bsSizeable;
мы не знаем про константу bsSizeble...
есть только str со значением 'bsSizeable'.
Вариант
Form1.BorderStyle:= str; не катит...
Надеюсь хоть сейчас понятно написал.
nusik вне форума Ответить с цитированием
Старый 29.05.2009, 02:22   #6
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Может так пойдет:
Код:
var
  str: String;
  P: Pointer;
begin
 str := 'bsNone';
 p := @str;
 Form1.BorderStyle := TFormBorderStyle(p^);
или:

Код:
var
  str: String;
begin
 str := 'bsNone';
 Form1.BorderStyle := TFormBorderStyle(Pointer(str)^);

Последний раз редактировалось Stilet; 29.05.2009 в 12:40.
Evgeniy26 вне форума Ответить с цитированием
Старый 29.05.2009, 07:34   #7
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
или:

var
str: String;
begin
str := 'bsNone';
Form1.BorderStyle := TFormBorderStyle(Pointer(str)^);
а лутче сразу так:

Код:
var
  str: String;
begin
 str := 'bsNone';
 Form1.BorderStyle := TFormBorderStyle(Pointer($FFFFFFFE)^);
будет еще веселее.

Последний раз редактировалось Stilet; 29.05.2009 в 09:30.
Ring0Sn вне форума Ответить с цитированием
Старый 29.05.2009, 09:27   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Я считаю что лучшее решение

Код:
const
  TFormBorderStyleStr: array[TFormBorderStyle] of String =
    ('bsNone', 'bsSingle', 'bsSizeable', 'bsDialog', 'bsToolWindow', 'bsSizeToolWin');

function FormBorderStyleToStr(const Value: String): TFormBorderStyle;
var
  i: TFormBorderStyle;
begin
  Result := bsNone;
  for i := Low(TFormBorderStyleStr) to High(TFormBorderStyleStr) do
  if SameText(TFormBorderStyleStr[i], Value) then
  begin
    Result := i;
    Break;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BorderStyle := FormBorderStyleToStr('bsSizeable');
end;
BOBAH13 вне форума Ответить с цитированием
Старый 29.05.2009, 09:32   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Такой вопрос, мучает меня давно...
Прекращай мучаться. в таком виде как ты хочеш не выйдет.
Это все равно что жарить яичницу в бейсболке.
Луче обьясни для чего такие извраты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.05.2009, 15:57   #10
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Цитата:
Сообщение от Ring0Sn Посмотреть сообщение
а лутче сразу так:

Код:
var
  str: String;
begin
 str := 'bsNone';
 Form1.BorderStyle := TFormBorderStyle(Pointer($FFFFFFFE)^);
будет еще веселее.
Было сказано:
Цитата:
и еще известно что str='bsSizeable'
Evgeniy26 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
try-except, перевод типов max38934 Общие вопросы Delphi 2 24.05.2009 10:55
Си. Преобразование типов pif Помощь студентам 3 20.04.2009 13:54
Преобразование типов DeFace Общие вопросы C/C++ 4 24.03.2009 17:06
преобразование типов в Си HoOpe Помощь студентам 5 11.03.2009 21:58
Преобразование типов MAKEDON Общие вопросы C/C++ 3 02.03.2009 18:27