:: Архив конференции по VFP до 2005 года
Маленький конкурсик... ;)
OLEGarh
Автор

Сообщений: 575
Откуда: Нйжний Новгород
Дата регистрации: 07.02.2005
Привет всем!

Предлагаю небольшой конкурс ;)

Нужно создать функцию или процедуру, которая бы разделяла любую переданную строку на части
заданной длины, но так, чтобы перенос строк происходил ТОЛЬКО по целым словам
(по пробелам) - аналог опции Stretch With Overflow в генераторе отчетов.

Т.е. типа:

=FUNC****(длина строки, строка или поле)

Например:

=FUNC****(20, 'Нужно создать функцию, которая бы разделяла любую переданную строку на части заданной длины,')

должны получить что-то типа:

'Нужно создать'
'функцию, которая бы'
'разделяла любую'
'строку на части'
'заданной длины,'

Как хранить возвращаемое значение - в массиве или курсоре, или еще как - на ваше усмотрение,
дамы и господа.

Best regards!

ЗЫ И с прошедшим вас праздником, милые женщины! Всего наилучшего!
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
А если слово > первого параметра?




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
што-нить типа
FUNCTION Spliter (tnLen, tcText)
CREATE CURSOR qTemp (text M)
INSERT INTO qTemp VALUES (tcText)
SET MEMOWIDTH TO tnLen
lnMemLines=MEMLINES(qTemp.text)
lcReturn=""
FOR nCnt=1 TO lnMemLines
lcReturn=lcReturn+MLINE(qTemp.text,nCnt)+CHR(13)
ENDFOR
USE IN qTemp
RETURN lcReturn

ЗЫ тока может CHR(13)+CHR(10) стОит добавить



Отредактировано (09.03.05 14:49)


------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Я как-то писал такую функцию - тока нету теперь ее у меня но толкалася от
Rat(' ',Substr(<Длинная строка>,1,<Максимальная длина строки>))
в цикле - тока был еще параметр какую последовательность выбирать - потом все забрасывал в массив



------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
А-а-а-а, по словам?




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
я выиграл по-любому!




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
"Пра-а-альное решение" (с) Г.Хазанов




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Точна - именно потом делал через MLINE - было такое где-то -потом за ненадобностью забыл - а вот если еще учесть метрику шрифта, то была функция WinAPI, но забыл как называется




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Все, дошло. Как до жирафа.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Маленький конкурсик... ;)
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
Ну, лично я пошел "другим путем".

Я разбивал всю строку по словам (ALINES(), GetWordNum(), GetWordCount()), а потом прибалял по одному слову и смотрел не превысил ли допустимое количество символов. Хотя, через MLINE() проще. Однако при разбивке по словам можно убрать лишние пробелы (если есть).
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика