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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со строкой 
:(
    Опции темы
dikiy
Дата 7.12.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть строка разделенная запятыми как то, что находится до запятой присвоить переменной
Например строка Вася,Петя,Таня
нао a:=Вася 
       b:=Петя 
       c:=Таня
PM MAIL   Вверх
Dremlin
Дата 7.12.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


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

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



читаем хелп по функции

ExtractStrings
--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
Cashey
Дата 7.12.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


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

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



Код

  function ExtractWord(N : Byte; const S : String; WordDelims : CharSet) : String;
    {-Given a set of word delimiters, return the N'th word in S}
  var
    I,LL : Word;                 {!!.12}
    Count, Len : Integer;
    Res:string;
  begin
    Count := 0;
    I := 1;
    LL:=length(s);
    Len := 1;
    Res:='';
    while (I <= LL) and (Count <> N) do begin
      {skip over delimiters}
      while (I <= LL) and (S[I] in WordDelims) do
        Inc(I);

      {if we're not beyond end of S, we're at the start of a word}
      if I <= LL then
        Inc(Count);

      if Count = N then Len:= I;
      {find the end of the current word}
      while (I <= LL) and not(S[I] in WordDelims) do Inc(I);
        {if this is the N'th word, add the I'th character to Tmp}
      if Count = N then begin
        Result := Copy(S,Len,I-Len);
        Exit;
      end;
    end;
    Result := '';
  end;


Добавлено @ 14:40 
пример использования
Код

    for i := 1 to G_CountOfChar(s,';')+1 do
        ListBox.Add(ExtractWord(i,s,[';',' ']));
    ListBox.EndUpdate;


ф-ция G_CountOfChar
Код

function G_CountOfChar(const S: string; C: Char): Integer;
asm
        TEST    EAX,EAX
        JE      @@qt
        MOV     ECX,[EAX-4]
        TEST    ECX,ECX
        JE      @@zq
        PUSH    EBX
        LEA     EBX,[EAX-1]
        XOR     EAX,EAX
@@lp:   CMP     DL,BYTE PTR [EBX+ECX]
        JE      @@fn
        DEC     ECX
        JNE     @@lp
        POP     EBX
        RET
@@fn:   INC     EAX
        DEC     ECX
        JNE     @@lp
        POP     EBX
        RET
@@zq:   XOR     EAX,EAX
@@qt:
end;


предложенна Matematik


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Albinos_x
Дата 7.12.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



используй функции pos(), Copy() и т.д....


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Rodman
Дата 7.12.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

var List:TStringList;
    i:Integer;
    a,b,c:String;
begin
  List:=TStringList.Create;
  try
    List.Text:=StringReplace('Вася,Петя,Таня', ',', sLineBreak, [rfReplaceAll]);
    a:=List.Strings[0];
    b:=List.Strings[1];
    c:=List.Strings[2];
  finally
    List.Free;
  end;
end;



Это сообщение отредактировал(а) Rodman - 7.12.2006, 14:50
PM MAIL WWW Skype GTalk YIM MSN   Вверх
dikiy
Дата 7.12.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Rodman @  7.12.2006,  14:43 Найти цитируемый пост)
var List:TStringList;
    i:Integer;
    a,b,c:String;
begin
  List:=TStringList.Create;
  try
    List.Text:=StringReplace('Вася,Петя,Таня', ',', sLineBreak, [rfReplaceAll]);
    a:=List.Strings[0];
    b:=List.Strings[1];
    c:=List.Strings[2];
  finally
    List.Free;
  end;
end;

Спасибо помогло smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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