Страница: 1 | 2 | 3 |
Вопрос: Обработка текстовой информации
Добавлено: 28.01.11 17:02
Автор вопроса: Андрей
Про посоветовать возможную реализацию следующей задумки:
[img]http://s008.radikal.ru/i305/1101/72/18a6214c8add.png[/img]. Нужно чтобы информация стекалась из этих элементов в подготовленный шаблон текстового документа, где для них заранее определено место.
Ответы
Всего ответов: 41
Номер ответа: 1
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #1
Добавлено: 28.01.11 22:57
Впринципе даже я смогу сделать такое) Допустим так:
1) Делаеш массив из значений текстовых полей.
2) Из заранее заготовленного текстового документа берёш строчку, и записываеш в новый, прибавив значение элемента массива равного номеру данной строки.
Номер ответа: 2
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #2
Добавлено: 28.01.11 23:05
Если хотите могу помочь с этой программой.
Номер ответа: 3
Автор ответа:
Андрей
Вопросов: 2
Ответов: 15
Профиль | | #3
Добавлено: 29.01.11 00:42
Был бы очень признателен за примерный шаблон. Только начинаю изучать VB слабо это представляю.
Номер ответа: 4
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #4
Добавлено: 29.01.11 10:50
вот функция, на вход подаёш массив строк, а она сохраняет в файл, в папке с программой должен быть файл с формой заполнения, и ещщё момент, т.к. VB сейчас под рукой нет, я накорябал функцию на C#, однако отличае функции на VB будет всего в паре слов.
Пример файла form.txt:
ФИО..........................................
Приезд......................................
Отбытие...................................
Количество номеров...............
Тип номера..............................
Стоимость................................
Номер ответа: 5
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #5
Добавлено: 29.01.11 10:57
если будут проблемы с отображением символов в выходном файле то строчку:
надо заменить на:
Номер ответа: 6
Автор ответа:
Андрей
Вопросов: 2
Ответов: 15
Профиль | | #6
Добавлено: 29.01.11 13:05
Спасибо большое. Займусь осмыслением)
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 29.01.11 13:17
private void save(string[] mass)
{
System.IO.StreamWriter SW = new System.IO.StreamWriter(Application.StartupPath + "\\fin.txt"
System.IO.StreamReader SR = new System.IO.StreamReader(Application.StartupPath + "\\form.txt"
foreach (string s in mass)
SW.WriteLine(SR.ReadLine() + s);
SW.Flush();
SW.Close();
SW.Dispose();
SR.Close();
SW.Dispose();
}
Номер ответа: 8
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #8
Добавлено: 29.01.11 20:56
Плюс, Захарка, если не проинициализирована переменная mass и на строке foreach (string s in mass) CLR прервет выполнение с ошибкой AgrumentNullException, то код, освобождающий ресурсы SW и SR выполнен не будет.
Номер ответа: 9
Автор ответа:
Захарка
Вопросов: 0
Ответов: 42
Профиль | | #9
Добавлено: 29.01.11 21:22
1)Насчёт IO.File.WriteAllLines(string[]), а разве большая разница в коде будет? ведь надо будет опять же в цикле сложить массив названий и значений строк, которые берутся из файла, то кода вроде даже побольше будет.
2)про инициализацию mass не подумал(
Номер ответа: 10
Автор ответа:
Андрей
Вопросов: 2
Ответов: 15
Профиль | | #10
Добавлено: 29.01.11 23:59
Скажите, как можно записать множественное нажатие на кнопку?
У меня есть кнопка и комбобокс, по нажатию на эту кнопку появляется, бывший до этого момента невидимым, еще один комбобокс, и так далее.
Номер ответа: 11
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #11
Добавлено: 30.01.11 00:17
Что значит записать множественное нажатие?
Номер ответа: 12
Автор ответа:
Андрей
Вопросов: 2
Ответов: 15
Профиль | | #12
Добавлено: 30.01.11 00:53
Я имею ввиду, что при последовательном нажатии на одну и ту же кнопку будут производиться последовательные действия с другими элементами.
Номер ответа: 13
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #13
Добавлено: 30.01.11 02:06
Ну заведи переменную типа int, при нажатии на кнопку увеличивай ее на единицу.. и в зависимости от значения этой переменной выполняй те или иные действия..
Номер ответа: 14
Автор ответа:
Андрей
Вопросов: 2
Ответов: 15
Профиль | | #14
Добавлено: 30.01.11 02:34
Спасибо за помощь
Номер ответа: 15
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #15
Добавлено: 30.01.11 05:17
Паранойя это страшное дело. Особенно когда для SW делаешь аж 2 Dispose, а для SR ни одного.
Вызывать Flush не обязательно, так как при закрытии StreamWriter буфер автоматически сбрасывается в поток (есть там ниже по стеку идет вызов Flush).
Вызывать Close и Dispose одновременно не обязательно, так как они выполняют одну и ту же операцию (Close просто вызывает Dispose). Достаточно вызвать что-то одно из них.
Для того чтоб гарантировать корректное освобождение ресурсов в случае исключения, стоит вообще убрать все вызовы Close, Dispose и т.п., и завернуть объекты в блок Using, который гарантирует вызов Dispose для объекта, когда он выходит из области видимости (даже в случае исключений).
В данном случае использование ReadAllLines/WriteAllLines нецелесообразно, только приведет к излишнему расходу памяти. Потоковое чтение/запись, на мой взгляд, здесь выглядят неплохо.
Вероятность что в метод save (Save по принятой нотации, если что) не так высока. Хотя проверку все же стоит сделать.
Гораздо выше вероятность того, что в кол-во строк в файле form не будет соответствовать кол-ву строк в массива mass. И если в файле будет меньше строк, то поток дочитается до конца и тогда уже упадет исключение.