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

Объясните пожалуйта, как перечисления преобразовывать в числа? type TMagic =

(
Mag1 = 1,
Mag5 = 2,
Mag7 = 3
);

procedure test1(mag: TMagic);
begin
MessageBox(0, IntToStr(mag),'',0);
end;

22 ответов

28 просмотров

ord(x) любая школьная книжка по Паскалю

Кастовать.... К типам. Или брать порядок.

procedure test1(mag: TMagic); begin MessageBox(0, Integer(mag),'',0); end;

Не могу удержаться....я

Ruslan-aka DUDE Автор вопроса
Arioch The
ord(x) любая школьная книжка по Паскалю

MessageBox(0, IntToStr(ord(mag)),'',0); // Incompatible type for arg no. 2: Got "AnsiString", expected "PChar" MessageBox(0, ord(mag),'',0); // Incompatible type for arg no. 2: Got "LongInt", expected "PChar"

Ruslan aka DUDE
MessageBox(0, IntToStr(ord(mag)),'',0); // Incompa...

MessageBox(Handle, Integer(mag).ToString(),'',0);

Ruslan-aka DUDE Автор вопроса
Alexey Gavrilov
procedure test1(mag: TMagic); begin MessageB...

MessageBox(0, IntToStr(Integer(mag)),'',0); // Incompatible type for arg no. 2: Got "AnsiString", expected "PChar" MessageBox(0, Integer(mag),'',0); // Incompatible type for arg no. 2: Got "LongInt", expected "PChar"

Alexey Gavrilov
MessageBox(Handle, Integer(mag).ToString(),'',0);

а вот это как раз опасно, ибо SizeOf(mag) < SizeOf(integer) 😃

Arioch The
а вот это как раз опасно, ибо SizeOf(mag) < SizeOf...

Это посыл... Куда идти 😊 Ну... MsgBox, от такой, опять надо кастовать.

Ruslan-aka DUDE Автор вопроса
Alexey Gavrilov
MessageBox(Handle, Integer(mag).ToString(),'',0);

MessageBox(0, Integer(mag).ToString(),'',0); // Incompatible type for arg no. 2: Got "AnsiString", expected "PChar"

Ruslan-aka DUDE Автор вопроса
А
Ну впиши pchar(inttostr() )

Вот это сработало, но бред же почему pchar требуется для IntToStr, только в том случае если в него передано перечисление?

Ruslan aka DUDE
Вот это сработало, но бред же почему pchar требует...

Какой бред? Открой описание процедуры показа сообщения

Ruslan aka DUDE
MessageBox(0, Integer(mag).ToString(),'',0); // In...

MessageBox(Handle, PChar(Integer(mag).ToString()),'',0); MessageBox(Handle, PChar(Format('Value =%d'), [Integer(mag)]),'',0);

Alexey Gavrilov
Это посыл... Куда идти 😊 Ну... MsgBox, от такой, о...

что ж тут сделаешь, если мышки плачут, колются, но нe хотят использовать TTastDialog ///но все таки кастовать к integer тут опасно, не стоит в человеке плохую привычку создавать

Alexey Gavrilov
MessageBox(Handle, Integer(mag).ToString(),'',0);

кстати, вчера заменил все MessageBox на Application.*, ибо API- шный глючит

Iluha Companets
кстати, вчера заменил все MessageBox на Applicatio...

А я на QuestionDialog. Кастомизация предсказуемая https://t.me/Delphi_Lazarus/292093?single

Ed Doc
А я на QuestionDialog. Кастомизация предсказуемая ...

мне главное - не кастомизация, а нормальное поведение в мультиоконном приложении. API прятался за немодальными окнами! да и ненужный механизм передачи хэндла - подтверждкние тому, что это не вписывается в LCL

Arioch The
а вот это как раз опасно, ибо SizeOf(mag) < SizeOf...

чем? это PInteger(@mag)^ опасен. integer(mag) компилятор должен обезопасить

zamtmn
чем? это PInteger(@mag)^ опасен. integer(mag) комп...

Где написано, что должен? И что такое "обезопасить"? Если бы ты кастовал другой целочисленный тип - то да. Но ты кастуешь просто абстрактный тип. Так что я бы предпочёл не рисковать. Либо идти по никому уровню и использовать byte/shortint и лапками контролировать SizeOf с обмазыванием assert'ами, либо идти по высокому уровню и писать Ord, который и предназначен для этого изначально, и будучи функцией не зависит от размера данных.

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта