Хранилище исходников

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Хранилище исходников

Сообщение Saturn.65 » 16.12.2007 (Вс) 16:45

Наверное у каждого имеется большая коллекция исходников VB.
При необходимости приходится искать нужный пример. Что занимает время.
Написал програмку для хранения этих самых кирпичей, чтоб не утруждать себя долгими поисками.
Это некий движок для хранения разных исходников, кирпичей и заготовок VB6.
Суть программы не сложна. В ресурсах хранятся заранее приготовленные примеры. Исходники могут хранится либо в текстовом файле, либо в папке.
Для сохранения данных текстовый файл с кодом примера добавляется в ресурсы.
Папку с исходниками VB6 следует сперва заархивировать, создав самораспаковывающийся архив.
После тоже добавить в ресурсы.
При открытии кода примера, текстовый файл будет воспроизведен в TextBox. При необходимости данные могут быть скопированы кнопкой в буфер обмена.
Заготовки, хранящиеся в папке будут воспроизведены самооткрытием папки.
Можно будет сразу проверить с помощью VB6.
При этом на винчестере данные не сохраняются, не оставляя после себя мусор.
Созданная временная папка после закрытия программы уничтожается.
Единственный минус: надо добавлять в ресурсы.
Но ничего проще я не придумал. Все примеры находятся быстро и удобно их проверить на VB.
Пример прилагается.
У вас нет доступа для просмотра вложений в этом сообщении.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 16.12.2007 (Вс) 18:34

Ммм! Интересно. Должно быть прикольная тема. А то у меня обычно для кирпичей специальная папка имеется, куда все сваливается и периодически проводится безуспешная попытка навести порядок.
Подпись проходит рефакторинг

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 16.12.2007 (Вс) 19:42

Lumen писал(а):Ммм! Интересно. Должно быть прикольная тема. А то у меня обычно для кирпичей специальная папка имеется, куда все сваливается и периодически проводится безуспешная попытка навести порядок.

У меня их несколько и все битком. Иной раз ищешь, ишешь какой нибудь кирпич... Сейчас вот в ресурсы, сижу, пихаю, нужные вещи.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 16.12.2007 (Вс) 20:18

Товарищи, старайтесь в названиях файлов/папок/дисков использовать символы только английского алфавита. Тем более, если после собираетесь все это сжать ZIP'ом. ZIP не знает, что такое юникод. А вот RAR знает, 7Z тоже знает. Кстати, настоятельно рекомендую последний.

2 Автор

Тут таких два момента:

1. У меня английская ось, и русский текст в пути к файлу вызывает отнюдь не самую положительную реакцию у большинства программ. К тому же оцени изобретательность товарищей из Microsoft, они давным-давно придумали временные каталоги, да! И даже придумали, как разработчику получить пути к этим каталогам: SHGetSpecialFolderLocation CSIDL_INTERNET_CACHE/GetTempPath GetTempFileName (для ленивых в VB предусмотрен Environ()).
2. У меня 99% подобных исходников хранится в архивах (как и у большинства моих знакомых), причем в разных, от злополучного ZIP'а до экзотических TAR'ов и LHA. И это отнюдь не из экономии места, просто большая часть этих исходников в сети доступна уже непосредственно в архивах (по понятным, надеюсь, причинам?). Естественно, тут есть преобладающие форматы. Это RAR, CAB, 7Z, ZIP и GZ.

Кроме того, на лицо явная дискриминация (уж чем она вызвана, остается только догадываться).
У меня исходников/компонентов на/для C/C++ (VC++6/8, BCB6) ничуть не меньше, чем на/для VB5/6. Как быть с ними? А как быть с исходниками на, скажем, Delphi? Я и на нем иногда пишу. А на C#/VB.NET?

Таким образом, мне нужна читалка архивов (да и просто браузер по файлам), способная искать файлы/тест в файлах по регулярным выражениям и открывать файлы в заданных программах (предварительно распаковывая файлы во временный каталог). И нечто подобное у меня уже есть -- TotalCommander.
Последний раз редактировалось BV 16.12.2007 (Вс) 20:28, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 16.12.2007 (Вс) 20:21

Хорошая программа ни при каких обстоятельствах не должна создавать папки без спроса пользователя (и даже без придупреждения) где-либо в местах, отличных от Program Files/%APPDIR%, Document And Setting/Application Data/%APPDIR%/ и прочих специальных мест.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 16.12.2007 (Вс) 22:01

Хакер писал(а):Хорошая программа ни при каких обстоятельствах не должна создавать папки без спроса пользователя (и даже без придупреждения) где-либо в местах, отличных от Program Files/%APPDIR%, Document And Setting/Application Data/%APPDIR%/ и прочих специальных мест.

Это временная папка для извлечения ресурсов. При закрытии программы она удаляется вместе с файлами. И создать в принципе ее можно и в TEMP. Так, что никакого мусора не остается. К тому же масса программ создает для своей работы и не одну папку. Возьмем к примеру Оперу. Она же не спрашивает, можно ли создать папку. А путь для создания папки можно переделать и в Document And Setting/Application Data.
По поводу хранения других исходников. Я не знаю как хранятся проекты на С+ и других языках. Но не хранятся же они на рабочем столе. Возможно их тоже можно сохранять в папку под каким-нибудь именем. Если можно, то проблем не должно возникнуть. А потом придется архивировать. Дело муторное. А как иначе в ресурсы добавить?
С разными архивами сложней. Дело в том, что у меня самораспаковывающийся архив, который распаковывается без вопросов в нужную папку. После эта папка через некоторую задержку открывается. Жаль нельзя папку в ресурсы добавлять.
И вообще, не судите особо строго. Я в принципе выложил просто идею. Ее можно всяко доработать.
C русским названием папок я конечно ошибся. Надо на английском писать. Буду иметь в виду.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 17.12.2007 (Пн) 0:27

Saturn.65, похоже, ты меня совсем не понял.
Попытаюсь объяснить по пунктам (некий набросок ТЗ):

Возможности проекта.

0. Проект предоставляет пользователю возможность навигации по файлам (как проводник/ TotalCommander/ACDSee...)
1. Есть выбор использования единой БД исходников/раздельных файлов на дисках (в т.ч. файлов в архивах)
2.0 Если была выбрана возможность использования единой БД, нужно создать мастера импорта/экспорта файлов в/из БД. Мастер должен уметь читать архивы вышеприведенных форматов и извлекать из них файлы в БД (которую крайне желательно так же сжимать каким-нибудь архиватором (тот же 7Z) при сохранении на диск). БД предпочтительней. Формат БД может быть своим.
2.1 Если была выбрана возможность использования раздельных файлов на дисках, нужно обеспечить эффективную навигацию по файлам в архивах вышеприведенных форматов
2.2 Можно учесть оба этих варианта
3. Проект предоставляет возможность поиска по именам файлов/содержимому файлов с использованием регулярных выражений (* AND NOT OR, к примеру)
4. Проект обеспечивает удобный обзор каталогов в БД или на диске, а так же их сортировку по заданным пользователем правилам
5. Проект предоставляет возможность открытия файлов ассоциированными с ними программами, а так же возможность выбора программ для открытия данных типов файлов
5.1 Проект предоставляет возможность выбора между его контекстным меню для файлов и папок и аналогичным контекстным меню проводника
6. Проект обеспечивает предпросмотр текстовых файлов внутренним текстовым редактором с подсветкой для наиболее распространенных языков
7. Проект обеспечивает гибкую настройку панели инструментов (как у TotalCommander)
8. Проект предоставляет возможность выбора языка интерфейса (по умолчанию английский, дополнительные – испанский, французский, немецкий, русский)
9. Проект предоставляет возможность расширения функциональности за счет применения Add-In’ов (по образу того же VB6)

Интерфейс.

Главное окно по образу проводника в Windows Vista, за тем лишь исключением, что непосредственно ListView (отображающий файлы) нужно вынести в MDIChild-окно, и обеспечить переключение между этими окнами через закладки
Настройки должны быть в одном окне, разделенные по категориям

Среда разработки и язык.

Предпочтительней для этих целей использовать VisualStudio 9, VC++ 9 + CLR. В крайнем случае C#/VB.NET.
VB6 нежелателен, так как крайне ограничен и морально устарел (увы, факт).

Сроки.

Порядка 6 месяцев на первую альфа-версию проекта.

Вот такой проект я бы использовал :)
Вот в таком проекте, ИМХО, нуждается среднестатистический разработчик, имеющий проблемы с упорядочиванием различных компонентов и исходников на своем ПК.
Ну что, возьмешься? Можно попытаться собрать группу энтузиастов, вдруг получится.

Кстати, не все пункты обязательны. Скажем, п. 8 можно пренебречь :) Это м… грубо говоря, план проекта в идеале.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 17.12.2007 (Пн) 9:42

BV писал(а):Ну что, возьмешься? Можно попытаться собрать группу энтузиастов, вдруг получится.

Я бы с удовольствием, но пока я не дорос. Вот если всем форумом, тогда, я думаю, реально. Я кроме VB6 не пробовал другие языки.

Хочу немного оптимизировать свой код. Я сейчас объясню ситуацию.
Добавлять в ресурсы моей программы довольно нудно.
Для каждого ресурса надо писать:
Код: Выделить всё
If Node.Key = "File1" Then
Dim B() As Byte
      B = LoadResData(102, "CUSTOM")
      Dim FF As Integer
      FF = FreeFile
      Open "C:\Кирпичи VB6\1.txt" For Binary As #FF
         Put #FF, , B()
      Close #FF
End If

И к тому же надо 7 раз изменить переменные и имя ключа. А если ресурсов больше сотни?
Идея такова:
Код: Выделить всё
TV1.Nodes.Add , , "main", "Кирпичи VB6" 'Create Main Parent
         TV1.Nodes.Add "main", tvwChild, "Подформа", "Hello World" ' [+]
            TV1.Nodes.Add "Подформа", tvwChild, "102x", "Hello World (текст)"
            TV1.Nodes.Add "Подформа", tvwChild, "103x", "Hello World (пример)"

Изменить имя ключа на номер ресурса 101; 102.. и т.д.
Однако изменять имя ключа на цифры нельзя. VB ругается.
Пришлось к числу добавлять букву "x". теперь в ресурсы добавлять гораздо проще.
Код: Выделить всё
Text2.Text = Node.Key
Dim File As String, Temp
Dim B() As Byte
      B = LoadResData(Val(Text2.Text), "CUSTOM")
      Dim FF As Integer
      FF = FreeFile
      Open "C:\Кирпичи VB6\1.txt" For Binary As #FF
         Put #FF, , B()
      Close #FF

Такого кода писать уже не надо. Достаточно одного.
Text2.Tex проходит через фильтр и буква "x" фильтруется.
Все работает прекрасно и ничего лишнего.
Только вот с открытием папки проблемы начинаются.
Код: Выделить всё
Dim B12AW() As Byte
      B12AW = LoadResData(Val(Text2.Text), "CUSTOM")
      Dim FF12AW As Integer
      FF12AW = FreeFile
      Open "C:\Кирпичи VB6\1.exe" For Binary As #FF12AW
         Put #FF12AW, , B12AW()
      Close #FF12AW
  Shell "rundll32.exe url.dll, FileProtocolHandler C:\Кирпичи VB6\1.exe", vbNormalFocus
Call sapiSleep(1000) 'в миллисекундах
ShellExecute hwnd, "open", "C:\Кирпичи VB6\Hello World", vbNullString, vbNullString, 1

Дело в том, что папка тоже хочет открыться, когда я нажимаю на открытие txt файла, хотя и не должна. Вылезает почему-то командная строка.
Видать код надо писать или только для txt или для папок.
Надо помозговать. :?
У вас нет доступа для просмотра вложений в этом сообщении.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList  
cron