Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-1073999614
Bart
2004-01-13 16:13
2004.03.28
idHTTP using proxy connect


3-1076403255
SM
2004-02-10 11:54
2004.03.28
Как узнать значение автоинкрементарного поля после SQL


8-1069161347
Morg
2003-11-18 16:15
2004.03.28
Как сделать мгновенную перерисовку в Image


1-1079032108
ChcngerMan
2004-03-11 22:08
2004.03.28
DLL


14-1077963180
Алексей
2004-02-28 13:13
2004.03.28
Row Report где достать.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский