Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 427

/ вопрос открыт /

Здравствуйте, не могли бы вы мне помочь:

ввожу 5 - пишет invalid numeric input
не подскажите почему?
мне нужен именно тип int64

2) можно ли использовать тип int64 в качестве типа параметра функции/процедуры?

Заранее спасибо!

Приложение:
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses SysUtils;
  6. var a:int64;
  7. begin
  8. read(a);
  9. write(a);
  10.  
  11. end.
  12.  


Ruslan Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ruslan (статус: 1-ый класс)
Вопрос отправлен: 21 ноября 2009, 21:03
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 22 ноября 2009, 17:30; участников в обсуждении: 4.
Ruslan

Ruslan (статус: 1-ый класс), 21 ноября 2009, 21:04 [#1]:

у меня RAD Studio 9
T$imokhin

T$imokhin (статус: 1-ый класс), 22 ноября 2009, 00:54 [#2]:

Вы, случайно, не вводите еще и пробел? Такое тоже может быть.
Пробовали на других типах (word, byte, longint)?
//Лично я, с такой ошибкой не сталкивался...
-------
"Вечна жыві і квітней Беларусь"
IlluminatI

IlluminatI (статус: 2-ой класс), 22 ноября 2009, 01:35 [#3]:

после некоторого поиска, я пришел к выводу, что int64 с клавиатуры считать нельзя (причем, похоже только в 2009 версии, в Delphi 7 все прошло отлично). возможно, это неверно, дождемся экспертов. но код
uses
  SysUtils;
var a: int64;
begin
 a:=5;
 writeln(a);
 readln;
end.
работает отлично. Насчет второго - практически любой тип переменной можно использовать в качестве параметра процедуры/функции
Ruslan

Ruslan (статус: 1-ый класс), 22 ноября 2009, 01:47 [#4]:

догадался!)
на самом деле конечно серьезный баг,
но считываемо с помощью строки
var n,pr:int64;
    s:string;
    i:integer;
begin
  read(s);pr:=1;
  for i:=length(s) downto 1 do
    begin
      n:=n+(ord(s[i])-ord('0'))*pr;
      pr:=pr*10;
    end;
   {Получили n}
end.
Паровоз

Паровоз (статус: 10-ый класс), 22 ноября 2009, 17:30 [#5]:

Такая ошибка происходит не только с int64, но и с cardinal (longword): http://qc.embarcadero.com/wc/qcmain.aspx?d=73372

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:36
Выполнено за 0.02 сек.