![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| crazz |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2004 Репутация: нет Всего: нет |
Столкнулся с такой траблой
надо вывести тучу текста в консоли Т.е. есть текст из пары десятков строк, его надо вывести, текст хранится в самой программе.
как-то неудобно тучу раз писать writeln можно еще так
Это уже проще, но должен же быть способ проще или я ошибаюсь? |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Засунуть всю строку в ресурс
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| crazz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2004 Репутация: нет Всего: нет |
Это ты называешь более простым способом? |
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
write('...') и цикл...
|
|||
|
||||
| crazz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2004 Репутация: нет Всего: нет |
при чем тут цикл
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Да, если строка действительно большая, то получение её из ресурса будет всего несколько строк кода. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Полудненко Олег |
|
|||
|
Українець ![]() ![]() Профиль Группа: Участник... Сообщений: 556 Регистрация: 13.8.2003 Репутация: 1 Всего: -11 |
А строка статическая или динамическая? Если статическая, то проще всего делать так, как предлагает Vit.
|
|||
|
||||
| Vladimir13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 8.12.2004 Где: Волгоград, Россия Репутация: 1 Всего: 1 |
если надо вывести ВЕСЬ текст, то не легче ли засунуть его в то же Мемо, а потом вывести с помощью writeln его на консоль?! Если надо вывести построчно, то это сделать можно в цикле
for i:=1 to Memo1.Lines.Count do writeln(Memo1.Lines[i]); --------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Кокой еще мемо в консольной программе???
С точки зрения минимализации размера программы, оптимальный вариант с кучей writeln. С точки зрения минимализации кода, проще засунуть в ресурс. Можно создать TStringList, а потом его циклом вывести. Можно укоротить имя WriteLn до W, чтобы меньше писать. Но IMHO, все равно только 2 варианта: писать текст в программе (разными способами), либо в текстовый файл/ресурс. Ибо процесс слишком элементарный, чтобы искать другие пути решения. Я бы так и оставил WriteLn'ы. |
|||
|
||||
| crazz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2004 Репутация: нет Всего: нет |
а какой толк TStringList юзать в данном случае, все равно туда по стокам запихнуть сначала надо.
|
|||
|
||||
| devmstr |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 28.4.2004 Где: Ukraine Репутация: 2 Всего: 11 |
Как делает "программист":
пишет прогу которая будет писать программу, которая из заданного файла читает набор строк и сама пишет часть программы типа writeln({1 строка}); writeln({2 строка}); ... writeln({n строка}); Мы с пацаними в нашей лаборатории вечно чудим. Нам дадут какое-то задание - ну там пару месяцев назад расставить права на 20 компах. Вообщем где-то пол-дня полного методичного гемороя(одинаковая работа) и все бы было готово. Но нет мы писал день прогу, которая это делает сама, а потом день отлаживали. Итог, через два дня прога все сделала сама. "Экономия времени налицо, зато конечно много нового узнали". excuse me за Это сообщение отредактировал(а) magician - 15.12.2004, 21:00 -------------------- Think different ©Steve Jobs ![]() |
|||
|
||||
| crazz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2004 Репутация: нет Всего: нет |
мне не надо из файла читать, у меня прога состоит из одного экзешника а не тучи файлов
|
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Ммм.... если я правильно понял надо в длинющую строку вставить "энтеры".
Сам не пробовал, но вот такая идея: либо вставлять скажем через каждые 20-ть символов символ йентер insert-ом либо командой copy копировать по 20-ть символов в промежуточную строку и ее выводить. тогда можно и репит приделать. 2Crazz: что значит "при чем тут цикл"? |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Свмый короткий вариант:
Текст короче все равно не сделать. |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Ну да только я понял так, что нет первой и второй строки - есть одна здоровая и ее надо порезать. т.е.
что-то вроде того Var C,i,j,z,L:integer; r,S:string; begin r:=#13+#10; z:=5; S:=edit1.text; //отсюда строку берем L:=length(S); c:=trunc(l/(z+1)); for i:=1 to c do Insert(r,S,i*z+i-1); ShowMessage(S); //сюда запихиваем end; Это пример дельфовый но сам механизм работает. Или так если copy больше нравится Var z:integer; r,S:string; begin Memo1.Clear; //очищает вывод S:=edit1.text; //отсюда берем z:=5; Repeat if length(S)>z then begin R:=copy(S,1,z); S:=copy(S,z+1,length(S)-z); end else begin R:=copy(S,1,length(S)+1); S:=''; end; Memo1.Lines.Add®; //сюда суем. Until S=''; end; |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |