Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Преобразование типов в Delphi!   Найти похожие ветки 

 
white   (2004-03-10 16:07) [0]

Пожалуйста подскажите где взять исходные тексты (или какими функциями воспользоваться для того, чтобы преобразовать например тип
Byte в ShortInt
Word в SmallInt
Word в LongWord
И т.д.
На C это делается легко а как с данной проблемой быть в Delphi?
За раннее благодарен
Александр!
Если не сложно напишите на мыло спасибо.


 
Игорь Шевченко ©   (2004-03-10 16:09) [1]

Оператор присваивания с этим очень хорошо справляется.
Пишется :=


 
Digitman ©   (2004-03-10 16:12) [2]

var
 vByte: Byte;
 vShortInt: ShortInt;
 vWord: Word;
 vSmallInt: SmallInt;
 vLongWord: LongWord;

..
vShortInt := vByte;
vSmallInt := vWord;
vLongWord := vWord;


 
Digitman ©   (2004-03-10 16:15) [3]


> white


правило простое :
если оба типа относятся к Cardinal-типам, то приведение сводится к простой операции присваивания


 
WebErr ©   (2004-03-10 17:08) [4]


> Игорь Шевченко ©   (10.03.04 16:09) [1]
> Digitman ©   (10.03.04 16:12) [2]
> Digitman ©   (10.03.04 16:15) [3]

Не, народ, ну вы чего!!! :))))
Я ничо не говорю - вы гении, но вообще-то человеку не это надо!
То про что вы говорите есть и в С/С++ присвоение без преобразования типов!!! :))))
Человек спрашивает, как преобразовать байтовую, например, переменную, например, в LongWord тип.
Делается это просто LongWord(переменная/значение/константа) или Byte(...). Как и с любым ordinal (не float) типом.
Т.е. SomeType(Value). :)


 
Юрий Зотов ©   (2004-03-10 17:12) [5]

> WebErr ©   (10.03.04 17:08) [4]
> Делается это просто

Делается это даже еще проще - не надо делать ничего. Целочисленные типы автоматически приводятся к нужному.


 
Digitman ©   (2004-03-10 17:15) [6]


> WebErr ©   (10.03.04 17:08) [4]



>  SomeType(Value)


а зачем ? компилятор и без этого прекрасно поймет, что от него требуется приведение типа ... вот когда не поймет, тогда уже можно и твою конструкцию явно написать


 
BlackLord2003 ©   (2004-03-10 17:19) [7]

Я лично думал, что ему надо ссылку на Demo, а вы...


 
Digitman ©   (2004-03-10 17:20) [8]


> WebErr


в 1-ю очередь то, о чем ты говоришь, может понадобиться при приведении указательного типа к целочисленному, поскольку указ.тип не относится, с т.з. компилятора, к кардинальному типу

иными словами, применение конструкций

 SomeCardinalType <- Cardinal(SomePointerType)
 SomePointerType <- Pointer(SomeCardinalType)

обосновано


 
PVOzerski ©   (2004-03-10 17:21) [9]

А если человеку, по Си-шной привычке или еще почему-либо, явное преобразование читать и понимать в коде удобнее? Так что см. [4].


 
WebErr ©   (2004-03-10 17:24) [10]


> Юрий Зотов ©   (10.03.04 17:12) [5]
> Digitman ©   (10.03.04 17:15) [6]

Хорошо, как вам такое, например!!! :))))

function SomeCalc(Value: Word): Boolean;
begin
 Result := (Value and $1000) <> 0;
end;

function SomeCalc(Value: LongWord): Boolean;
begin
 Result := (Value and $10000000) <> 0;
end;

...

IsCalc1 := SomeCalc(Word(Some));
IsCalc2 := SomeCalc(LongWord(Some));

Гы! :))))
Простая перегрузка функций с похожими типами может привести к непредсказуемым результатам! :))))


 
WebErr ©   (2004-03-10 17:27) [11]

Гы, а почему вы называете ординальный тип кардинальным?!!! :(


 
Тимохов ©   (2004-03-10 17:30) [12]

Можно высказаться? :))))))

Имхо иногда надо делать преобразование типов явно

var
  i: integer;
  v1, v2: variant;
begin
  i := v1 + v2; // работате медленне
  i := integer(v1) + integer(v2); // работает быстрее
end;


 
Digitman ©   (2004-03-10 17:32) [13]

вот ты лучше не ржал бы аки дитятко, а хотя бы по хэлпу прогулялся ... в поисках различий между ordinal- и cardinal-типами


> к непредсказуемым результатам


это из другой оперы


 
Digitman ©   (2004-03-10 17:49) [14]


> WebErr


и никто не спорит, что, например, в случае

var
 vByte: Byte;
 vInteger: Integer;
...
 vByte := 255;

//1.
 vInteger := Cardinal(vByte);
 showmessage(inttostr(vInteger));

//2.
 vInteger := ShortInt(vByte);
 showmessage(inttostr(vInteger));

1 и 2 дадут разные рез-ты


 
Игорь Шевченко ©   (2004-03-10 17:50) [15]

WebErr ©   (10.03.04 17:08)

Вопрос читай внимательно. И эта...не на конюшне, ржать не надо.


 
Я ©   (2004-03-10 18:29) [16]

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


 
Digitman ©   (2004-03-10 18:41) [17]


> [16]



> Уже надоел


а мне, знаешь ли, тоже не по душе тявканье из-за угла разного рода ... как бы это помягче сказать ... "личностей" ..

не согласен ? высказывай свою точку зрения ! с конкретными аргументами ! никто тебе не мешает

и будь столь любезен - зарегистрируйся, сударь, если желаешь адекватного отношения к своему "Я"


 
Тимохов ©   (2004-03-10 18:48) [18]

а-а-а-а
Я - это тот самы провокатор-ненавистник светло-сниних. Помню-помню.



Страницы: 1 вся ветка

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
6-1074156095
yurikon
2004-01-15 11:41
2004.03.28
Как победить sms-оператора


14-1077632293
Zendor
2004-02-24 17:18
2004.03.28
Delphi 8


3-1076917631
RavenD
2004-02-16 10:47
2004.03.28
Вопрос о точности данных!


3-1077301063
SoftFM
2004-02-20 21:17
2004.03.28
БД


3-1076274304
ser_ega
2004-02-09 00:05
2004.03.28
Database Desktop