Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

как разделить строку на подстроки определенной длинны   Найти похожие ветки 

 
lena19   (2004-06-10 20:20) [0]

всем привет
народ чем можно заменить такой код
s:string;s1:tstringlist;
memo1.text:=s;
s1[1]:=memo1.lines.string(1);

нужно разделить строку на подстроки определенной длинны
может есть какая функция а то уж больно не хочется для этого memo использовать


 
YurikGl ©   (2004-06-10 20:25) [1]

Можно TString использовать...
А вообще ищешь символы конца строки #13 и выделяешь нужную строчку.


 
lena19   (2004-06-10 20:46) [2]

в переменной S нет сивола конца строки потому что ее ещо ни кто не делил это одна большая строка


 
YurikGl ©   (2004-06-10 21:14) [3]

функция copy(st,poz,N) выделяет из строки st подстроку длиной n симвлов начиная с позции poz


 
RealRascal ©   (2004-06-10 22:50) [4]

Эта функция делит строку s на подстроки с учетом разделителей Separators(их может быть несколько) возвращает результат в TStringlist

Function ExtractStrings(Const s: String; Separators: String):
  TStringlist;
Var
  i, j             : integer;
  s1               : String;
Begin
  Result:=TStringList.Create;
  i:=1;
  j:=1;
  While i<length(s) Do
     Begin
        If pos(s[i], Separators)>0 Then
           Begin
              s1:=copy(s, j+1, i-j-1);
              If s1<>"" Then
                 Result.Add(s1);
              j:=i
           End;
        inc(i)
     End;
  s1:=copy(s, j+1, i-j);
  If (s1<>"")And(pos(s1, separators)=0) Then
     Result.Add(s1);
End;


 
lena19   (2004-06-11 09:32) [5]

я наверно плохо вопрос сформулировала в моей строке нет ни каких разделителей и сепараторов тозе есть тока размер канвы для вывода .если задать размер мемо то он автоматом делит строку на подстроки с учотом размера канвы етото мне и нужно чтоб строка вписалась в заданный квадрат с ограничением по длинне не в знако местах а в пикселях


 
KSergey ©   (2004-06-11 09:38) [6]

Ну и перефразировочка...

Canvas.TextWidth

или сразу DrawText(Canvas.Handle,...

Пример использования можно глянуть в исходниках VCL, метод TCustomLabel.DoDrawText модуля StdCtrls


 
SergP ©   (2004-06-11 09:43) [7]

На сколько я понял строку нужно делить в месте расположения пробела,ттак чтобы получившийся кусок не превышал заданный размер...
С помощью copy, pos, delete можно все поделить как хочешь, если при этом учитывать макс. количество символов в одной подстроке.
Когда-то приходилось такое делать.. Но не знаю или найду этот код. а писать заново времени нет...

Но если:

> с учотом размера канвы

т.е. если ширина задана в пикселях, то хз...


 
Anatoly Podgoretsky ©   (2004-06-11 10:07) [8]

lena19   (11.06.04 09:32) [5]
Сложновато, да и неудобно видеть половину символа в одной строке а вторую половину в следующей.


 
lena19   (2004-06-11 16:15) [9]

to anatoly
нет букву пополам делить не надо, а вот слово, если оно больше
ширины канвы уже придется разорвать. в остальных случаях перенос осуществлять по пробелам .
не ужели в API нет такой функции, веть ето используется в почти любом окне которое работает с текстом.


 
evvcom ©   (2004-06-13 02:22) [10]


> не ужели в API нет такой функции

Я о такой не слышлал, хотя я мало в этом направлении работал.
А написать самой можно, учитывая [3], [6], возможно и какие-то другие.


 
Anatoly Podgoretsky ©   (2004-06-13 13:37) [11]

Canvas.TextWidth



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.032 c
6-1083310141
Smirnoff
2004-04-30 11:29
2004.06.27
ftp - пересылка файла


3-1085756667
Bizons
2004-05-28 19:04
2004.06.27
GEN_ID() в IB6


1-1086887027
nester
2004-06-10 21:03
2004.06.27
Как зашифровать exe-шник и расшифровать его на лету.


14-1086778816
Анатолий
2004-06-09 15:00
2004.06.27
Конвертер CHM-файлов


1-1086594562
Spectre
2004-06-07 11:49
2004.06.27
Как скопировать элемент TreeView с "детьми"?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский