Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi 10 Seattle, преобразование типов


Антонов Саша ©   (2016-07-17 14:03:00) 

Здравствуйте мастера! Изучаю сабж, использую функцию работы с ресурсами,пример:
rs_img:=TResourceStream.Create(0,'1',PChar(RT_RCDATA));
... дальше стрим и присвоение картинке.. все работает..
данные с идентификатором "1" читает, но нужно просмотреть
все ресурсы, делаю дальше так:
for i:=1 to 5 do
begin
rs_img:=TResourceStream.Create(0,IntToStr(i),PChar(RT_RCDATA));
end;
Не компилит, просит тут IntToStr(i) для себя PChar, хорошо пишу тогда так:
rs_img:=TResourceStream.Create(0,PChar(IntToStr(i)),PChar(RT_RCDATA));
все компилит, но при выполнении вылетает ошибка и ничего  читает.. ((
Как правильно преобразовать String в PChar?


DayGaykin   (2016-07-24 22:51:00) [1]

Дело скорее всего не в преобразовании. Я ни разу не сталкивался с проблемой преобразования PChar(... any string...).

Может вместо нуля стоит указать HInstanceвсе-таки?


NoUser   (2016-07-19 19:02:00) [2]

r1 := TResourceStream.CreateFromID(0,1,RT_RCDATA);
r2 := TResourceStream.CreateFromID(0,2,RT_RCDATA);


--
RT_RCDATA объявлен как
const RT_RCDATA = PChar(10);
и дополнительно PChar() ему не надо.

--
И если в цикле, то необходимо помыть посуду:

for i:=1 to 5 do
begin
rs_img:=TResourceStream.CreateFromID(0, i, RT_RCDATA);
// ...
rs_img.Free;  // !
end;


Германн   (2016-07-19 01:15:00) [3]


> Антонов Саша   (17.07.16 14:03)  

Ваша главная ошибка в том, что вы получив "при выполнении вылетает ошибка" не стали разбираться что это за ошибка. И тут не привели этого сообщения об ошибке. Вместо этого вы подумали что проблема именно в преобразовании типа string в тип PChar при передаче параметра в WINAPI функцию. А таких проблем отродясь не было.


  (2016-07-17 23:36:00) [4]

Удалено модератором


Kilkennycat   (2016-07-17 22:39:00) [5]

пример корректного кода для фиреманки:
http://stackoverflow.com/questions/18426914/how-to-store-images-in-firemonkey


Kilkennycat   (2016-07-17 22:29:00) [6]


> непонятно.. ((

да. а еще непонятно, какая при выполнении вылетает ошибка

Так приятно, что на тематических форумах новички считают профессионалов телепатами, могущими по кое-как предоставленной информации помочь в столь примитивном искусстве программировании, что можно помнить абсолютно всё, быстренько установить Делфи с Firemonkey, накидать код новичка, убедится, что все работает, а ошибка, мож, от отсутствующих ресурсов или еще хрени какой-нить.


Антонов Саша   (2016-07-17 15:05:00) [7]

Баркадеровцы же пишут, что все не так просто:
http://docwiki.embarcadero.com/RADStudio/Seattle/en/String_to_PChar_Conversions
Но как именно нужно  непонятно.. ((


Антонов Саша   (2016-07-17 15:02:00) [8]

Нашел:

function strtoPchar(s:string):Pchar;
begin
 S := S+#0;
 result:=StrPCopy(@S[1], S) ;
end;

Не помогло.. ((


Антонов Саша   (2016-07-17 14:59:00) [9]

Большое спасибо за полезные советы, оч.помогли в решении проблемы!
Так приятно что в интернете есть тематические форумы и профессионалы всегда
готовые помочь молодым, "зеленым" новичкам в изучении сложного иссккства программирования когда нагуглить ничего  толком не получается. Особенно мало информации к сожалению по новой Firemonkey и ее особенностям при написании программ для мобильных устройств.. (( Еще раз благодарствую!


Игорь Шевченко   (2016-07-17 14:46:00) [10]


> вылетает ошибка


Надо исправить.

А на будущее прочитать
http://segfault.kiev.ua/smart-questions-ru.html


Наверх

Титульная страница Поиск, карта сайта Написать письмо