и id записи. На Delphi я делал так:
ComboBox1.Items.AddObject('Какое-то значение', Pointer(id записи));
В Лазаре подобное не компилится. Говорит: Error: Incompatible type for arg no. 2: Got "Pointer", expected "TObject". Если создать объект TObject как Pointer, то с ним тоже не хочет. Есть совет?
TObject(Pointer(id записи))
От души, братец! Здоровья тебе крепкого 🤝
Емнип в режиме Делфи должно сработать. В фпц нужен составной каст
А может ещё подскажешь, нужно ли такую штуку побеждать? Или игнорировать? Warning: Conversion between ordinals and pointers is not portable Это на моменте, когда я Pointer передаю поле в "AsInteger"
привести указатель к числу PtrInt(p) не помешает
Помогло! Решил погуглить, что это и нейросеть ответила: PtrInt в Lazarus — это целочисленный тип со знаком, который имеет тот же размер, что и указатель. 12 PtrInt считается опасным и почти никогда не должен использоваться в реальном коде, потому что указатели обычно беззнаковые.
вряд ли там настоящие указатели лежат, скорее небольшие числа
А если будет -1?
Взорвется и разворотит всё хлебало. ©️ Такой чтоли ответ ждешь? 😂
Если что признак знака в проце есть только у плавающих. Все остальное беззнаковое
Обсуждают сегодня