Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.07.2014, 00:44
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Проблема с StrToint

Имеется код
Код:
uMem.GetAppStr(edApp.Text,StrToInt( '$'+edit1.Text + edit2.Text + edit3.Text));
Но в edit2 могут быть и числа и буквы.
Если числа, то все работает хорошо, если буквы/буквы+числа, то ошибка.
Как можно исправить чтобы работало с буквами?
Ответить с цитированием
  #2  
Старый 17.07.2014, 00:49
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Еще интересным фактом будет то, что edit3 равен 'ED88' - буквы/числа, но не выдает ошибку при цифрах в edit2.
Ответить с цитированием
  #3  
Старый 17.07.2014, 05:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

HextToInt???
А еще есть набор тех же функций, но начинающийся с Try (TryStrToInt, например).
Ответить с цитированием
  #4  
Старый 17.07.2014, 08:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Как вариант — писать перед "буквами" нуль.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 17.07.2014, 11:50
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Как вариант — писать перед "буквами" нуль.

Или я что-то делаю не так?
Цитата:
Сообщение от Imikle
HextToInt???
А еще есть набор тех же функций, но начинающийся с Try (TryStrToInt, например).
Можете помочь кодом? Уже не варит голова.
Ответить с цитированием
  #6  
Старый 17.07.2014, 12:01
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Странно как-то, у меня вот такой код работает на ура:
Код:
var
  s:string;
  n:Integer;
begin
  s:='0C3';
  n:=StrToInt('$'+s);
  ShowMessage(IntToStr(n));
end;
возможно у вас не тройка а буква "З".
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 17.07.2014, 12:12
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Странно как-то, у меня вот такой код работает на ура:
Код:
var
  s:string;
  n:Integer;
begin
  s:='0C3';
  n:=StrToInt('$'+s);
  ShowMessage(IntToStr(n));
end;
возможно у вас не тройка а буква "З".

Код:
var
i: integer;
...
i:= StrToInt('$' + edit1.Text + edit2.Text + edit3.Text);
Button1.Caption:= uMem.GetAppStr(edApp.Text,i);
Ответить с цитированием
  #8  
Старый 17.07.2014, 12:36
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ну вот такое еще приходит на ум: попробуй сделать вызов так SysUtils.StrToInt
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #9  
Старый 17.07.2014, 12:46
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
s := '$'+edit1.text+edit2.test+edit3.text;
i := strtoint(s);
проверь, чему равен s
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #10  
Старый 17.07.2014, 13:26
Denisonin Denisonin вне форума
Прохожий
 
Регистрация: 25.11.2013
Сообщения: 42
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Код:
s := '$'+edit1.text+edit2.test+edit3.text;
i := strtoint(s);
проверь, чему равен s
Значение Edit2 выводит ошибку.
Ответить с цитированием
  #11  
Старый 17.07.2014, 13:36
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не увидел чтоли что я опечатался и вместо text написал test?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #12  
Старый 17.07.2014, 14:26
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Есть ещё старая ламповая функция VAL

Код:
var
  i:integer;
  s:string;
  c:integer;



  s:='$' + 'ab0' + 'qwerty';

  val(s,i,c);
  if c <> 0  then begin // значит в строке есть неправильный символ
     s := copy(s,1,c);
     val(s,i,c);
  end;
Ответить с цитированием
  #13  
Старый 17.07.2014, 16:29
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от icWasya
Есть ещё старая ламповая функция VAL
StrToInt именно ее и вызывает
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #14  
Старый 17.07.2014, 17:05
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

>Есть ещё старая ламповая функция VAL
>StrToInt именно ее и вызывает
Но важно, что делать, когда в строке есть неправильные символы.
StrToInt выдаёт Exception , TryStrToInt просто сообщает, что ошибка была , а у меня пытается преобразовать в число начало строки до первого ошибочного символа.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter