Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с word, выделение текста до запятой 
:(
    Опции темы
MegaDef
Дата 1.9.2008, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



Привет всем, не знаю как сделать такую вещь, надеюсь на помощь:
в мемо поле есть текст "Иванов, Петров, Сидоров, Орлов" 
в word'e нужно выбросить построчно:
"_____________Иванов"
"_____________Петров"
"_____________Сидоров"
"_____________Орлов"

вопрос: как правильно выбирать сначала Иванов, потом Петров и так далее, разделитель всегда будет запятая.
PM MAIL   Вверх
Poseidon
Дата 1.9.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Ну... есть два варианта:
1. Искать (pos) в memo запятую и копировать (copy) что надо.
2. Использовать регулярки.

Второй пункт зависет от целесообразности использования регулярок в программе.

Цитата(MegaDef @  1.9.2008,  05:35 Найти цитируемый пост)
вопрос: как правильно выбирать
А как ты вибираешь?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
VladBD
Дата 6.9.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: нет
Всего: 5



можно хитрее:

Код

S1="__________";
S2:=S1+ ReplaceString("Иванов, Петров, Сидоров, Орлов",', ',chr(13)+chr(10)+S1);

 smile 
PM MAIL   Вверх
Данкинг
Дата 6.9.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



При чём тут Word, не понял?  smile 

Код

function getwordnum(slovo,razd,nomer: string): string;
var i,c,int1,int2:integer;
res,ss:string;
begin
result:=slovo;
if (length(trim(slovo))=0) or (length(trim(razd))<>1)then exit;
slovo:=trim(razd)+trim(slovo)+trim(razd);
c:=0;
int1:=0;
int2:=0;
for i:=1 to length(slovo) do
 begin
  ss:=copy(slovo,i,1);
  if ss=razd then
    begin
     inc(c);
     if c=strtoint(nomer) then int1:=i;
     if c=strtoint(nomer)+1 then int2:=i;
    end;
 end;
result:=copy(slovo,int1+1,int2-int1-1);
end;


Пример использования:

Код

sss:=getwordnum(stroka,',','2');

В переменной у нас будет Петров, т.е. второе слово из строки, отделённое запятой.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Poseidon
Дата 8.9.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Данкинг, позволил себе добавить твой код в FAQ с небольшими поправками


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Данкинг
Дата 8.9.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Poseidon @ 8.9.2008,  09:46)
Данкинг, позволил себе добавить твой код в FAQ с небольшими поправками

Да, конечно же, номер "слова" должен быть числовым, просто я, как обычно, делал быстро и не углубляясь в детали. А вообще, для полноты, надо ещё написать аналогичную функцию, которая будет считать количество заданных "слов" в строке.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
MegaDef
Дата 12.9.2008, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



большое спасибо всем!
PM MAIL   Вверх
MegaDef
Дата 3.10.2008, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



ещё один ламерский вопрос ) а как удалить текст до запятой.
PM MAIL   Вверх
Poseidon
Дата 3.10.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Скопировать текст "от запятой". Удаление - ресурсоемкая задача. Лучше ее избегать, где возможно.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Google
  Дата 19.1.2019, 09:35 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0827 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.