Формирование текстового файла с колонками, как уровнять?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Формирование текстового файла с колонками, как уровнять?

Сообщение Pantalone » 29.09.2007 (Сб) 20:20

Делаю файл текстовый, в котором информация разделена на колонки посредством табуляции. Но в некотрых случаях информация получается длинноватая и ячейки некоторых строк уезжают. Даже двойная табуляция не спасает.
Может кто занимался выводом отчетов в текстовый файл?

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

Сообщение Хакер » 29.09.2007 (Сб) 20:27

Делить на колонки, определять макс. ширину для каждой колокни, лсетить, джоинить, записывать в файл и радоваться.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 29.09.2007 (Сб) 21:02

А по русски? :)

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 29.09.2007 (Сб) 21:58

Код: Выделить всё

Private Sub Form_Load()

Open "TESTFILE.TXT" For Output As #1 '
Print #1, "10 пробелов между этой строкой"; Spc(10); "и этой строкой."
Close #1    '



Debug.Print Spc(30); "После 30 пробелов..."

End Sub

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 29.09.2007 (Сб) 22:03

А лучше напиши сколько тебе надо колонок.
:D

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 29.09.2007 (Сб) 22:29

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

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

Сообщение Хакер » 29.09.2007 (Сб) 22:39

Pantalone
Тебе для моноширинных шрифтом надо или же для любых?

netdemon
Когда ты наконец перестанешь писать бредовые сообщения?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 29.09.2007 (Сб) 22:43

Хакер
Хотелось бы для любых.

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

Сообщение Хакер » 29.09.2007 (Сб) 22:47

Pantalone
Тогда при поиске макс. ширины надо использовать не Len(txt) а TextWidth(txt). И размер паддинга определять аналогичным образом, из расчёта (MaxWidth-TextWidth(CurrentTxt)) / TextWidth(" ").

TextWidth разумеется метод чего-нибудь контейнеро-образного.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 29.09.2007 (Сб) 23:10

Есть функция стандартная вставки пробелов. Учитывает текущие параметры шрифта.

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 29.09.2007 (Сб) 23:22

Сейчас код допишу, заюзаю и выложу.

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 29.09.2007 (Сб) 23:23

Вместо критики посмотрел бы мою тему и помог раз умный такой. :D

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

Сообщение Хакер » 29.09.2007 (Сб) 23:27

netdemon
Устное предупреждение за неиспользование кнопки [Правка]. В следующий раз (если он будет) последует неустное замечание.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 30.09.2007 (Вс) 0:00

Заюзай этот код.
Вложения
Report.zip
(5.46 Кб) Скачиваний: 46

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 30.09.2007 (Вс) 3:09

netdemon писал(а):Заюзай этот код.

Спсибо за труд, но посмотри, шрифт ариал и твой код:
Вложения
TESTFILE.GIF
(8.66 Кб) Скачиваний: 33

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Сообщение netdemon » 30.09.2007 (Вс) 18:40

Тогда вот так, как писал ХАКЕР.







Pantalone
Тогда при поиске макс. ширины надо использовать не Len(txt) а TextWidth(txt). И размер паддинга определять аналогичным образом, из расчёта (MaxWidth-TextWidth(CurrentTxt)) / TextWidth(" ").

TextWidth разумеется метод чего-нибудь контейнеро-образного.
_________________
Будет день, и я вернусь туда... где не ждали,
Туда... где в печали,
Туда... где забыли,
Туда... где любили...


Вернуться в Visual Basic 1–6

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

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

    TopList