| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > длинная строка |
| Автор: crazz 13.12.2004, 00:26 | ||||
| Столкнулся с такой траблой надо вывести тучу текста в консоли Т.е. есть текст из пары десятков строк, его надо вывести, текст хранится в самой программе.
как-то неудобно тучу раз писать writeln можно еще так
Это уже проще, но должен же быть способ проще или я ошибаюсь? |
| Автор: Vit 13.12.2004, 00:30 |
| Засунуть всю строку в ресурс |
| Автор: crazz 13.12.2004, 10:26 | ||
Это ты называешь более простым способом? |
| Автор: Coder 13.12.2004, 15:47 |
| write('...') и цикл... |
| Автор: crazz 13.12.2004, 15:55 |
| при чем тут цикл |
| Автор: Vit 13.12.2004, 16:55 | ||
Да, если строка действительно большая, то получение её из ресурса будет всего несколько строк кода. |
| Автор: Полудненко Олег 13.12.2004, 21:41 |
| А строка статическая или динамическая? Если статическая, то проще всего делать так, как предлагает Vit. |
| Автор: Vladimir13 14.12.2004, 08:24 |
| если надо вывести ВЕСЬ текст, то не легче ли засунуть его в то же Мемо, а потом вывести с помощью writeln его на консоль?! Если надо вывести построчно, то это сделать можно в цикле for i:=1 to Memo1.Lines.Count do writeln(Memo1.Lines[i]); |
| Автор: Snowy 14.12.2004, 10:36 |
| Кокой еще мемо в консольной программе??? С точки зрения минимализации размера программы, оптимальный вариант с кучей writeln. С точки зрения минимализации кода, проще засунуть в ресурс. Можно создать TStringList, а потом его циклом вывести. Можно укоротить имя WriteLn до W, чтобы меньше писать. Но IMHO, все равно только 2 варианта: писать текст в программе (разными способами), либо в текстовый файл/ресурс. Ибо процесс слишком элементарный, чтобы искать другие пути решения. Я бы так и оставил WriteLn'ы. |
| Автор: crazz 15.12.2004, 18:22 |
| а какой толк TStringList юзать в данном случае, все равно туда по стокам запихнуть сначала надо. |
| Автор: devmstr 15.12.2004, 20:58 |
| Как делает "программист": пишет прогу которая будет писать программу, которая из заданного файла читает набор строк и сама пишет часть программы типа writeln({1 строка}); writeln({2 строка}); ... writeln({n строка}); Мы с пацаними в нашей лаборатории вечно чудим. Нам дадут какое-то задание - ну там пару месяцев назад расставить права на 20 компах. Вообщем где-то пол-дня полного методичного гемороя(одинаковая работа) и все бы было готово. Но нет мы писал день прогу, которая это делает сама, а потом день отлаживали. Итог, через два дня прога все сделала сама. "Экономия времени налицо, зато конечно много нового узнали". excuse me за |
| Автор: crazz 15.12.2004, 22:11 |
| мне не надо из файла читать, у меня прога состоит из одного экзешника а не тучи файлов |
| Автор: Bes 16.12.2004, 13:58 |
| Ммм.... если я правильно понял надо в длинющую строку вставить "энтеры". Сам не пробовал, но вот такая идея: либо вставлять скажем через каждые 20-ть символов символ йентер insert-ом либо командой copy копировать по 20-ть символов в промежуточную строку и ее выводить. тогда можно и репит приделать. 2Crazz: что значит "при чем тут цикл"? |
| Автор: Snowy 16.12.2004, 14:14 | ||
Свмый короткий вариант:
Текст короче все равно не сделать. |
| Автор: Bes 16.12.2004, 14:36 |
| Ну да только я понял так, что нет первой и второй строки - есть одна здоровая и ее надо порезать. т.е. что-то вроде того 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; |
| Автор: Snowy 16.12.2004, 15:57 | ||
to Bes
|
| Автор: Bes 16.12.2004, 16:01 |
| Ага понЯл, а в чем тогда вообще проблема... ? |