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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 13:17   #1
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию Перенос слов

Как переносить слова, разрывая их в конце текстового поля, остальное слово переносится на новую строчку, можно не по слогам. У меня сейчас стои мемо, но мне без разницы какое будет текстовое поле, можно лабел, едит или есть какой-то компонент с такой функцией?
В инете находил все одну и ту же функцию для этого, но при запуске программы с ней выскакивает ошибка.
Или как можно организовать такой алгоритм?:
For i:=Начало_текста_Memo to Конец текста_Memo do
if Количество символов не влезает в мемо then
Перенести на следующую строку невлезающие символы.
Maxs вне форума Ответить с цитированием
Старый 02.05.2009, 13:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Что-то не понял.
Цитата:
Перенести на следующую строку невлезающие символы.
Так ведь в Мемо и так по умолчанию переносится. За это отвечает свойство WordWrap.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 13:38   #3
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

конечно для этих целей лучше использовать WordWrap.
Но если хочется принудительно сделать переносы, то можно примерно так

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
nach,i,k: integer;
str: string;
begin
str:='Выполняет поиск файла в указанных каталогах. Параметр Name определяет имя искомого файла, а параметр DirList - список каталогов';
nach:=1;
k:=25;  ///количество символов в одной строке
  for i:=1 to length(str) do
  begin
    if i=k then
    begin
      memo1.lines.add( copy(str,nach,k)+#13);
      nach:=k+1;
      k:=k+25;
    end;

  end;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 02.05.2009, 13:40   #4
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Что-то не понял.

Так ведь в Мемо и так по умолчанию переносится. За это отвечает свойство WordWrap.
Дак мне надо чтобы слово переносилось, например:
Слова должны перенос|
иться вот так, разрыва|
ясь, если не влезает в|
поле. |
Maxs вне форума Ответить с цитированием
Старый 02.05.2009, 13:48   #5
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Цитата:
Сообщение от ArtInt Посмотреть сообщение
конечно для этих целей лучше использовать WordWrap.
Но если хочется принудительно сделать переносы, то можно примерно так

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
nach,i,k: integer;
str: string;
begin
str:='Выполняет поиск файла в указанных каталогах. Параметр Name определяет имя искомого файла, а параметр DirList - список каталогов';
nach:=1;
k:=25;  ///количество символов в одной строке
  for i:=1 to length(str) do
  begin
    if i=k then
    begin
      memo1.lines.add( copy(str,nach,k)+#13);
      nach:=k+1;
      k:=k+25;
    end;

  end;
end;
Это почти то,что надо. только оно немного не правильно работает. 3 строчка копировалась на следующую, но на 2 не удалилась.
Maxs вне форума Ответить с цитированием
Старый 02.05.2009, 16:54   #6
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Не могу эту функцию настроить нормально.
Maxs вне форума Ответить с цитированием
Старый 02.05.2009, 17:19   #7
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Вот исправленный вариант, если строка = 25 символов.
Исправить надо было в copy(str,nach,25) -где str вся строка, nach- c какого символа копировать, 25 - количество скопированных символов.
Код:
var
nach,i,k: integer;
str: string;
begin
str:='Выполняет поиск файла в указанных каталогах. Параметр Name определяет имя искомого файла, а параметр DirList - список каталогов';
nach:=1;
k:=25;  ///количество символов в одной строке
  for i:=1 to length(str) do
  begin
    if i=k then
    begin
      memo1.lines.add( copy(str,nach,25)+#13);
      nach:=k+1;
      k:=k+25;
    end;

  end;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 02.05.2009, 20:08   #8
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию

Спасибо, но при изменении количества символов в строке опять все сбивается. Меняю все(3) 25 на 50. И при изменении шрифта это не будет работать.
Maxs вне форума Ответить с цитированием
Старый 02.05.2009, 20:58   #9
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Странно изменял параметры все работает нормально, выкладывай исходный код как изменял.
Код:
var
nach,i,k: integer;
str: string;
begin
Memo1.Font.Name:='Arial Black';

str:='Выполняет поиск файла в указанных каталогах. Параметр Name определяет имя искомого файла, а параметр DirList - список каталогов';
nach:=1;
k:=50;  ///количество символов в одной строке
  for i:=1 to length(str) do
  begin
    if i=k then
    begin
      memo1.lines.add( copy(str,nach,50)+#13);
      nach:=k+1;
      k:=k+50;
    end;

  end;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос слов в StringGrid artemavd Общие вопросы Delphi 1 17.03.2009 15:58
перенос слов АлёнаP Microsoft Office Access 0 17.03.2009 09:29
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Перенос слов по слогам (не могу разобраться с алгоритмом) Only Love Помощь студентам 1 21.05.2007 22:43