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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 20:40   #1
Norton
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 12
По умолчанию Не получается добавить в memo текст больше 255 символов

Не получается добавить информацию в memo, пишит
[Error] Unit1.pas(40): String literals may have at most 255 elements
Код:
procedure TForm1.Label1Click(Sender: TObject);
begin
Memo1.Visible:=True;
Memo1.Clear;
Memo1.Lines.Add('Основное с точки зрения внешнего вида свойство кнопки - Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта "&". Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа. ');
Memo1.SetFocus;
end;
Он текст вставляет, но если символов не больше 255.
Не подскажите как сделать, что бы он в memo вставлял безграничное число символов.
Norton вне форума Ответить с цитированием
Старый 31.03.2009, 20:55   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Код:
var s:WideString;
begin
s:='строка любой длинны';
Memo1.Lines.Add(s);
//////////////////////////
//вариант 2
/////////////////////////
Memo1.Text:='строка любой длинны';
//////////////////////////
//////////////////////////
//вариант 3
/////////////////////////
Memo1.Lines.Add('255 символов строки 1');
Memo1.Lines.Add('255 символов строки 2');
Memo1.Lines.Add('255 символов строки 3');
...
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 21:11   #3
Norton
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 12
По умолчанию

получилось только по 3 варианту.Но это слишком долго...
попроще бы.Я не знаю как задать число символов.По 1 и 2 варианту, он всеравно пишет мол , у меня больше 255 символов, мне бы изменить, чтобы символов было неограниченно.
Norton вне форума Ответить с цитированием
Старый 31.03.2009, 21:16   #4
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

извеняюся немного не проверил.. действительно одна строка должна быть 255 символов.. но ее можна написать и так
Код:
var s:WideString;
begin
s:='строка 255 символов'+'строка 255 символов'+'строка 255 символов'+...+'строка 255 символов';
Memo1.Lines.Add(s);
кстати.. такую составную строку можна написать и в Memo1.Lines.Add();
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 21:22   #5
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

Попробуйте так
Код:
var
stroka:variant;
kol:integer;
....................
procedure TForm1.Button1Click(Sender: TObject);
begin
     stroka:=Edit1.Text;   
     Memo1.Lines.Add(stroka);
     kol:=length(stroka);     // Отслеживаем кол-во символов в строке
     label2.Caption:=IntToStr(kol); //
end;
program123 вне форума Ответить с цитированием
Старый 31.03.2009, 21:44   #6
Norton
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 12
По умолчанию

program123 - заносит в memo через Edit.Это я понял как.А мне надо заносить в нутри программы , где пишется код.Что бы при нажатии на Label у меня появлялось определение в memo.
Norton вне форума Ответить с цитированием
Старый 31.03.2009, 21:59   #7
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

Ну сделал так, разделил весь текст на 3 переменные
Код:
procedure TForm1.Label1Click(Sender: TObject);
var
   str:WideString;
   str1:WideString;
   str2:WideString;
begin
str:='Основное с точки зрения внешнего вида свойство кнопки - Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ';


str1:='ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта "&". Этот символ не появляется в надписи,';


str2:='а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа.';

Memo1.Lines.Add(str+str1+str2);
end;
program123 вне форума Ответить с цитированием
Старый 31.03.2009, 22:17   #8
Norton
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 12
По умолчанию

ладно спасибо большое.Разобрался.Буду делить текст по частям.
Norton вне форума Ответить с цитированием
Старый 01.04.2009, 11:58   #9
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от Norton Посмотреть сообщение
Не получается добавить информацию в memo, пишит
[Error] Unit1.pas(40): String literals may have at most 255 elements

...

Он текст вставляет, но если символов не больше 255.
...
Это требование компилятора чтобы текстовая константа в тексте программы содержала не более 255 символов.

Следующий код вполне проходит:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var s: String;
begin
  s:= 'Основное с точки зрения внешнего вида свойство кнопки - Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ';
  s:= s+'ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта "&". Этот символ не появляется в надписи,';
  s:= s+'а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа.';
  Memo1.Clear;
  Memo1.Lines.Add(s);
end;
Ошибка предложенного мною кода может возникнуть, если в компиляторе стоит директива $H.
Тогда тип String становится равным ShortString и длина переменной ограничивается 255 символами.

По умолчанию устанавливается директива {H+} и тип String равняется AnsiString и может содержать примерно 2*10^30 символов.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Содержит ли текст заданную отдельную строку длинной не более 255 из символов 0 и 1 Curtis Помощь студентам 1 15.02.2009 20:08
SQl и поля с длино более 255 символов JordanS БД в Delphi 16 21.06.2008 08:13
stringgrid поместить строку более 255 символов SeЯgey Помощь студентам 2 07.05.2008 16:41
тип поля для хранения текста > 255 символов komex БД в Delphi 4 23.09.2007 12:38
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40