(
Mag1 = 1,
Mag5 = 2,
Mag7 = 3
);
procedure test1(mag: TMagic);
begin
MessageBox(0, IntToStr(mag),'',0);
end;
ord(x) любая школьная книжка по Паскалю
Кастовать.... К типам. Или брать порядок.
procedure test1(mag: TMagic); begin MessageBox(0, Integer(mag),'',0); end;
Не могу удержаться....я
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"
Ну впиши pchar(inttostr() )
MessageBox(Handle, Integer(mag).ToString(),'',0);
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"
а вот это как раз опасно, ибо SizeOf(mag) < SizeOf(integer) 😃
https://t.me/Delphi_Lazarus/293215
Это посыл... Куда идти 😊 Ну... MsgBox, от такой, опять надо кастовать.
MessageBox(0, Integer(mag).ToString(),'',0); // Incompatible type for arg no. 2: Got "AnsiString", expected "PChar"
https://t.me/Delphi_Lazarus/293210
Вот это сработало, но бред же почему pchar требуется для IntToStr, только в том случае если в него передано перечисление?
Какой бред? Открой описание процедуры показа сообщения
MessageBox(Handle, PChar(Integer(mag).ToString()),'',0); MessageBox(Handle, PChar(Format('Value =%d'), [Integer(mag)]),'',0);
что ж тут сделаешь, если мышки плачут, колются, но нe хотят использовать TTastDialog ///но все таки кастовать к integer тут опасно, не стоит в человеке плохую привычку создавать
кстати, вчера заменил все MessageBox на Application.*, ибо API- шный глючит
А я на QuestionDialog. Кастомизация предсказуемая https://t.me/Delphi_Lazarus/292093?single
мне главное - не кастомизация, а нормальное поведение в мультиоконном приложении. API прятался за немодальными окнами! да и ненужный механизм передачи хэндла - подтверждкние тому, что это не вписывается в LCL
чем? это PInteger(@mag)^ опасен. integer(mag) компилятор должен обезопасить
Где написано, что должен? И что такое "обезопасить"? Если бы ты кастовал другой целочисленный тип - то да. Но ты кастуешь просто абстрактный тип. Так что я бы предпочёл не рисковать. Либо идти по никому уровню и использовать byte/shortint и лапками контролировать SizeOf с обмазыванием assert'ами, либо идти по высокому уровню и писать Ord, который и предназначен для этого изначально, и будучи функцией не зависит от размера данных.
Обсуждают сегодня