WrapText — Функция Delphi


WrapText для WideString в Delphi

В Delphi есть функция WrapText :

Теперь мне нужна версия, которая обрабатывает WideStrings:

Является ли какая-либо такая функция уже написанной где-то уже?

ПРЕДУПРЕЖДЕНИЕ. Не каждый широкий строковый символ имеет 2 байта

Вот почему я боюсь писать его

Обновить. Пример символа, который принимает более 2 байтов для представления:

Капитал Латинской W с кольцом и cedilla

  • Баны: 57 00 66 03 27 03
  • Отображается в Chrome 17:
  • Отображается в Internet Explorer 9:
  • Отображается в Блокноте с использованием пользовательского интерфейса Segoe:
  • Представлено в Блокноте с помощью Consolas:
  • Отображается в вашем браузере шрифтом sans-serif: W ̧̊
  • Отображается в вашем браузере шрифтом monospaced : W̧̊

WrapText — Функция Delphi

Пробовал переписать SynEdit.pas, чтобы property WoarWrap стало доступно (из protected в public перенес) и перекомпилить, но ничего не изменяецца :( А мне нужен WordWrap, и хотелось бы убрать Virtual Space (возможность ставить курсор в любом месте экрана).

А этот
> SynEdit

случайно не поддерживает автоформатирование исходного текста программ. (Помещаешь туда какой.л. скрипт, а он выделяет ключевые слова и коментарии например?)

Почему ты взял именно СанЕдит? В чём его приемущество.
Если никакого, то используй стандартный Рич.

Чтоб у тебя в Code Editore WordWrap включился :)

SynEdit поддерживает автоформатирование, преимущество его во многом — и в подсветке синтаксиса, и в других интересностях.

> Чтоб у тебя в Code Editore WordWrap включился :)
:(

Есть функция WrapText в Delphi, она переносит текст.
SynEdit.Text := WrapText(Syn.Text, #13#10, [«.»,» «,#9,»-«], 80);
Но в в этом дельфийском примере #13#10 — NL (new line, новая строка), а мне не нужно создавать новые строки, мне нужно лишь отображать как новые.

Может есть другой символ, который переносит для видимости?

Ты не поверишь, но у меня в TSynEdit есть свойство WordWrap и оно замечательно работает. А еще на Gutter»е такие прикольные картинки рисуются, когда текст переносится на другую строку.

Может версию SynEdit»а тебе надо обновить?

В более ранних версиях SynEdit»a WordWrap»а не было.
Сейчас добавили.

WrapText — Функция Delphi

type TSysCharSet = set of Char;

Описание
Функция разбивает строку S на подстроки, вставляя в строку символы-разделители, указанные в параметре BreakStr.
Символы-разделители вставляются в позиции, следующие за символами указанными в наборе nBreakChars. Параметр MaxCol определяет максимальную длину полученных строк (на практике длина строк в некоторых случаях может превышать MaxCol). Функция не вставляет разделители в строкицитаты (строки заключенные в одиночные кавычки). В параметре BreakStr, могут указываться как любые допустимые одиночные символы (буквы, цифры, управляющие символы; например, #13), так и целые строки.

Пример
var
S, R: string;
begin
S:= ‘123456_123456_123456’;
R:= WrapText( S, #13#10, [‘1’, ‘4’], 4);
MessageDlg( R, mtInformation, [mbOk], 0);
end;

Илон Маск рекомендует:  Моделирование при сжатии текстовых данных другие методы статистического моделироваhия

WrapText для WideString в Delphi

В Delphi есть функция WrapText :

Теперь мне нужна версия, которая обрабатывает WideStrings:

Является ли какая-либо такая функция уже написанной где-то уже?

ПРЕДУПРЕЖДЕНИЕ. Не каждый широкий строковый символ имеет 2 байта

Вот почему я боюсь писать его

Обновить . Пример символа, который принимает более 2 байтов для представления:

Капитал Латинской W с кольцом и cedilla

  • Баны: 57 00 66 03 27 03
  • Отображается в Chrome 17:
  • Отображается в Internet Explorer 9:
  • Отображается в Блокноте с использованием пользовательского интерфейса Segoe:
  • Представлено в Блокноте с помощью Consolas:
  • Отображается в вашем браузере шрифтом sans-serif: W ̧̊
  • Отображается в вашем браузере шрифтом monospaced : W̧̊

WrapText — Функция Delphi

Splits a string into multiple lines as its length approaches a specified size.

WrapText scans a string for occurrences of any of the characters specified by nBreakChars and inserts a line-break, specified by BreakStr, at the last occurrence of a character in nBreakChars before MaxCol. Line is the text WrapText scans. MaxCol is the maximum line length.

If the BreakStr and nBreakChars parameters are omitted, WrapText searches for space, hyphen, or tab characters on which to break the line and inserts a carriage return/line feed pair (Windows) or a linefeed (Linux) at the break points.

WrapText does not insert a break into an embedded quoted string (both single quotes and double quotes are supported).

For example, the following call wraps the text into two lines at the last space character:

WrapText(‘The rain in Spain falls mainly on the plain.’, #13#10, [‘.’,’ ‘,#9,’-‘], 42);

WrapText(«The rain in Spain falls mainly on the plain.», «\r\n», bchars, 42);

Клуб программистов

Delphi programming

Подписаться на рассылку:

WrapText

Добавляет символы переноса строки в заданную строку для имитации — многострочного текста

Описание:

Процедура WrapText разделяет строку текста SourceString наиболее лучшим образом на несколько строк, передаваемых в качестве результата.

В действительности, она просто вставляет символы обрыва строки в результирующую строку так, что на экране результат покажется в несколько строк.

В простейшем случае, стандартные символы обрыва строки (#13#10 — Возврат каретки + перенос строки) вставляются после каждой последовательности слов, встреченных в исходной строке и умещающихся в MaxColumnSize символов.

Если максимальный размер колонки опущен, он принимается равным 45.

Вставляет символы обрыва строки BreakString после встреченных символов из набора BreakSet, до тех пор, пока не будет достигнут MaxColumnSize.

Если символы не были найдены, в любом случае вставляется BreakString.

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

Пример кода:

var
before, after : string;

begin
// Set up a long string
before := ‘This is quite a long string, at least 50 chars long’;

// Split it into multiple lines, each 10 characters long
after := WrapText(before, 10);

// Show the before and after strings
ShowMessage(before);
ShowMessage(»);
ShowMessage(after);
end;

Результат выполнения:

This is quite a long string, at least 50 chars long

Илон Маск рекомендует:  Что такое код iis #include

This is
quite a
long
string,
at least
50 chars
long

Пример кода:

var
before, after : string;

begin
// Set up a long string
before := ‘Ten = 10. Eleven = 11. One hundred = 100.’;

// Split it into multiple lines, terminated by a dot
after := WrapText(before, #13#10, [‘.’], 1);

// Show the before and after strings
ShowMessage(before);
ShowMessage(»);
ShowMessage(after);
end;

Результат выполнения:

Ten = 10. Eleven = 11. One hundred = 100.

Ten = 10.
Eleven = 11.
One hundred = 100.

Delphi 7, переобразование строки (string) в число (integer) c дальнейшим решением!

14.11.2009, 22:48

Переобразование из строки char в string
string H=»abjfkn?8jkhf83jgl3″; int k=0; int j=0; .

Перевести не целое число string в integer
Доброго времени суток, такая проблема, копирую с сайта числа , но они не целые (к примеру : 0.25) .

Преобразование String строки с шестнадцатеричным числом в Integer
Есть строка: String str = «0xff»; ее необходимо преобразовать в int число. Есть ли легкие пути.

Написать программу, содержащую функцию getInt(name:string; k:integer):integer
Ребята, помогите пожалуйста с задачей! Написать программу, содержащую функцию getInt(name:string;.

WrapText для WideString в Delphi

Delphi имеет WrapText функцию:

Теперь мне нужна версия, которая обрабатывает WideStrings:

написано где-то уже любая такая функция?

ВНИМАНИЕ: Не каждый широкий символьная строка 2-байт

Вот почему я боюсь, чтобы написать это

Update: Пример символа, который занимает более 2 -bytes представлять:

прописной латинской W с кольцом и седилем

  • Б: 57 00 66 03 27 03
  • Топленые в Chrome 17:
  • визуализации в Internet Explorer 9:
  • Rendered в блокноте с помощью Segoe UI:
  • визуализации в блокноте с помощью Consolas :
  • Вынесено в вашем браузере шрифтом без засечек: W-
  • Вынесено в вашем браузере monospaced шрифта: W̧̊

Создан 14 мар. 12 2012-03-14 14:04:53 Ian Boyd

Возможно, это поможет скопировать источник из Delphi 2009 в качестве ответа. +1 в любом случае – TLama 14 мар. 12 2012-03-14 14:08:44

@TLama: Вот почему я отметил его как последнюю версию Delphi, у которой не было лучшей поддержки в широте (чтобы удержать Дэвида от моей спины!) – Ian Boyd 14 мар. 12 2012-03-14 14:14:13

Компонент Tnt-компонента имеет ‘WideWrapText’ в’ TntSysUtils.pas’ – kobik 14 мар. 12 2012-03-14 14:21:10

@IanBoyd Да, без сомнения, это действительно D5, но решение D2007 будет таким же! ;-)David Heffernan 14 мар. 12 2012-03-14 14:51:16

* У меня есть мечта *, что однажды я проснусь, и мое приложение-монстр D5 преобразуется волшебным образом в XE2 . / – kobik 14 мар. 12 2012-03-14 16:11:58

@DavidHeffernan Тихо! Представьте, для целей этого вопроса, что я в «современном» возрасте. :)Ian Boyd 14 мар. 12 2012-03-14 18:10:52

Oi vey, чувак, если вы имеете дело с данными Unicode XML и типами WideString каждый день (по вашему мнению), вам действительно нужно вырезать свою древнюю версию delphi! – Warren P 30 мар. 12 2012-03-30 16:40:28

@WarrenP Получил пару десятков тысяч долларов, чтобы мы могли обновить? – Ian Boyd 30 мар. 12 2012-03-30 18:33:54

BTW, я только что заметил ваш «ПРЕДУПРЕЖДЕНИЕ: не каждый широкий строковый символ — 2 байта». Почему вы так думаете? это неверно. – kobik 01 май. 12 2012-05-01 15:56:20

Илон Маск рекомендует:  Маскирование в CSS

@kobik Посмотрите на charater ** W̧̧̧̧ͦ ** («Столица Латинской W с кольцом и седильей»). Это один символ *. Но в UTF-16 было бы шесть байтов: ’57 00 66 03 27 03′ (или’ U + 0057 U + 0366 U + 0327′) Если вы должны были слепо перевернуть каждую кодовую точку UTF-16: от ‘0057 0366 0327 ‘to’ 0327 0366 0057′, вы получите недействительную ерунду. – Ian Boyd 01 май. 12 2012-05-01 18:20:10

Исправление: ‘W̧ͦ’ – Ian Boyd 01 май. 12 2012-05-01 19:28:59

Интересно . Я вижу этот символ только в FireFox. IE и Google Chrome показывают «W» и некоторые неизвестные тарабарщины. если я скопирую его в Блокнот и сохраню как Юникод, я получаю 8 байтов (2 для заголовка Юникода). поэтому я думаю, что ‘WideString’ будет содержать 6 байтов (3′ WideChar’s). но этот факт интересен тем, что доза не влияет на то, что ‘WideChar’ составляет 2 байта. Интересно, как вы можете показать этого персонажа в блокноте, например . – kobik 01 май. 12 2012-05-01 21:12:34

@kobik О ‘WideChar’ определенно два байта, но не все * символы * вписываются в один 2-байтовый’ WideChar’. Вот почему в вопросе есть предупреждение. Персонаж Chrome отображает символ; Internet Explorer отображает cedilia правильно, но кольцо слишком далеко вправо) – Ian Boyd 01 май. 12 2012-05-01 21:29:35

поэтому W + cedilla + ring представляет собой глиф. не характер. – kobik 01 май. 12 2012-05-01 21:51:44

Функция Delphi преобразовать результат WrapText в TStringList

Я использую эту функцию, чтобы вставить возврат каретки на строке так красиво отформатирован для отправки по электронной почте:

Проблема заключается в моем почтовом клиенте имеет предел 1023 символов при обработке строк. Таким образом , если исходная длина м больше , чем 1023, он получает обрезано (Примечание: клиент электронной почты , вероятно , имеет событие для обработки этой ситуации, но я думаю, что простой подход, чтобы просто кормить его натягивает меньше предела).

Я ищу « WrapTextToStringList функции» , как это:

Так сказать, что это прошло 220 символов тела сообщения электронной почты. Результаты будут представлять собой список строк с приблизительно 4 записей.

Я думаю , что это просто сводится к созданию функции , которая разбирает строку на # 13 # 10 в списке строк.

Любой человек есть?

TStringList уже имеет встроенный метод для разбора строки на # 13 # 10 в списке строк.

Это будет заполнить список путем разбора строки и создать новую запись в списке, когда он находит возвращение.

Delphi 7, переобразование строки (string) в число (integer) c дальнейшим решением!

14.11.2009, 22:48

Переобразование из строки char в string
string H=»abjfkn?8jkhf83jgl3″; int k=0; int j=0; .

Перевести не целое число string в integer
Доброго времени суток, такая проблема, копирую с сайта числа , но они не целые (к примеру : 0.25) .

Преобразование String строки с шестнадцатеричным числом в Integer
Есть строка: String str = «0xff»; ее необходимо преобразовать в int число. Есть ли легкие пути.

Написать программу, содержащую функцию getInt(name:string; k:integer):integer
Ребята, помогите пожалуйста с задачей! Написать программу, содержащую функцию getInt(name:string;.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL