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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 12:30   #1
vasyaRyzhyi
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 10
По умолчанию TMemo

На форме только memo1
Объявляю
Код:
var
str: string;
И делаю строку 5000 символов.
Добавляю
Код:
form1.Memo1.Lines.Add(str);
Читаю
Код:
str:=Memo1.Lines[0];
ShowMessage('new length='+IntToStr(length(str)));
получаю 1024
Что тут не так?
Код:
Если form1.ListBox1.Items.Add(str);
все нормально
но листбокс не дает редактировать на экране.

From Stilet: еще раз неотформатируешь пост - тему закрою.

Последний раз редактировалось Stilet; 27.02.2011 в 14:51.
vasyaRyzhyi вне форума Ответить с цитированием
Старый 27.02.2011, 13:02   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Может быть 5000 символов многова-то для одной строки в Memo? Может есть ограничения?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 27.02.2011, 13:09   #3
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

а можеш ошібка изза того что в string можно вписаь только 256 символов?
Pein95 вне форума Ответить с цитированием
Старый 27.02.2011, 13:57   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Сообщение от Pein95 Посмотреть сообщение
а можеш ошібка изза того что в string можно вписаь только 256 символов?
точно, подшитаи, после 256 отшет идет с начала с 0
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 27.02.2011, 14:16   #5
vasyaRyzhyi
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Pein95 Посмотреть сообщение
а можеш ошібка изза того что в string можно вписаь только 256 символов?
Возможно всё Но со строкой 1024 все нормально, чудеса появляются когда >1024
C 256 нет проблем вообще.
vasyaRyzhyi вне форума Ответить с цитированием
Старый 27.02.2011, 14:18   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
а можеш ошібка изза того что в string можно вписаь только 256 символов?
вообще то string вмещает до 2ГБ текста.
стоит подучить основы Delphi, а не Pascal.(из паскаля в Делфи есть тип ShortString, именно он вмещает 255 символов)

ТС, может потому что у вас строка содержит нечитабельные символы?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2011, 14:37   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

да это в общем известная проблема. В конце там, как обычно, все списали на мелкомягких.

По-любому внутри Дельфи есть ограничение на 4096 символов, так что 5000 не получится. Можно RichEdit попробовать, но там тоже не густо.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 27.02.2011, 14:39   #8
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще то string вмещает до 2ГБ текста.
стоит подучить основы Delphi, а не Pascal.(из паскаля в Делфи есть тип ShortString, именно он вмещает 255 символов)

ТС, может потому что у вас строка содержит нечитабельные символы?
Да, может в строке встречается 0 ?
Посмотри в отладчике символ #0 в строке
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 27.02.2011, 16:15   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. подтверждаю. Это связано с тем, что Memo - визуальный компонент (больше 1024 он отобразить не может, поэтому и отрасывает всё).
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s : AnsiString;
  i : integer;
begin
  SetLength(s, 5000);
  for i:=1 to 5000 do
    s[i] := '*';

  ShowMessage('Length s = '+InttoStr(Length(s)));

  Memo1.Lines.Clear;
  Memo1.WordWrap := false;
  Memo1.Lines.Append(s);

  s := Memo1.Lines[0];
  ShowMessage('After Memo Length s = '+InttoStr(Length(s)));

end;
Ещё один повод не пользоваться этим тормозным TMemo
а для обработки строк использовать TStringList
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2011, 11:31   #10
vasyaRyzhyi
Пользователь
 
Регистрация: 27.02.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Можно RichEdit попробовать, но там тоже не густо.
Тоже пробовал. Для RichEdit максимум 4096 и он еще хуже чем Memo.
В Memo, если в 1024 не влазит, то переносит на след.строку, а RichEdit просто рубит.
vasyaRyzhyi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TMemo George2010 Компоненты Delphi 1 01.09.2010 17:16
TMemo Valera Помощь студентам 14 04.08.2008 10:56
TMemo terminadoor Помощь студентам 10 23.07.2008 19:41
Tmemo BlackOmen Общие вопросы Delphi 2 16.03.2008 21:03