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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки, Как определить что между символами 
:(
    Опции темы
MrDmitry
Дата 25.10.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Имеется строка
"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"
Как определить что находится между кавычками и занести в полученную строку в таблицу? 

Это сообщение отредактировал(а) MrDmitry - 25.10.2008, 14:51
PM MAIL   Вверх
AntonN
Дата 25.10.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

procedure find_shablon(value,delim: string; ST:TStrings);
var aPos,aPosE:Integer; ss:string;
begin
  aPos:=Pos(delim, value);
  ss:=copy(value,aPos+1,length(value));
  aPosE:=Pos(delim, ss);
  if(aPosE>0) then begin
    ss:=copy(value,aPos,aPosE+1);
    st.Add( ss );
    find_shablon( copy(value,aPos+aPosE+1,length(value)),delim,st );
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 find_shablon( '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"','"',memo1.Lines );
end;

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


--------------------
user posted image
PM MAIL WWW   Вверх
Данкинг
Дата 25.10.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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





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


Опытный
**


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

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



Как вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TStringList.Create do
  begin
    CommaText := '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"';
    Memo1.Text := Text;
    Free;
  end;
end;

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


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Qu1nt, мм. а причем тут CommaText?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MrDmitry
Дата 25.10.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Qu1nt @ 25.10.2008,  19:55)
Как вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TStringList.Create do
  begin
    CommaText := '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"';
    Memo1.Text := Text;
    Free;
  end;
end;

эээ Это ты к чему написал?  smile 
PM MAIL   Вверх
MrDmitry
Дата 25.10.2008, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonN @ 25.10.2008,  15:24)
Код

procedure find_shablon(value,delim: string; ST:TStrings);
var aPos,aPosE:Integer; ss:string;
begin
  aPos:=Pos(delim, value);
  ss:=copy(value,aPos+1,length(value));
  aPosE:=Pos(delim, ss);
  if(aPosE>0) then begin
    ss:=copy(value,aPos,aPosE+1);
    st.Add( ss );
    find_shablon( copy(value,aPos+aPosE+1,length(value)),delim,st );
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 find_shablon( '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"','"',memo1.Lines );
end;

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

код хороший но ты не мог бы еще написать как полученный результат добавить в стрин грид?
чтоб то что было между первыми кавычками поподало в 1 столбец между 2 кавычками во 2 и т.д 
PM MAIL   Вверх
aktuba
Дата 26.10.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата(MetalFan @  25.10.2008,  21:20 Найти цитируемый пост)
Qu1nt, мм. а причем тут CommaText? 

Насколько помню, в CommaText хранится значение StringList.Text и каждая строка заключена в кавычки.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ne0n
Дата 26.10.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

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



Цитата(MrDmitry @  25.10.2008,  23:09 Найти цитируемый пост)
код хороший но ты не мог бы еще написать как полученный результат добавить в стрин грид?чтоб то что было между первыми кавычками поподало в 1 столбец между 2 кавычками во 2 и т.д 


ну  тут все заноситься в TStrings, получить из строку по номеру можно так : memo1.Lines.Strings[а тут номер строки текст которйо надо получить].
PM MAIL ICQ   Вверх
AntonN
Дата 26.10.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MrDmitry, самое простое - завести глобальный счетчик (var count:integer), и вместо st.Add( ss ); делать:
Gris.cells[count,0]:=ss;
inc(count);
(естественно передавать в функцию не tstrings, а класс грида).

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


--------------------
user posted image
PM MAIL WWW   Вверх
Qu1nt
Дата 26.10.2008, 12:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  StringGrid1.Rows[0].CommaText := '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"';
end;


Это сообщение отредактировал(а) Qu1nt - 26.10.2008, 12:59
PM MAIL   Вверх
MetalFan
Дата 26.10.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(aktuba @  26.10.2008,  00:19 Найти цитируемый пост)
Насколько помню, в CommaText хранится значение StringList.Text и каждая строка заключена в кавычки.

Цитата(BDS 2007 Help)
Use CommaText to get or set all the strings in the TStrings object in a single comma-delimited string. 

а comma вроде как переводится как запятая....


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MrDmitry
Дата 30.10.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ne0n @ 26.10.2008,  00:21)
Цитата(MrDmitry @  25.10.2008,  23:09 Найти цитируемый пост)
код хороший но ты не мог бы еще написать как полученный результат добавить в стрин грид?чтоб то что было между первыми кавычками поподало в 1 столбец между 2 кавычками во 2 и т.д 


ну  тут все заноситься в TStrings, получить из строку по номеру можно так : memo1.Lines.Strings[а тут номер строки текст которйо надо получить].

хм, Странно а у меня все заносится в Memo1 и ни чего в Стрингрид (
PM MAIL   Вверх
morpheyushka
Дата 30.10.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

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




разве этот код не работает?
Цитата(Qu1nt @  26.10.2008,  12:58 Найти цитируемый пост)
Выделить всёкод Pascal/Delphi
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  StringGrid1.Rows[0].CommaText := '"1234" "gfdgfd" "ewrgdfgd" "dfsdfdsf"';
end;





--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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