Как заинклудить файл в исходник?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Как заинклудить файл в исходник?

Сообщение ZozBale » 26.02.2015 (Чт) 19:03

Очень нравится в языке С, что там команда include, по сути, всего лишь добавляет произвольный текст в исходник. Поэтому я могу написать вот как-то так:

Код: Выделить всё
int very_big_array_of_constants[] = {
#include "data.txt"
};


Очень удобно! Единственное, что пока пришло в голову - создавать для каждого массива класс, в котором есть только этот массив и один метод, достающий данные из этого массива. Уродство!

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.02.2015 (Чт) 23:19

1. Никак.
2. Не понял, что ты хочешь в итоге получить. Приведи пример.

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 4:50

Решил проблему самостоятельно через partial class.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2015 (Пт) 9:22

А можно всё-таки увидеть пример? А то я так и не понял, что требовалось и чем могут помочь дополнительный класс и partial-класс.

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 11:40

Допустим, надо написать класс, для работы которого нужно огромное количество констант. Разумеется, можно их читать из текстового или бинарного файл, или даже из БД. Но это же константы! Почему не записать их раз и навсегда в теле программы? Потому что замучаешься фолдить массивы, да и IDE жутко тормозит... Partial class позволяет разделить один класс на несколько файлов.

Код: Выделить всё
static partial class BigDataCruncher
{
    private static int[] bigData = { 1, 2, 3 }; // На самом деле здесь будет стотыщпятьсот чисел. Разумеется, я не буду набивать их ручками, а сгенерирую другой программой.
}


Второй файл:

Код: Выделить всё
static partial class BigDataCruncer
{
    public static int dataCrucher(int a, int b, int c)
    {
        return bigData[a] * bigData[b] + bigData[c]; // Какие-то жутко сложные преобразования над данными из первого файла. Теперь редактировать код одно удовольствие!
    }
}

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2015 (Пт) 11:52

Ну да, вариант.
Да и с другим классом тоже вариант не плохой. Хотя код-то не на VB.NET, а на C#, где до 2015й версии не было возможности использовать статические using'и.

PS: А ведь тут и по шарпу раздел имеется ;)

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 12:03

Да я знаю, знаю, просто лень было переводить на VB, я уже давно на Бейсике не программирую. Тут вообще язык не важен - даже на PascalABC все так же. Кстати, а при чем тут статические using?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2015 (Пт) 12:09

ZozBale писал(а):Кстати, а при чем тут статические using?

В новой версии C# так делать можно:
Код: Выделить всё
using System.Console;
а в VB.NET
Код: Выделить всё
Imports System.Console
можно было делать всегда.

В твоём случае, при отдельном классе, без этой возможности приходилось бы при каждом обращении к массиву внутри класса писать ещё и имя самого класса, а с ней - просто поставить нужный using.

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 13:30

Понятно. Мне VB.NET не нравится только по одной причине - на нем неудобно писать где-либо кроме Visual Studio. А мне нравится писать в обычном редакторе типа Notepad++, это быстро и удобно.

Более того, я даже без всякой боли способен работать в редакторе без подсветки синтаксиса. Например, в metapad или в FocusWriter. Важность подсветки для программирования сильно переоценивают. Я даже слышал, что в некоторых конторах так тестируют при приеме на работу: дают сравнительно простое задание, но из разрешенного софта только простой редактор, без всяких подсветок, интеллисенс и прочего. Огромное количество соискателей отсеиваются сразу.

Что-то у нас оффтопик пошел. :)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2015 (Пт) 13:42

ZozBale писал(а):А мне нравится писать в обычном редакторе типа Notepad++, это быстро и удобно.

Писал на VB.NET в NPP - не заметил никаких проблем. Что не так-то с ним?

ZozBale писал(а):Важность подсветки для программирования сильно переоценивают.

Не могу согласиться. Удобно всё-таки. И уменьшает число очевидных косяков.
Даже Borland C++ 3.1 была подсветка, кстати, в чём-то даже круче современных (ну вот почему нигде теперь восьмеричные константы не подсвечиваются??).

ZozBale писал(а):без всяких подсветок, интеллисенс и прочего. Огромное количество соискателей отсеиваются сразу

А вот это бред. Нафига помнить api языка? Или всё-таки там есть доступ к каким-то справочникам?
Вот отключить автоформатирование (типа варианта сохранять отступ в NPP, но ничего больше) и посмотреть, насколько адекватно человек напишет код - ещё имеет смысл. Но лишать подсказок интелесенса - это явно неправильно.
Кстати, ты замечал, что в студии для VB.NET по умолчанию самое строгое автоформатирование? Вообще, создаётся у меня впечатление, что это сделано для того, чтобы кто угодно мог писать сколь угодно отвратный код, а он при этом всё равно сохранял некую степень читаемости. На мой взгляд, принципиально неправильный подход, поскольку речь идёт уже не об упрощении пользовании средой, а о поощрении безответственного отношения...

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 14:27

Qwertiy писал(а):
ZozBale писал(а):А мне нравится писать в обычном редакторе типа Notepad++, это быстро и удобно.

Писал на VB.NET в NPP - не заметил никаких проблем. Что не так-то с ним?


Честно говоря, не помню, давно было... Может, я тогда не разобрался, может, с тех пор он лучше стал гораздо... Ну вот например регистр он умеет автоматически менять, как Visual Studio? Чтобы and превращалось в And (если это оператор, конечно, а не часть строки)?

ZozBale писал(а):Важность подсветки для программирования сильно переоценивают.

Не могу согласиться. Удобно всё-таки. И уменьшает число очевидных косяков.


Вот об этом и речь. Человек приучается писать неаккуратно. Например, те, кто пользуются спеллчеккерами в Ворде, в среднем гораздо безграмотнее тех, кто пишет без них. Тут тот же принцип.

Даже Borland C++ 3.1 была подсветка, кстати, в чём-то даже круче современных (ну вот почему нигде теперь восьмеричные константы не подсвечиваются??).


Если устраивают олдскульные консольные редакторы, посмотрите FTE или eFTE, может там есть.

Кстати, ты замечал, что в студии для VB.NET по умолчанию самое строгое автоформатирование? Вообще, создаётся у меня впечатление, что это сделано для того, чтобы кто угодно мог писать сколь угодно отвратный код, а он при этом всё равно сохранял некую степень читаемости. На мой взгляд, принципиально неправильный подход, поскольку речь идёт уже не об упрощении пользовании средой, а о поощрении безответственного отношения...


При этом надо учесть, что сишарпом и бейсиком список языков не исчерпываются. Есть языки, для которых подсветка, автоформатирование и интеллисенс нужны гораздо меньше. Например, на Лиспе можно прекрасно писать в любом редакторе, который умеет хотя бы две вещи: автоиндент (пусть даже самый тупой) и подсветка скобочек. В принципе, можно даже и без них - проверено.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.02.2015 (Пт) 17:26

ZozBale писал(а):Ну вот например регистр он умеет автоматически менять, как Visual Studio?

Вроде нет. Но он это и для шарпа не умеет ведь.

ZozBale писал(а):Вот об этом и речь. Человек приучается писать неаккуратно.

От того, что среда подсказала, какие 10 перегрузок есть у метода, человек стал писать неаккуратно? Серьёзно?
От жёсткой автоподгонки под форматирование - да, но не от интеллесенса же.

ZozBale писал(а):Если устраивают

Меня вполне устраивает студия. Я про сам подход говорил. Что мешалось я давно поотключал в настройках.

ZozBale писал(а):При этом надо учесть, что сишарпом и бейсиком список языков не исчерпываются.

Я имел в виду, что в студии, из имеющихся языков, именно для VB.NET автоформатирование наиболее агрессивное.
С одной стороны, вроде бы и есть определённое сходство с VB6, но видно, что подгонка гораздо строже - по сути, всё кроме вертикальных отступов, пишется конкретным способом.
Для шарпа и плюсов можно отменить автоформатирование когда оно применилось, либо уйти со строки щелчком мыши, а в VB такие фокусы не прокатывают (если ничего не поменялось с тех пор).

ZozBale
Новичок
Новичок
Аватара пользователя
 
Сообщения: 46
Зарегистрирован: 17.02.2012 (Пт) 8:37

Re: Как заинклудить файл в исходник?

Сообщение ZozBale » 27.02.2015 (Пт) 18:29

Честно говоря, мне надоело спорить. Я не использую Visual Studio и ее интеллисенс и прекрасно живу. Я нашел для своих больших файлов программу PilotEdit. Она первая, которая вообще не тормозит на исходниках длиной тысячи строк. Завтра протестирую на десятках тысяч. А может, сегодня еще успею. Так что всем разное нравится: кому поп, кому попадья, а кому и попова дочка.


Вернуться в Visual Basic .NET

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

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

    TopList