Главная страница
    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.036 c
14-1078234550
Asd
2004-03-02 16:35
2004.03.28
Книги


3-1077888824
nejest
2004-02-27 16:33
2004.03.28
в запрос не хочет вычислятся count


4-1073743323
volser
2004-01-10 17:02
2004.03.28
Перехват вставки


7-1073641355
selena
2004-01-09 12:42
2004.03.28
принтер


1-1078469102
Alex_DM
2004-03-05 09:45
2004.03.28
Вызов модального окна. Возможно ли это?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский