-
Всем привет... Вот решил создать топик по обмену наработками. Перефразирую Глеба Жеглова: "Неслыханных кодов не бывает, что-то, где-то, кем-то уже написано..." Первым, чем хочу поделиться - расширенное использование диалога OpenFiles - выбор не только файлов, но и папок. На паскале в сети ничего не нашел, поэтому пришлось портировать и править код Hojjat Bohlooli...и вот что из этого вышло: http://ru.uus4u.com/downloads/sources/extended_opendialog.7zP.S. Делал для Unicode, т.ч. не забудьте подключить UNICODE_CTRLS. P.P.S. Позже у себя на сайте открою раздел...
-
спасибо за наработки
-
На здоровье. Будут еще, просто времени оформлять не хватает...
-
А для Win CE этот диалог пойдет (а то я уже собирался сам писать) , сейчас просто времени нет это проверить. Если хотите я свои наработки, в области "системы", выложу. Только я незнаю как здесь файлы прикреплять к сообщениям.
-
> AnarchyMob © (14.10.08 03:36) [3] > я незнаю как здесь файлы прикреплять к сообщениям.
А никак, файлы здесь не прикрепляются. Просто ссылку выкладывать.
-
2 AnarchyMob Работает ли код в WinCE я не знаю...
-
Предлагаю еще одну наработку - конвертер WAV2FLAC. Файл FLAC.PAS был взят из NewAC. Кодировщик был портирован из "родных" примеров FLAC v.1.2.1b. http://ru.uus4u.com/downloads/sources/wav2flac.7zP.S. К сожалению, в примерах умалчивалось как кодировать файлы отличные от 16бит. Как смог, добавил поддержку 8бит, хотя файлы исходными не получаются... WAV файлы 16 бит кодируются норамльно. P.P.S. Если кто знает как добавить поддержку 8, 24, 32 бит прошу сообщить...
-
-
Ну, и логическим завершением вышесказанного: конвертер FLAC2WAV. Много кода позаимствовано из NewAC. Исправлен код для 8-битных файлов. Также использован портированный пример из FLAC v.1.2.1b. http://ru.uus4u.com/downloads/sources/flac2wav.7zПоддержка:SampleRate: 22.5/32/44.1/48 kHz BitRate: 8/16/24 Channels: 1/2
-
-
Обращаюсь к тебе как к профи в области цифрового звука, не мог бы ты где-нибудь найти исходники ogg декодера (желательно конечно на паскале). Просто хочу написать плейер для КПК, а использовать библиотеки типа fmod не хочу.
P.S. mp3 декодер у меня есть, и оболочка для плейера тоже уже готова.
-
Обращаюсь к тебе как к профи в области цифрового звука, не мог бы ты где-нибудь найти исходники ogg декодера (желательно конечно на паскале). Просто хочу написать плейер для КПК, а использовать библиотеки типа fmod не хочу.
P.S. mp3 декодер у меня есть, и оболочка для плейера тоже уже готова.
-
Есть. Готовлю в эту тему... Через пару дней будут...
-
...и wav2ogg, и ogg2wav... Также есть в wav2mp3, на основе "родного" исходника...
-
Пожалуйста, конвертер OGG2WAV... Давным-давно нарыл в сети исходник...вот адаптировал для KOL. http://ru.uus4u.com/downloads/sources/ogg2wav.7zP.S. Там переменной bits присваивается 16. Для моих нужд этого достаточно, однако можно сделать, чтоб из заголовка OGG файла получала...
-
ОГРОМНОЕ СПАСИБО буду разбиратся, я что-то искал в сети что-нибудь по этой теме, но ничего как помню не нашел, неужели я так плохо веду поиск?
-
Облом, там библиотеки используются, и об использовании модулей в Win CE я могу забыть, а есть, интересно, эти библиотеки (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для Win CE, или целый кодек ogg написанный на паскале т.е. с таблицами и прочим и без использования DLL.
-
> Облом, там библиотеки используются, и об использовании модулей > в Win CE я могу забыть, а есть, интересно, эти библиотеки > (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для > Win CE, или целый кодек ogg написанный на паскале т.е. с > таблицами и прочим и без использования DLL. http://www.cyanwerks.com/pocketogg/
-
Незнаю даже как благодарить, наконец-то я получил что хотел, что ж теперь самое главное, мне предстоит портировать тексты ogglib на Free Pascal, задача конечно нелегкая, но когда-то надо начинать.
-
Всем привет... Вот решил старую тему поднять. И не только потому что есть, что предложить, а потому что уперся лбом в стену...и нужен свежий взгляд. Итак: http://www.sendspace.com/file/ru9zdoРабота с библиотеками иконок (мультииконки).Код простой, т.ч. разобраться сложности не составить. Работа из файла отлажена и проверена. ...А теперь проблема... Попытка работы с ресурсом обламалась. Где косячу не вижу в упор. Доступ к IconGroup и счтывание в поток успешно. Заголовок первой иконки вроде верный, однако, на этом все. Думаю, не так обрабатываю ресурс... Но ничего путного придумать не смог... Кто-нить ткните носом в ошибку...
-
А я разбирал IconGroup в ресурсах :) В чем именно проблема?
-
У меня MAINICON содержит 12 иконок (4 размера для 3 разных битностей). Мне надо вытащить в PIcon любую по параметрам или индексу. Это исходное задание было.
А в моем последнем посте здесь, грабли вот какие. Размер MAINICON в ICON_GROUP всего 118 байт, хотя сама иконка около 160 кБ. Как правильно до иконки добраться?
-
Есть у меня такой старый исходник: 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;
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;
Объект носит информационный характер, акромя конструктора и деструктора методов нет. Пока еще не ковырялся до тех мест, где это всё задаётся значениями. ВОбщем, структуру кода выемки ресурсов из потока, думаю, поймешь. Если что не ясно спрашивай.
-
Видимо, ты не учел то, что 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; Count: Word;
Entries: array[ 0..0 ] of TGrpIconDirEntry;
end;
-
Твой исходник, ща гляну...спасибо.
А про твой последний пост. Эти 2е записи я знаю, по ним я работаю с иконками с диска... А вот "Видимо, ты не учел то, что icongroup - это лишь ссылки на тип ресурса single icon." это да, тока так и не понял где. Щас буду разбираться...
-
Все... Разобрался... Огромный респект... Все упиралось в то, что при работе с файлом используется: Offset : DWORD; а при использовании ресурса: ID: Word;
-
-
-
Это ж больше демки... Хорошо, займусь как-нибудь...
-
-
Удалено модератором
-
Удалено модератором
-
-
Удалено модератором
|