169 похожих чатов

Кто-То может объяснить логику Delphi: Вот так не работает, пишет, что

нет overloaded функции

function GetVal(var AVal: Int64): Boolean;

var Val: UInt32;
GetVal(Int64(Val));

А вот так работает:

function GetVal(var AVal: Integer): Boolean;

var
Val: UInt32;
GetVal(Integer(Val));

Это из-за разной разрядности?

22 ответов

46 просмотров

Видимо да, из-за разного размера

разный размер переменных. мне, к слову, другое пишет: [dcc32 Error] Unit15.pas(36): E2197 Constant object cannot be passed as var parameter

Чо, так можно приводить? Не верю)

Катерина Свиридова
Чо, так можно приводить? Не верю)

приводить можно. но такая фигня получается (ц) анекдот

Alex-Egorov Автор вопроса

Типы разные, а при var - типы должны быть идентичные.

Alexander 👋
Типы разные, а при var - типы должны быть идентичн...

необязательно, на самом деле, но конкретно тут язык отказывается приводить к типу другого размера

Igor
необязательно, на самом деле, но конкретно тут язы...

Основы Паскаля и статической типизации

Alexander 👋
Основы Паскаля и статической типизации

вот этот код работает прямо сейчас: var currSubnet, commonSubnet: Cardinal; ... if subnets.FindFirst(Integer(currSubnet), dummy) then repeat у FindFirst оба параметра передаются по ссылке

Alex-Egorov Автор вопроса
Alexander 👋
Основы Паскаля и статической типизации

Главное понимать, что делаешь и какие могут быть подводные камни

Alexander 👋
Не правильно это

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

Handatros
почему нет? если автор кода так видит

Это говнокод: могут возникнуть проблемы с безопасностью кода. Но если автор так видит, автору решать.

Alexander 👋
Это говнокод: могут возникнуть проблемы с безопасн...

бывают случаи что не говнокод. и вот так бывает не говнокод, хотя можно расписать лучше: function TMedicalFile.Read64Float(SeekTo: integer; NeedSwap: boolean): double; var Temp: int64 absolute Result;

Handatros
бывают случаи что не говнокод. и вот так бывает не...

Бывают, но @rouse_79 раскритиковал такой код. Хотя такой вариант по мне норм.

Alexander 👋
Бывают, но @rouse_79 раскритиковал такой код. Хотя...

угу, он лучше решение приводил. но мне в целом норм и так

Alexander 👋
Бывают, но @rouse_79 раскритиковал такой код. Хотя...

Я не критиковал, а разьяснял что это может применяться только в тех случаях для которых оно и было задумано, а именно для обхода ограничений языка. А таковых случаев на практике мне встречался только один, во всех других достаточно было адресной арифметики.

В декларации знаковое 64-битное целое, при вызове пытаешься передать беззнаковое 32-битное. Очевидно, компилеру нужно указать явное приведение и показать, что ты понимаешь, что делаешь. P.S. Т.е. логика такая: приводишь к 32-разрядному Integer, а он уже совместим по типу с Int64

Alex-Egorov Автор вопроса
Vitaly
В декларации знаковое 64-битное целое, при вызове ...

Не пропускает и при приведении к Integer

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Если подытожить: По мнению Розыча и Хемуля и др. - предпочтительно по возможности объявлять в секции имплементации потому-что: 1) Выше скорость компиляции 2) Не замусоривается...
notme
7
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
В дельфе нет никакого коробочного (без установки третьих либ) способа получить CallStack с расшифровкой отладочных символов?
notme
7
Приветики всем!)) Подскажите: есть функция, которая записывает число типа Cardinal в четыре байта, хранимые в TBytes. Можете помочь мне, показав, как должна выглядеть функци...
Моринаро
5
Карта сайта