Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> длинная строка 
:(
    Опции темы
crazz
Дата 13.12.2004, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2004

Репутация: нет
Всего: нет



Столкнулся с такой траблой
надо вывести тучу текста в консоли
Т.е. есть текст из пары десятков строк, его надо вывести, текст хранится в самой программе.

Код

writeln('...');
writeln('...');
writeln('...');
writeln('...');
writeln('...');


как-то неудобно тучу раз писать writeln
можно еще так

Код

writeln( '...' +
+ '...' +
+ '...' +
+ '...' +
+ '...' );


Это уже проще, но должен же быть способ проще или я ошибаюсь?




PM MAIL   Вверх
Vit
Дата 13.12.2004, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
crazz
Дата 13.12.2004, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2004

Репутация: нет
Всего: нет



Цитата(Vit @ 13.12.2004, 00:30)
Засунуть всю строку в ресурс

Это ты называешь более простым способом?
PM MAIL   Вверх
Coder
Дата 13.12.2004, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



write('...') и цикл...
PM MAIL   Вверх
crazz
Дата 13.12.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2004

Репутация: нет
Всего: нет



при чем тут цикл
PM MAIL   Вверх
Vit
Дата 13.12.2004, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(crazz @ 13.12.2004, 01:26)
Это ты называешь более простым способом?



Да, если строка действительно большая, то получение её из ресурса будет всего несколько строк кода.


--------------------
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
PM MAIL WWW ICQ   Вверх
Полудненко Олег
Дата 13.12.2004, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



А строка статическая или динамическая? Если статическая, то проще всего делать так, как предлагает Vit.
PM MAIL   Вверх
Vladimir13
Дата 14.12.2004, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



если надо вывести ВЕСЬ текст, то не легче ли засунуть его в то же Мемо, а потом вывести с помощью writeln его на консоль?! Если надо вывести построчно, то это сделать можно в цикле
for i:=1 to Memo1.Lines.Count do
writeln(Memo1.Lines[i]);
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Snowy
Дата 14.12.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Кокой еще мемо в консольной программе???
С точки зрения минимализации размера программы, оптимальный вариант с кучей writeln.
С точки зрения минимализации кода, проще засунуть в ресурс.
Можно создать TStringList, а потом его циклом вывести.
Можно укоротить имя WriteLn до W, чтобы меньше писать.
Но IMHO, все равно только 2 варианта: писать текст в программе (разными способами), либо в текстовый файл/ресурс. Ибо процесс слишком элементарный, чтобы искать другие пути решения.
Я бы так и оставил WriteLn'ы.
PM MAIL   Вверх
crazz
Дата 15.12.2004, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2004

Репутация: нет
Всего: нет



а какой толк TStringList юзать в данном случае, все равно туда по стокам запихнуть сначала надо.
PM MAIL   Вверх
devmstr
Дата 15.12.2004, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11



Как делает "программист":
пишет прогу которая будет писать программу, которая из заданного файла читает набор строк и сама пишет часть программы типа
writeln({1 строка});
writeln({2 строка});
...
writeln({n строка});


Мы с пацаними в нашей лаборатории вечно чудим. Нам дадут какое-то задание - ну там пару месяцев назад расставить права на 20 компах. Вообщем где-то пол-дня полного методичного гемороя(одинаковая работа) и все бы было готово. Но нет мы писал день прогу, которая это делает сама, а потом день отлаживали. Итог, через два дня прога все сделала сама. "Экономия времени налицо, зато конечно много нового узнали".
excuse me за smile

Это сообщение отредактировал(а) magician - 15.12.2004, 21:00


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
crazz
Дата 15.12.2004, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2004

Репутация: нет
Всего: нет



мне не надо из файла читать, у меня прога состоит из одного экзешника а не тучи файлов
PM MAIL   Вверх
Bes
Дата 16.12.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Ммм.... если я правильно понял надо в длинющую строку вставить "энтеры".
Сам не пробовал, но вот такая идея: либо вставлять скажем через каждые 20-ть символов символ йентер insert-ом либо командой copy копировать по 20-ть символов в промежуточную строку и ее выводить.
тогда можно и репит приделать.
2Crazz: что значит "при чем тут цикл"?
PM MAIL   Вверх
Snowy
Дата 16.12.2004, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Свмый короткий вариант:
Код

var
 r: char=#13#10;
begin
 WriteLn('Первая строка'+r+
 'Вторая строка'+r+
 'Третья строка'+r+
 ...
 'n-цатая стока'+r+
 'И хватит...');
end.

Текст короче все равно не сделать.
PM MAIL   Вверх
Bes
Дата 16.12.2004, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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;


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.