Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2007-05-14 22:57:32 ЛС | профиль | цитата
За пару дней написал (на Visual C++) класс для разбора sha-файла, и на основе этого класса --- программу, выводящую схему sha в виде дерева.

Ссылки:
* Исполняемый файл и библиотеки к нему здесь (самораспаковывающийся архив)
* Исходный код здесь

Примечания:
* Игнорирует запись Make(xxx), считает что схема - для пакета Delphi
* Не любит "дилнных" (>1024) строк во входном файле, ломается на таких файлах.
* Не различает "реальный" и ссылочный компоненты (как сделствие, не выделяет никак последние)
* Требует установленного Hiasm (читает иконки и ini-файлы)

В дальнейшем хочу попробовать написать генератор ресурсных файлов из sha-файлов, но пока возник вопрос: а как распаковывать свойства Bitmap и Font?
карма: 1

0
Ответов: 3655
Рейтинг: 69
#2: 2007-05-14 23:46:56 ЛС | профиль | цитата
iarspider, Хорошо работает
Это бы встроить в ХиАсм
Ещё хорошо бы с иконками.
А что должно отображаться в нижнем правом окне
карма: 0

0
Ответов: 5446
Рейтинг: 323
#3: 2007-05-15 09:54:48 ЛС | профиль | цитата
Вячеслав писал(а):
Ещё хорошо бы с иконками.

В смысле? В дереве иконки должны показываться, а свойства пока никак не обрабатываются (кроме подгрузки свойств по-умолчанию из ini)

В правом нижнем окне раньше отображался "плоский" список элементов в схеме, сейчас там ничего не отображается (забыл убрать)
карма: 1

0
Ответов: 5446
Рейтинг: 323
#4: 2007-05-15 18:53:36 ЛС | профиль | цитата
Dilma, ответь пожалуйста на два вопроса:
1. Как распаковывать свойства типа Bitmap, Stream, JPEG и т.п.?
2. В чём разница между свойствами типа Combo и ComboEx?
карма: 1

0
Ответов: 3655
Рейтинг: 69
#5: 2007-05-15 19:34:10 ЛС | профиль | цитата
iarspider писал(а):
В дереве иконки должны показываться

Невижу ни одной иконки
карма: 0

0
Ответов: 574
Рейтинг: 1
#6: 2007-05-15 19:53:10 ЛС | профиль | цитата
Вячеслав писал(а):
Невижу ни одной иконки


А я вижу.

Galkov писал(а):
Что я делаю не так?

карма: 0

0
Ответов: 5446
Рейтинг: 323
#7: 2007-05-15 20:04:32 ЛС | профиль | цитата
Вячеслав, программа пытается считать путь к hiasm из реестра, если ей это удаётся - то она загружает все иконки из директории Icons и соответственно показывает их в дереве.

[size=-2]------ Добавлено в 20:04
Сейчас выложу подправленную версию.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#8: 2007-05-15 20:57:07 ЛС | профиль | цитата
iarspider писал(а):
2. В чём разница между свойствами типа Combo и ComboEx?

HiAsm.chm писал(а):
(*) отличие типа List от типа Enum состоит в том, что при генерации шаблона компонента свойству с типом List будет присвоено значение от 0 до Count-1, где Count - количество элементов в списке перечислений, т.е. индекс элемента, а св-ву с типом Enum будет присвоено само его значение.

карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2007-05-16 10:28:25 ЛС | профиль | цитата
а для чего утилита писалась?
карма: 27
0
Ответов: 5446
Рейтинг: 323
#10: 2007-05-16 13:04:12 ЛС | профиль | цитата
Dilma,
iarspider писал(а):

В дальнейшем хочу попробовать написать генератор ресурсных файлов из sha-файлов


А вообще - хочу сделать внешний (т.е. не вызываемый средой) кодогенератор для языка C++ с использованием wxWidgets (я тебе про это писал). Почему внешний? Потому что у меня сейчас нет Delphi на компе, чтобы ковыряться с имеющимися образцами, на VC++ (очевидно) нельзя написать - (типа PStrList в VC++ нет), а программировать в блокноте я не люблю.
карма: 1

0
Ответов: 2125
Рейтинг: 159
#11: 2007-05-16 16:44:02 ЛС | профиль | цитата
iarspider писал(а):
на VC++ (очевидно) нельзя написать

Можно, я пробовал, и как раз на VC++. Инклуды, правда, с тех пор устарели (CGTShare менялся), но если сильно надо - могу доделать.
карма: 1

0
Ответов: 5446
Рейтинг: 323
#12: 2007-05-16 17:29:39 ЛС | профиль | цитата
tsdima, брось что есть на spamto[at]yandex[dot]ru
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2007-05-16 18:24:33 ЛС | профиль | цитата
iarspider писал(а):
типа PStrList в VC++ нет

как этот тип связан с кодогенератором?
карма: 27
0
Ответов: 5446
Рейтинг: 323
#14: 2007-05-16 19:02:48 ЛС | профиль | цитата
Dilma, а вот так:
1. webCodeGen.dpr :

function CreateCode(SDK:cardinal; cgt:PCodeGenTools):PStrList; cdecl;

2. delphiCodegen.dpr :

type
TCGrec = object
MainForm:string;
Vars,Units,IBody,Dead,RUnit:PStrList; //!!!
procedure Clear;
end;

Res:TCGrec=(Vars:nil;Units:nil;IBody:nil;Dead:nil;RUnit:nil); //!!!

function CreateCode(SDK:cardinal; _cgt:PCodeGenTools):pointer; cdecl;
//... cut ...
Result := @Res; //!!! указатель на структуру, соержащую в себе 5 PStrList-ов
карма: 1

0
Ответов: 5446
Рейтинг: 323
#15: 2007-05-16 19:53:46 ЛС | профиль | цитата
Залил новую версию.

Изменения:
1. Решена проблема длинных строк
2. Расширена выводимая информация о свойствах, теперь помимо названия и значения выводятся тип, значение по-умолчанию и (если есть) список возможных значений
3. Свойства типа 4 (Combo) и 14 (ComboEx) теперь отображаются в виде строк
4. Добавлен просмотр типа 15 (Font), для вызова - двойной клик по соответствующей строке таблицы

Todo:
1. Индикация хода загрузки
2. Просмотр графических типов
3. Просмотр типа Stream

[size=-2]------ Добавлено в 19:53
Забираем:
Dist.zip (исходник)
Release.exe (SFX-архив с исполняемым файлом и библиотеками)
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)