Конференция "KOL" » Исходники... [Delphi]
 
  • MTsv DN (13.10.08 13:33) [0]
    Всем привет...

    Вот решил создать топик по обмену наработками. Перефразирую Глеба Жеглова: "Неслыханных кодов не бывает, что-то, где-то, кем-то уже написано..."

    Первым, чем хочу поделиться - расширенное использование диалога OpenFiles - выбор не только файлов, но и папок. На паскале в сети ничего не нашел, поэтому пришлось портировать и править код Hojjat Bohlooli...и вот что из этого вышло:
    http://ru.uus4u.com/downloads/sources/extended_opendialog.7z
    P.S. Делал для Unicode, т.ч. не забудьте подключить UNICODE_CTRLS.
    P.P.S. Позже у себя на сайте открою раздел...
  • vampir_infernal (13.10.08 13:35) [1]
    спасибо за наработки
  • MTsv DN (13.10.08 13:45) [2]
    На здоровье. Будут еще, просто времени оформлять не хватает...
  • AnarchyMob © (14.10.08 03:36) [3]
    А для Win CE этот диалог пойдет (а то я уже собирался сам писать) , сейчас просто времени нет это проверить. Если хотите я свои наработки, в области "системы", выложу. Только я незнаю как здесь файлы прикреплять к сообщениям.
  • Danger © (14.10.08 08:52) [4]

    > AnarchyMob ©   (14.10.08 03:36) [3]
    > я незнаю как здесь файлы прикреплять к сообщениям.


    А никак, файлы здесь не прикрепляются. Просто ссылку выкладывать.
  • MTsv DN (14.10.08 14:55) [5]
    2 AnarchyMob
    Работает ли код в WinCE я не знаю...
  • MTsv DN (14.10.08 15:05) [6]
    Предлагаю еще одну наработку - конвертер WAV2FLAC.

    Файл FLAC.PAS был взят из NewAC. Кодировщик был портирован из "родных" примеров FLAC v.1.2.1b.
    http://ru.uus4u.com/downloads/sources/wav2flac.7z

    P.S. К сожалению, в примерах умалчивалось как кодировать файлы отличные от 16бит. Как смог, добавил поддержку 8бит, хотя файлы исходными не получаются... WAV файлы 16 бит кодируются норамльно.
    P.P.S. Если кто знает как добавить поддержку 8, 24, 32 бит прошу сообщить...
  • MTsv DN (16.10.08 17:37) [7]
    Всем привет...

    Итак. Все-таки "добил" я этот конвертер. Обновление WAV2FLAC.
    http://ru.uus4u.com/downloads/sources/wav2flac.7z

    Поддержка:
    SampleRate: 22.5/32/44.1/48 kHz
    BitRate:       8/16/24
    Channels:     1/2
  • MTsv DN (16.10.08 19:39) [8]
    Ну, и логическим завершением вышесказанного: конвертер 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
  • MTsv DN (21.10.08 11:32) [9]
    Всем привет...

    Очередной исходник - WAV Normelizer.

    Проект основан на коде Manuel Kasper.
    http://ru.uus4u.com/downloads/sources/wav_normalizer.7z

    P.S. Поддерживаются 8 и 16 битные WAV файлы...
  • AnarchyMob © (22.10.08 14:08) [10]
    Обращаюсь к тебе как к профи в области цифрового звука, не мог бы ты где-нибудь найти исходники ogg декодера (желательно конечно на паскале). Просто хочу написать плейер для КПК, а использовать библиотеки типа fmod не хочу.

    P.S.
    mp3 декодер у меня есть, и оболочка для плейера тоже уже готова.
  • AnarchyMob © (22.10.08 14:09) [11]
    Обращаюсь к тебе как к профи в области цифрового звука, не мог бы ты где-нибудь найти исходники ogg декодера (желательно конечно на паскале). Просто хочу написать плейер для КПК, а использовать библиотеки типа fmod не хочу.

    P.S.
    mp3 декодер у меня есть, и оболочка для плейера тоже уже готова.
  • MTsv DN (22.10.08 14:24) [12]
    Есть. Готовлю в эту тему... Через пару дней будут...
  • MTsv DN (22.10.08 14:25) [13]
    ...и wav2ogg, и ogg2wav... Также есть в wav2mp3, на основе "родного" исходника...
  • MTsv DN (22.10.08 19:38) [14]
    Пожалуйста, конвертер OGG2WAV... Давным-давно нарыл в сети исходник...вот адаптировал для KOL.

    http://ru.uus4u.com/downloads/sources/ogg2wav.7z

    P.S. Там переменной bits присваивается 16. Для моих нужд этого достаточно, однако можно сделать, чтоб из заголовка OGG файла получала...
  • AnarchyMob © (22.10.08 20:40) [15]
    ОГРОМНОЕ СПАСИБО буду разбиратся, я что-то искал в сети что-нибудь по этой теме, но ничего как помню не нашел, неужели я так плохо веду поиск?
  • AnarchyMob © (22.10.08 20:53) [16]
    Облом, там библиотеки используются, и об использовании модулей в Win CE я могу забыть, а есть, интересно, эти библиотеки (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для Win CE, или целый кодек ogg написанный на паскале т.е. с таблицами и прочим и без использования DLL.
  • MTsv DN (23.10.08 10:00) [17]

    > Облом, там библиотеки используются, и об использовании модулей
    > в Win CE я могу забыть, а есть, интересно, эти библиотеки
    > (ogg.dll, vorbis.dll, vorbisenc.dll, vorbisfile.dll) для
    > Win CE, или целый кодек ogg написанный на паскале т.е. с
    > таблицами и прочим и без использования DLL.

    http://www.cyanwerks.com/pocketogg/
  • AnarchyMob © (24.10.08 20:01) [18]
    Незнаю даже как благодарить, наконец-то я получил что хотел, что ж теперь самое главное, мне предстоит портировать тексты ogglib на Free Pascal, задача конечно нелегкая, но когда-то надо начинать.
  • MTsv DN (27.03.09 19:47) [19]
    Всем привет...

    Вот решил старую тему поднять. И не только потому что есть, что предложить, а потому что уперся лбом в стену...и нужен свежий взгляд.
    Итак:
    http://www.sendspace.com/file/ru9zdo

    Работа с библиотеками иконок (мультииконки).
    Код простой, т.ч. разобраться сложности не составить. Работа из файла отлажена и проверена.

    ...А теперь проблема... Попытка работы с ресурсом обламалась. Где косячу не вижу в упор. Доступ к IconGroup и счтывание в поток успешно. Заголовок первой иконки вроде верный, однако, на этом все. Думаю, не так обрабатываю ресурс... Но ничего путного придумать не смог... Кто-нить ткните носом в ошибку...
  • SPeller © (28.03.09 02:47) [20]
    А я разбирал IconGroup в ресурсах :) В чем именно проблема?
  • MTsv DN (28.03.09 09:48) [21]
    У меня MAINICON содержит 12 иконок (4 размера для 3 разных битностей).
    Мне надо вытащить в PIcon любую по параметрам или индексу.
    Это исходное задание было.

    А в моем последнем посте здесь, грабли вот какие. Размер MAINICON в ICON_GROUP всего 118 байт, хотя сама иконка около 160 кБ. Как правильно до иконки добраться?
  • SPeller © (28.03.09 20:04) [22]
    Есть у меня такой старый исходник:

    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;


    Объект носит информационный характер, акромя конструктора и деструктора методов нет. Пока еще не ковырялся до тех мест, где это всё задаётся значениями. ВОбщем, структуру кода выемки ресурсов из потока, думаю, поймешь. Если что не ясно спрашивай.
  • SPeller © (28.03.09 20:15) [23]
    Видимо, ты не учел то, что 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;

  • MTsv DN (28.03.09 20:51) [24]
    Твой исходник, ща гляну...спасибо.

    А про твой последний пост. Эти 2е записи я знаю, по ним я работаю с иконками с диска... А вот "Видимо, ты не учел то, что icongroup - это лишь ссылки на тип ресурса single icon." это да, тока так и не понял где. Щас буду разбираться...
  • MTsv DN (28.03.09 21:57) [25]
    Все... Разобрался... Огромный респект...

    Все упиралось в то, что при работе с файлом используется:
    Offset : DWORD;


    а при использовании ресурса:
    ID: Word;

  • MTsv DN (28.03.09 22:16) [26]
    Всем привет...

    Благодаря помощи SPeller...закончил проект по работе с мультииконками.

    Работает как с файлами на диске, так и с ресурсами RT_GROUP_ICON.
    http://ru.uus4u.com/downloads/sources/multiicons.7z
  • mdw (29.03.09 14:18) [27]

    > http://ru.uus4u.com/downloads/sources/multiicons.7z

    Миша, а ты бы на сайт выкладывал сразу, в "графику". А то когда подтебуется, и не вспомнишь что лежит на uus4u... Да и предыдущие WAV, FLAC и т.д тоже в раздел ММ можно....
  • MTsv DN (29.03.09 15:07) [28]
    Это ж больше демки... Хорошо, займусь как-нибудь...
  • MTsv DN (29.03.09 15:10) [29]
    Кстати, обновил (пока у себя) проект MultiIcon.

    Изменения:
    Функции возвращают сразу требуемую иконку, а не поток. Просто автоматизация некоторые действий.

    Ссылка та же:
    http://ru.uus4u.com/downloads/sources/multiicons.7z
  • имя (08.04.09 01:57) [30]
    Удалено модератором
  • имя (16.04.09 13:58) [31]
    Удалено модератором
  • Игорь © (21.04.09 19:43) [32]
    Некоторые товарищи замучили вопросом "Как запустить процесс от имени системы"

    Вот хочу поделиться исходником, довел вроде до ума http://www.onlinedisk.ru/file/125336/ 2000 -XP
  • имя (14.08.09 05:04) [33]
    Удалено модератором
 
Конференция "KOL" » Исходники... [Delphi]
Есть новые Нет новых   [134431   +11][b:0][p:0.003]