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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2007, 01:24   #1
Максим-2
Пользователь
 
Аватар для Максим-2
 
Регистрация: 01.07.2007
Сообщений: 30
По умолчанию про VAL

ребята! Почему-то не происходит преобразование в строки
в число:


var
s,code : integer;
begin
val(Edit1.text,S,сode);
end;

не пойму почему?
Максим-2 вне форума Ответить с цитированием
Старый 19.07.2007, 02:15   #2
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Потому что str и val в Delphi нет.
В Delphi конвертируют так

из integer в string
var i:integer;
begin
Edit1.Text:=IntToStr(i);

Из string в integer
i:=StrToInt(Edit1.Text);

Для real так же, только вместо Real пишеться Float (напр. StrToFloat)

Последний раз редактировалось Viteef; 19.07.2007 в 04:06.
Viteef вне форума Ответить с цитированием
Старый 19.07.2007, 09:23   #3
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Как это в Delphi нету

А как StrToInt тогда работал бы:
Код:
function StrToInt(const S: string): Integer;
var
  E: Integer;
begin
  Val(S, Result, E);
  if E <> 0 then ConvertErrorFmt(@SInvalidInteger, [S]);
end;
Val, Str, модуль System.

Соглашусь только, что в Delphi конвертировать между форматами принято StrToStr и StrToInt. Но если хочется, и не нужна обработка исключения конвертирования (лишний код), то пожалуйста.
Net вне форума Ответить с цитированием
Старый 22.07.2007, 11:38   #4
Максим-2
Пользователь
 
Аватар для Максим-2
 
Регистрация: 01.07.2007
Сообщений: 30
По умолчанию

так оператор val должен же преобразовывать строку в число! и без StrToInt или как?
Максим-2 вне форума Ответить с цитированием
Старый 22.07.2007, 11:52   #5
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Цитата:
Сообщение от Максим-2 Посмотреть сообщение
так оператор val должен же преобразовывать строку в число! и без StrToInt или как?
Посмотрите внимательно выдержку из VCL. StrToInt использует более низкоуровневый Val, а не наоборот.
StrToInt является обычной функцией-оберткой, предусматривающей обработку исключений, потому и рекомендуется к использованию.
Net вне форума Ответить с цитированием
Старый 22.07.2007, 11:59   #6
Максим-2
Пользователь
 
Аватар для Максим-2
 
Регистрация: 01.07.2007
Сообщений: 30
По умолчанию

Тогда зачем вообще существует val ? это что-то типа устаревшего и ненужного ?
Максим-2 вне форума Ответить с цитированием
Старый 22.07.2007, 12:05   #7
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Эта и еще большая куча функций исторически мигрировала с паскаля, как поддержка кода, написанного еще на нем, видимо. Либо, в 1-й Delphi не было еще StrToInt, IntToStr (я не знаю), и она использовалась там штатно.
Net вне форума Ответить с цитированием
Старый 22.07.2007, 12:29   #8
Максим-2
Пользователь
 
Аватар для Максим-2
 
Регистрация: 01.07.2007
Сообщений: 30
По умолчанию

ТО есть VAL ом лучше не пользоваться? в нем нет никакого толку все могут заменить IntToStr и StrToInt? да?
Максим-2 вне форума Ответить с цитированием
Ответ


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