Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DivMod [D6]


valua ©   (2007-03-23 15:38:00) 

Господа , прошу прощения за элементарный вопрос , но ...
Функция DivMod(Div:Integer,Del:Word,var:Result,Remainder:Word)

var Del,Remainder:Words;
    Result,Div:Integer;
   .....


определяю переменные в соответствии с типами функции.

пишу ->
  DivMod(X,Del,Result,Remainder)

выдает ошибку на Remainder.
Господа как правильно описать типы , что не так .
Всем спасибо .


valua   (2007-03-26 10:51:00) [1]

Господа , прошу прощения за свой вопрос . Пятница - действительно не мой день .
Ошибка в том , что  
      DivMod(ix1, Div, Result, Remainder);
  Div -  выходит за границы предела значения типа Word - 65500 .
Вот и весь глюк .
Если число Div > 65500 , надо писать свою функцию .


RASkov   (2007-03-23 17:54:00) [2]

> Если пишу   Result:Word!  , дает ошибку ->
>    Identifier redeclaried : "result" .

В каждой функции переменная Result обявлена неявно, и в нее записывается результат функции.


Desdechado   (2007-03-23 17:48:00) [3]

Почитай хоть про типы данных, что ли.
Не каждой число подойдет для запихивания в любой тип данных.


valua   (2007-03-23 17:43:00) [4]

Если пишу   Result:Word!  , дает ошибку ->
    Identifier redeclaried : "result" .

Если пишу   d := 1000000; (d:Word;) - дает еще и ошибку на эту строку ,

кто знает как правильно определить типы , и как правильно записать (мне надо делить на 1000000 , 10000 и т.д.) .
Всем спасибо .

var  X:Real;
    str:String;
    ix1:Integer;
    Remainder:Word;
    Resullt:Word;

begin
  str := FloatToStr(int(X));
  ix1 := StrToInt(str);
  DivMod(ix1,1000000,Result,Remainder);

Попробуйте на практике , все написано как в справочнике .
Если убираю  Resullt:Word;    -  дает ошибку .


Правильный Вася   (2007-03-23 17:21:00) [5]

> Del:Word,
> 1000000
не сходицца


Elen   (2007-03-23 16:37:00) [6]


>  Resullt:Integer;

Вместо этого пиши Result:Word!


Loginov Dmitry   (2007-03-23 16:30:00) [7]

См [1]


Сергей М.   (2007-03-23 16:29:00) [8]

Удалено модератором


valua   (2007-03-23 16:21:00) [9]

Спасибо , сегодня явно не мой день , но теперь другая ошибка (надо
сделать) :
var  X:Real;
     ix1:Integer;
     Remainder:Word;
     Resullt:Integer;

begin
   str := FloatToStr(int(X));
   ix1 := StrToInt(str);
   DivMod(ix1,1000000,Result,Remainder);

выдает ошибку  на Result ->
constant expression violates subrange bounds


Elen   (2007-03-23 15:53:00) [10]


> Функция DivMod(Div:Integer,Del:Word,var:Result,Remainder: Word)
>
> var Del,Remainder: Word s;

Разницу видишь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо