ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

22.05.2007, 23:57
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Вот пример статьи как юзать ресурсы:
У меня имеется приблизительно 36 маленьких растровых изображений, которые я хочу сохранить в файле и затем прилинковать его к exe. Как мне поместить их в res-файл?
Самый простой путь - создать файл с именем "BITMAPS.RC" и поместить в него список ваших .BMP-файлов:
BMAP1 BITMAP BMAP1.BMP
BMAP2 BITMAP BMAP2.BMP
CLOCK BITMAP CLOCK.BMP
DBLCK BITMAP DBLCK.BMP
DELOK BITMAP DELOK.BMP
LUPE BITMAP LUPE.BMP
OK BITMAP OK.BMP
TIMEEDIT BITMAP TIMEEDIT.BMP
Затем загрузите Resource Workshop (RW) и выберите пункт меню File|Project Open. В выпадающем списке "File Type" (тип файла) выберите RC-Resource Script и откройте файл, который вы только что создали. После того, как RW загрузит ваш файл, выберите пункт меню File|Project save as. Выберите объект RES-Resource из выпадающего списка "File Type" (тип файла). В поле редактирования "New File name" задайте имя нового файла, скажем, BITMAPS.RES. Нажмите OK. Теперь у вас есть файл ресурса. В вашем модуле Delphi добавьте после строки {$R *.RES} строку {$R BITMAPS.RES}. После компиляции вы получите exe-файл с скомпилированными ресурсами. Для получения доступа к ресурсам во время выполнения программы нужно сделать следующее:
myImage.Picture.Bitmap.Handle := LoadBitmap(HInstance, 'TIMEEDIT');
В качестве предостережения: убедитесь в том, что имена (в самой левой колонке) изображений в .RC файле написаны в верхнем регистре, при вызове также необходимо писать их имена в верхнем регистре.
|
|
|

23.05.2007, 06:55
|
|
Новичок
Регистрация: 14.05.2007
Сообщений: 8
Провел на форуме: 16256
Репутация:
1
|
|
Спасибо огромное! Буду сегодня пробовать.. ну вы ребята и умные, я просто фигею 
А может кто из вас знает, как работать с архивами из приложения? нередки случаи использования экзешником какого-нибудь ресурса, изначально запакованного в какой-нибудь, например, dat файл, который по сути является простым архивом. Бывают и не стандартные архивные, но тоже компресованные форматы.. как возможно и возможно ли использование таких ресурсов?
Ник Ример
|
|
|

23.05.2007, 09:27
|
|
Новичок
Регистрация: 14.05.2007
Сообщений: 8
Провел на форуме: 16256
Репутация:
1
|
|
Пробовал найти Resource Workshop, занятие неблагодарное.. можно сказать, что успехом поиски не увенчались, или же не совсем. Я нашел программу версии 4.5, но она, кажися, 16-тиразрядная. При запуске под виндой получаю warning-сообщение типа: "Не найден файл D:\ResWorkshop\workshop.exe или один из его компонентов. Проверьте правильность бла-бла-бла..." с заголовком "Не удается запустить 16-разрядную программу для Wi" (наверное, для Windows?!  ). Как заставить его работать, если у меня Win2k SP4?? Ставить Borland C++ ради одного малюсенького приложения как-то влом, да и к тому же я потерял где-то диск..
Хм.. я еще не задолбал вопросами?
P.S. я там на 8-й еще немножко написал.. 
Последний раз редактировалось Astral_Master; 23.05.2007 в 09:30..
|
|
|

23.05.2007, 09:46
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
http://www.mininova.org/search/?Delphi+7 - Так никто не искал?
|
|
|

23.05.2007, 09:59
|
|
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме: 426226
Репутация:
726
|
|
Astral_Master
Текст в myres.rc
LORDPE RAR Lordpe.rar
DATA DAT Data.dat
Получаем myres.res
Выполняем brcc32.exe myres.rc
//brcc32.exe там же, где и Delphi.exe
Код:
rar:=TResourceStream.Create(Hinstance,'LORDPE','RAR');
x:=Dword(rar.Memory); //адрес ресурса в памяти
y:=int64(rar.Size); //размер ресурса
rar:=TResourceStream.Create(Hinstance,'DATA','DAT');
x:=Dword(rar.Memory); //адрес ресурса в памяти
y:=int64(rar.Size); //размер ресурса
rar.SaveToFile('my.rar'); //можно использовать так
|
|
|

23.05.2007, 10:44
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 Astral_Master
C воркшопом есть один прикол. ТАм в настройках можно ставить 16 бит или 32
|
|
|

23.05.2007, 11:24
|
|
Новичок
Регистрация: 14.05.2007
Сообщений: 8
Провел на форуме: 16256
Репутация:
1
|
|
Да как же попасть к этим настройкам, если программа не запускается-то? По экзешнику щелкаешь, да и ошибка сразу выскакивает, приложение не запускается.. как же это сделать-то? Давай, если удобно, свяжемся сегодня по icq? Я сейчас ухожу, но буду уже через несколько часов дома.. мой номер в профиле указан.
Ник Ример
|
|
|

24.05.2007, 14:31
|
|
Новичок
Регистрация: 03.07.2006
Сообщений: 5
Провел на форуме: 17503
Репутация:
0
|
|
help
я так понял что вопросы по delphi задавать тут... если нет не обессудьте...
вообщем вопрос такой я перевожу число(dec) в 16-теричный формат(hex) и мне нужно передать это через UDP(Indy)
вот допустим перевожу число символов находящихся в мемо:
Код:
var len,hexlen:string;
lenmes:integer;
begin
lenmes:=length(Memo1.Lines.Text); hexlen:=Format('%0x',[lenmes]);
len:=#$+hexlen; IdUDPClient1.Send('192.168.0.255',4578,len);
здесь у меня не получается какретно отправить это всё hex`ом.
Я так понял len:=#$+hexlen; это чушь... без привязки #$ тож не получается, как быть подскажите? 
|
|
|

24.05.2007, 14:39
|
|
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме: 2715445
Репутация:
588
|
|
Код:
var
nexlen:dword;
len:string;
begin
nexlen:=length(text);
len:=IntToHex(nexlen,8) ?
Последний раз редактировалось Hellsp@wn; 24.05.2007 в 14:42..
|
|
|

25.05.2007, 00:22
|
|
Новичок
Регистрация: 03.07.2006
Сообщений: 5
Провел на форуме: 17503
Репутация:
0
|
|
Сообщение от Hellsp@wn
Код:
var
nexlen:dword;
len:string;
begin
nexlen:=length(text);
len:=IntToHex(nexlen,8) ?
нет, не прокатит оно типа как стринг передастся...
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|