Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизПреобразование типов в 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c