Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.10.2013, 00:08   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
Радость Слишком большой массив данных - ошибка

Здравствуйте уважаемые.
Столкнулся с проблемой.

В компонент мемо идет большой поток данные с одного массива компонента ValueListEditor.
Данные с ValueListEditor1 он отображает в мэмо.
Вот сама суть проблемы.
Код:
procedure TForm3.sButton1Click(Sender: TObject);
//var
//s, s1, s2, s3 : string;
begin
smemo1.Lines.Add(''+ValueListEditor1.Strings.ValueFromIndex[0]+' '
+''+ValueListEditor1.Strings.ValueFromIndex[1]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[2]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[3]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[4]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[5]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[6]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[7]+' '+

...и так далее до

''+ValueListEditor1.Strings.ValueFromIndex[329]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[330]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[331]+' '+
''+ValueListEditor1.Strings.ValueFromIndex[332]+'  ');
Ошибка при компиляции
Код:
[DCC Fatal Error] Unit3.pas(36): E2156 Expression too complicated
Подскажите как упростить.

P.S. Пробовал разбивать на переменные данный массив, потом переменные соединять, но в итоге аналогичная ошибка выходит.
Jleksern вне форума
Старый 01.10.2013, 00:12   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Попробуйте сократить код. Зачем копи паста!
Код:
var
  s: string;
  i: Integer;
begin
  s := '';
  for i := 1 to 332 do
    s := s + ValueListEditor1.Strings.ValueFromIndex[i] + ' ';

  smemo1.Lines.Add(s);
end;
kangreon вне форума
Старый 01.10.2013, 00:12   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
s := ValueListEditor1.Strings.ValueFromIndex[0];
for i := 1 to 332 do
  s := s + ' ' + ValueListEditor1.Strings.ValueFromIndex[i];
smemo1.Lines.Add(s);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 01.10.2013, 00:24   #4
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Вот такая ошибка.


Если Я правильно понимаю, то обращение идет к массиву которого нету.
Действительно, парой в ValueListEditor.Stirng имеет что-то вроде такого кода
icon[0]=icon.armor_t02_u_i00
icon[1]=
icon[2]=

Я обращаюсь как раз к второй колонки. И там пусто. Нужно чтоб просто ничего не выводило или табуляция....

Последний раз редактировалось Jleksern; 01.10.2013 в 00:30.
Jleksern вне форума
Старый 01.10.2013, 00:31   #5
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Попробуйте так.
Код:
var
  i, c: Integer;
  s: string;
begin
  s := '';

  c := ValueListEditor1.Strings.Count;
  if c > 0 then
  begin
    s := ValueListEditor1.Strings.ValueFromIndex[0];
    for i := 1 to c - 1 do
      s := s + ' ' + ValueListEditor1.Strings.ValueFromIndex[i];
  end;

  sMemo1.Lines.Add(s);
end;
kangreon вне форума
Старый 01.10.2013, 00:34   #6
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Попробуйте так.
Код:
var
  i, c: Integer;
  s: string;
begin
  s := '';

  c := ValueListEditor1.Strings.Count;
  if c > 0 then
  begin
    s := ValueListEditor1.Strings.ValueFromIndex[0];
    for i := 1 to c - 1 do
      s := s + ' ' + ValueListEditor1.Strings.ValueFromIndex[i];
  end;

  sMemo1.Lines.Add(s);
end;

Низкий поклон Вам и всем кто помог. Тема закрыта !
Jleksern вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слишком большой "count" HellMercenariess Общие вопросы Delphi 1 12.06.2012 02:21
большой массив данных с несколькими переменными Dexter_M Microsoft Office Excel 27 04.10.2011 14:21
Слишком большой размер! Egik_net Microsoft Office Access 2 28.11.2009 16:38
Слишком большой обьем Зубоскалик Общие вопросы Delphi 5 03.09.2008 19:31
ошибка ORA - 01704 (Строковый литерал слишком длинный) MAcK БД в Delphi 1 01.11.2007 09:44