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

Вниз

Расщепление строки   Найти похожие ветки 

 
t4   (2005-01-05 14:08) [0]

Уважаемые мастера.
Скажите как из строки "лимон яблоко киви"
выбрать лимон яблоко киви и
засунуть их label1,label2,label3.Caption соответственно
Спасибо.


 
begin...end ©   (2005-01-05 14:09) [1]

TStringList


 
franky ©   (2005-01-05 14:11) [2]


> Уважаемые мастера.
> Скажите как из строки "лимон яблоко киви"
> выбрать лимон яблоко киви и
> засунуть их label1,label2,label3.Caption соответственно
> Спасибо.


Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:

сору( Строка, р, п ) где:

строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;
р — номер первого символа, с которого начинается выделяемая подстрока;
n — длина выделяемой подстроки. Например, в результате выполнения инструкций


 
franky ©   (2005-01-05 14:13) [3]

Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так:
сору( Строка, р, п ) где:
строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;
р — номер первого символа, с которого начинается выделяемая подстрока;
n — длина выделяемой подстроки. Например, в результате выполнения инструкций
st:= "Инженер Иванов"; fam:=copy(st, 9, 6) ;
значением переменной fam будет строка "Иванов1.


 
begin...end ©   (2005-01-05 14:19) [4]

> t4   (05.01.05 14:08)

См. также:

http://delphimaster.net/view/1-1104831952/


 
KSergey ©   (2005-01-05 14:26) [5]

Сегодня выщеплять слова - несомненный хит!


 
ssk ©   (2005-01-05 14:31) [6]

добавлю и я свою копеечку:

функция возвращает номер слова из строки
str - строка
Index - номер слова

function GetSubStr(str: string; Index: byte): string;
var
 w: string;
begin
 repeat
   str := TrimLeft(str);
   w := "";
   repeat
     if Length(str) > 0 then
       begin
         w := w + str[1];
         delete(str, 1, 1);
       end;
   until (pos(" ", str) = 1) or (Length(str) = 0);
   dec(Index);
 until Index = 0;
 Result := w;
end;


 
begin...end ©   (2005-01-05 14:36) [7]

> [6] ssk ©   (05.01.05 14:31)

> функция возвращает номер слова из строки

Функция явно не номер возвращает.


 
KSergey ©   (2005-01-05 14:38) [8]

>  [6] ssk ©   (05.01.05 14:31)

По-моему, очень неудачная реализация ввиду больших накладных расходов: для поиска пробелов постоянно модифицируется длина строки, что очень ресурсоемко. Вполне можно просто побегать по строке и найти позиции откуда и до куда вырезать - и сразу вырезать одним махом.

См. так же StrUtils из RxLib.


 
ssk ©   (2005-01-05 14:39) [9]

ну конечено же, возвращает слово!
если есть строка "яблоко лимон апельсин", то GetSubStr("яблоко лимон апельсин", 2) вернет "лимон"


 
KSergey ©   (2005-01-05 14:39) [10]

> [8] KSergey ©   (05.01.05 14:38)
> для поиска пробелов постоянно модифицируется длина
> строки,

В смысле даже не просто длина, а первый символ удаляется, т.е. строка постоянно перекопируется...


 
ssk ©   (2005-01-05 14:40) [11]

>KSergey ©   (05.01.05 14:38) [8]
>  [6] ssk ©   (05.01.05 14:31)

По-моему, очень неудачная реализация ввиду больших накладных расходов: для поиска пробелов постоянно модифицируется длина строки, что очень ресурсоемко. Вполне можно просто побегать по строке и найти позиции откуда и до куда вырезать - и сразу вырезать одним махом.


согласен на все 100%. писалось давно и для коротких строк. так что я думаю, при длине строки пусть даже в 10-20 слов, скорость сильно не упадет.


 
ssk ©   (2005-01-05 14:43) [12]

>KSergey ©   (05.01.05 14:38) [8]

ну не было у меня готовой функции, ну не было. :-D
вот и пришлось набросать то, что первым пришло в голову.


 
GuAV ©   (2005-01-05 16:05) [13]

2 ssk ©
Как это готового не было ?


> begin...end ©   (05.01.05 14:09) [1] [Новое
>сообщение][Ответить]
> TStringList



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

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

Наверх





Память: 0.48 MB
Время: 0.036 c
6-1099474035
Prost0
2004-11-03 12:27
2005.01.23
Связать два компа по модемной лини и работать через сокет


3-1103456917
cherrex
2004-12-19 14:48
2005.01.23
можно ли создать распределенную БД на interbase


1-1105368371
ArchValentin
2005-01-10 17:46
2005.01.23
Создание хэлпов


1-1105509879
KSergey
2005-01-12 09:04
2005.01.23
Пользовательские сообщения


14-1104841168
Dimedrol
2005-01-04 15:19
2005.01.23
Как ставить SPacks на NT4 ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский