![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исходники... [Delphi]
MTsv DN © (2008-10-13 13:33:00)Всем привет...
Вот решил создать топик по обмену наработками. Перефразирую Глеба Жеглова: "Неслыханных кодов не бывает, что-то, где-то, кем-то уже написано..."
Первым, чем хочу поделиться - расширенное использование диалога OpenFiles - выбор не только файлов, но и папок. На паскале в сети ничего не нашел, поэтому пришлось портировать и править код Hojjat Bohlooli...и вот что из этого вышло:
http://ru.uus4u.com/downloads/sources/extended_opendialog.7z
P.S. Делал для Unicode, т.ч. не забудьте подключить UNICODE_CTRLS.
P.P.S. Позже у себя на сайте открою раздел...
(2009-08-14 05:04:00) [1]Удалено модератором
Игорь (2009-04-21 19:43:00) [2]Некоторые товарищи замучили вопросом "Как запустить процесс от имени системы"
Вот хочу поделиться исходником, довел вроде до ума http://www.onlinedisk.ru/file/125336/2000 -XP
(2009-04-16 13:58:00) [3]Удалено модератором
(2009-04-08 01:57:00) [4]Удалено модератором
MTsv DN (2009-03-29 15:10:00) [5]Кстати, обновил (пока у себя) проект MultiIcon.
Изменения:
Функции возвращают сразу требуемую иконку, а не поток. Просто автоматизация некоторые действий.
Ссылка та же:
http://ru.uus4u.com/downloads/sources/multiicons.7z
MTsv DN (2009-03-29 15:07:00) [6]Это ж больше демки... Хорошо, займусь как-нибудь...
mdw (2009-03-29 14:18:00) [7]
> http://ru.uus4u.com/downloads/sources/multiicons.7z
Миша, а ты бы на сайт выкладывал сразу, в "графику". А то когда подтебуется, и не вспомнишь что лежит на uus4u... Да и предыдущие WAV, FLAC и т.д тоже в раздел ММ можно....
MTsv DN (2009-03-28 22:16:00) [8]Всем привет...
Благодаря помощи SPeller...закончил проект по работе с мультииконками.
Работает как с файлами на диске, так и с ресурсами RT_GROUP_ICON.
http://ru.uus4u.com/downloads/sources/multiicons.7z
MTsv DN (2009-03-28 21:57:00) [9]Все... Разобрался... Огромный респект...
Все упиралось в то, что при работе с файлом используется:
Offset : DWORD;
а при использовании ресурса:
ID: Word;
MTsv DN (2009-03-28 20:51:00) [10]Твой исходник, ща гляну...спасибо.
А про твой последний пост. Эти 2е записи я знаю, по ним я работаю с иконками с диска... А вот "Видимо, ты не учел то, что icongroup - это лишь ссылки на тип ресурса single icon." это да, тока так и не понял где. Щас буду разбираться...
SPeller (2009-03-28 20:15:00) [11]Видимо, ты не учел то, что icongroup - это лишь ссылки на тип ресурса single icon.
На всякий вот еще подсказка:
PGrpIconDirEntry = ^TGrpIconDirEntry;
TGrpIconDirEntry = packed record
Width: Byte;
Height: Byte;
ColorCount: Byte;
Reserved: Byte;
Planes: Word;
BitCount: Word;
BytesInRes: DWord;
ID: Word;
end;
PGrpIconDir = ^TGrpIconDir;
TGrpIconDir = packed record
Reserved: Word;
iType: Word; // 1 for icons, 2 for cursors
Count: Word;
Entries: array[ 0..0 ] of TGrpIconDirEntry;
end;
SPeller (2009-03-28 20:04:00) [12]Есть у меня такой старый исходник:
procedure TPageRes.LoadIconGroup(ANode: PResNode; IsIcon: Boolean);
function SearchNode( ID: Word; iType: Cardinal; Root: PResNode ): PResNode;
var
I: Integer;
begin
Result := nil;
if not Root.IsDirectory then
begin
if (Root.ID = ID) and (Root.DataType = iType) then
Result := Root
else
Result := nil;
Exit;
end;
for I := 0 to Root.SubDirs.Count - 1 do
begin
Result := SearchNode( ID, iType, Root.SubDirs.Items[ I ] );
if Result <> nil then
Break;
end;
end;
var
St: PStream;
GID: PGrpIconDir;
IDE: TGrpIconDirEntry;
Buf: Pointer;
I, N: Integer;
ItemNode: PResNode;
begin
St := NewReadFileStream(MainWindow.FileName);
FFrm.lstImgGroup.Clear;
GetMem( Buf, ANode.DataSize );
St.Seek( ANode.DataRaw, spBegin );
St.Read( Buf^, ANode.DataSize );
St.Free;
GID := Buf;
for I := 0 to GID.Count - 1 do
begin
IDE := GID.Entries[ I ];
if IsIcon then
N := FFrm.lstImgGroup.Add(ImageCaption(IDE.Width, IDE.Height, IDE.BitCount, IDE.ID))
else
N := FFrm.lstImgGroup.Add(ImageCaption(IDE.Width, IDE.Width, IDE.BitCount, IDE.ID));
if IsIcon then begin
ItemNode := SearchNode(IDE.ID, Cardinal(RT_ICON), ResTreeRoot);
FFrm.lstImgGroup.ItemData[N] := Cardinal(ItemNode);
end
else begin
ItemNode := SearchNode(IDE.ID, Cardinal(RT_CURSOR), ResTreeRoot);
FFrm.lstImgGroup.ItemData[N] := Cardinal(ItemNode);
end;
ItemNode.ImgX := IDE.Width;
ItemNode.ImgY := IDE.Height;
ItemNode.ImgColorDepth := IDE.BitCount;
end;
//FFrm.lstImgGroup.CurIndex := 0;
SearchMaxDepthAndSize;
FFrm.lblImgInfo.Visible := not IsIcon;
FFrm.lstImgGroupSelChange(nil);
FreeMem( Buf );
end;
Писалось всё по msdn. Работает :) Мож кто знает, писал я плагин для ТС, PEViewer называется. Было дело ковырял ресурсы, но так и не дошло это дело до релизов плагина.
Тип ResNode выглядит так:
TResNode = object( TObj )
private
...
public
constructor Create;
destructor Destroy; virtual;
property Parent: PResNode read fParent write fParent;
property IsRoot: Boolean read fIsRoot;
property IsDirectory: Boolean read fIsDirectory write fIsDirectory;
property SubDirs: PList read fSubDirs;
property DataRaw: Cardinal read fDataRaw write fDataRaw;
property DataSize: Cardinal read fDataSize write fDataSize;
property DataType: Cardinal read fDataType write fDataType;
property DisplayName: string read FDisplayName write FDisplayName;
property Name: string read fName write fName;
property Lang: Cardinal read fLang write flang;
property CodePage: Cardinal read fCodePage write fCodePage;
property ID: Word read fID write fID;
property ImgX: Integer read FImgX write FImgX;
property ImgY: Integer read FImgY write FImgY;
property ImgColorDepth: Byte read FImgColorDepth write FImgColorDepth;
end;
Объект носит информационный характер, акромя конструктора и деструктора методов нет. Пока еще не ковырялся до тех мест, где это всё задаётся значениями. ВОбщем, структуру кода выемки ресурсов из потока, думаю, поймешь. Если что не ясно спрашивай.
MTsv DN (2009-03-28 09:48:00) [13]У меня MAINICON содержит 12 иконок (4 размера для 3 разных битностей).
Мне надо вытащить в PIcon любую по параметрам или индексу.
Это исходное задание было.
А в моем последнем посте здесь, грабли вот какие. Размер MAINICON в ICON_GROUP всего 118 байт, хотя сама иконка около 160 кБ. Как правильно до иконки добраться?
SPeller (2009-03-28 02:47:00) [14]А я разбирал IconGroup в ресурсах :) В чем именно проблема?
MTsv DN (2009-03-27 19:47:00) [15]Всем привет...
Вот решил старую тему поднять. И не только потому что есть, что предложить, а потому что уперся лбом в стену...и нужен свежий взгляд.
Итак:
http://www.sendspace.com/file/ru9zdo
Работа с библиотеками иконок (мультииконки).
Код простой, т.ч. разобраться сложности не составить. Работа из файла отлажена и проверена.
...А теперь проблема... Попытка работы с ресурсом обламалась. Где косячу не вижу в упор. Доступ к IconGroup и счтывание в поток успешно. Заголовок первой иконки вроде верный, однако, на этом все. Думаю, не так обрабатываю ресурс... Но ничего путного придумать не смог... Кто-нить ткните носом в ошибку...
AnarchyMob (2008-10-24 20:01:00) [16]Незнаю даже как благодарить, наконец-то я получил что хотел, что ж теперь самое главное, мне предстоит портировать тексты ogglib на Free Pascal, задача конечно нелегкая, но когда-то надо начинать.
MTsv DN (2008-10-23 10:00:00) [17]
> Облом, там библиотеки используются, и об использовании модулей
> в Win CE я могу забыть, а есть, интересно, эти библиотеки
> (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для
> Win CE, или целый кодек ogg написанный на паскале т.е. с
> таблицами и прочим и без использования DLL.
http://www.cyanwerks.com/pocketogg/
AnarchyMob (2008-10-22 20:53:00) [18]Облом, там библиотеки используются, и об использовании модулей в Win CE я могу забыть, а есть, интересно, эти библиотеки (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для Win CE, или целый кодек ogg написанный на паскале т.е. с таблицами и прочим и без использования DLL.
AnarchyMob (2008-10-22 20:40:00) [19]ОГРОМНОЕ СПАСИБОбуду разбиратся, я что-то искал в сети что-нибудь по этой теме, но ничего как помню не нашел, неужели я так плохо веду поиск?
MTsv DN (2008-10-22 19:38:00) [20]Пожалуйста, конвертер OGG2WAV... Давным-давно нарыл в сети исходник...вот адаптировал для KOL.
http://ru.uus4u.com/downloads/sources/ogg2wav.7z
P.S. Там переменной bits присваивается 16. Для моих нужд этого достаточно, однако можно сделать, чтоб из заголовка OGG файла получала...