erlik
Я и говорю - закомментаривание А раскомментаривать через Ctrl+K+U, но согласись, удобнее было бы как в Scite, через Ctrl+Q оба действия выполнять
А всё, нашёл.
Сообщение было успешно отредактировано Futura (03-05-2010 16:16 GMT3 часа, назад)
вообще там что то есть для введения своих сочетаний клавиш в меню сервис - параметры
добавлено спустя 4 минут
а так я вручную делаю. И вообще можно ничего не закомментаривать - имею ввиду если нужен вызов конкретной функции. У меня в тестовом файле около 10 тыщ строк с сотней функций. Но каждую функцию я могу запустить в нужный момент вызвав ее через экземпляр класса в методе Main() .
Ковырылся в Регулярных выражениях (неплохая тема для тренировки) - и сделал такой вот поисковик слов в тексте.
Может кому интересно будет.
Код:
using System.Text.RegularExpressions;
using System.Collections.Generic;
public struct FindWords
{
private static string[] _lines;
private static List<FindWords> words;
public int position;
public int number;
public static Regex _pattern;
public static Match math;
public static List<FindWords> Find(string pattern, string[] lines, out int numstring, bool flag)
{
// если флаг выставлен в true ищем точное соответствие шаблону - но без учета регистра
if (flag == true)
{
_pattern = new Regex("(?<!\\w)" + pattern + "[\\s|\\p{P}]", RegexOptions.IgnoreCase);
}
// иначе -с учетом регистра
else
{
_pattern = new Regex("(?<!\\w)" + pattern + "[\\s|\\p{P}]");
}
_lines = lines;
numstring = 0;
words = new List<FindWords> { };
for (int i = 0; i < lines.Length; i++)
{
if (lines[i] != String.Empty) // исключаем из проверки пустые строки
{
// выведем все строки для наглядности
Console.WriteLine("[{0}] {1}", i, lines[i]);
// сохраняем совпадения
math = _pattern.Match(lines[i]);
// крутим цикл пока есть совпадения
while(math.Success)
{
// записываем номер строки и позицию находки в массив
words.Add(new FindWords {number = i, position = math.Index });
math = math.NextMatch(); // обновляем позицию поиска в строке
}
numstring++; // считаем строки в файле
}
}
return words; // возвращаем массив данных\ если совпадений не было - то пустой.
}
}
class Program
{
public static void Main()
{
// поиск вхождений заданного слова в текст из считанного файла
string []text = File.ReadAllLines(@"D:\text.txt", Encoding.Default); // считываем содержимое файла в массив строк
// вводим слово для поиска
Console.WriteLine("Введите слово для поиска:");
// считываем слово из консоли
string slovo = Console.ReadLine();
int num; // сюда запишется возращенная из метода out переменная - со значением числа строк
// вызываем метод и пишем результат в наш массив с нетипизированными данными
List<FindWords> words = FindWords.Find(slovo, text, out num, true);
// итерируем результаты
foreach (var de in words)
{
Console.WriteLine("Слово найдено в строке номер [{0}] индекс вхождения в строку [{1}]", de.number, de.position);
}
Console.WriteLine("Число строк: {0}", num);
}
}
Сообщение было успешно отредактировано erlik (05-05-2010 02:28 GMT3 часа, назад) Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Futura К сведению. Не обязательно использовать именно сочетания клавиш. Имеется более удобный способ. А точнее пара кнопок на панели инструментов (закомментировать/раскомментировать текущее выделение). Почитай всплывающие подсказки.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Не буду утверждать на 100%, но мне думается (следуя здравой логике и документации) для данной задачи оба метода - эквиваленты. Первый более читабелен и лучше отвечает парадигме ООП, второй выглядит скорее как эквивалент функциональному подходу к программированию.
Сообщение было успешно отредактировано Cos (16-11-2010 02:28 GMT3 часа, назад)
Здравствуйте. Не подскажите, есть ли в бесплатной версии Microsoft Visual C# 2010, экспресс-выпуск ограничение на количество элементов управления на панели (компонент Panel) или вообще на форме в целом? Просто динамически создаю массив TextBox'ов и Label'ов, заполняю их TextBox'ами и Label'ами соответственно. И при большом количестве программа просто виснет (Винда завершает сама, как не отвечающее приложение) или если переписать код с использованием конструкции try-catch, то просто добавляются не все TextBox'ы и Label'ы. Примерно вычислил, что TextBox'ов добавляется чуть больше 4000, а Label'ов в районе 1000.
При этом ОЗУ используется где-то на 20%, а загрузка ЦП не превышает 13%.
Проблема, скорее всего, именно с добавлением - Controls.Add().
Максим Р.
Если подобное ограничение и существует, оно явно не официальное. По-своему же опыту не скажу, ибо ни разу не сталкивался с необходимостью 4000 TextBox'ов... (Секретная разработка GUI для гигантских экранов?)
Цитатаесли переписать код с использованием конструкции try-catch, то просто добавляются не все TextBox'ы и Label'ы.
Ну так поймай в catch'е выкинутое системой исключение и посмотри что за ошибка.
Цитата#Cos :
Секретная разработка GUI для гигантских экранов?
Да не
Делал программку для выполнения действий над матрицами любой размерности. Вместо DataGrid, решил сделать через массив TextBox'ов. Каждый TextBox - отдельный элемент матрицы. Так вот матрицу 100х100 он уже не может вывести.
А с try-catch вообще какие-то странности творятся... Он исключения обрабатывает, но при этом сообщение об ошибке не выводит, хотя сделал вывод через MessageBox.Show():
try
{
...//код
}
catch (Exception ex)
{
MessageBox.Show("Произошла ошибка!\nСообщение: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
В общем, сейчас через отладку обнаружил, что он создаёт добавляет на панель 7944-ый TextBox и после этого валится при создании добавлении 1986-го Label'а. Пишет: "Ошибка при создании дескриптора окна".
Сейчас написал небольшое приложение для теста. Создал в нём массив из 10000 TextBox'ов. И стал добавлять их на панель. 9975 добавляет нормально, а при добавлении 9976-го валится с ошибкой выше.
Похоже всё таки есть какое-то ограничение на общее количество элементов управления. Добавил на форму один Label, и теперь добавляются только 9974 TextBox'а.
Сообщение было успешно отредактировано Максим Р. (22-04-2011 02:14 GMT3 часа, назад)
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.