Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.02.2010, 21:35
tonick2001 tonick2001 вне форума
Прохожий
 
Регистрация: 20.02.2010
Сообщения: 4
Репутация: 10
По умолчанию TStringList

Есть переменная типа TStringList содержащая текст, как из нее вытащить одну строку причем зная только начало строки например Name = ...
Ответить с цитированием
  #2  
Старый 20.02.2010, 21:41
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

очень давно делал, за правильность не отвечаю, вытащил из своих архивов, проверяйте:

Код:
function GetString(text: string; tstrs: TStringList): string;
var
  tmp_text: string;
  a,b,p: integer;
begin
  tmp_text := tstrs.Text;

  p := Pos(spare,tmp_text);

  while p > 0 do
  begin
    p := Pos(spare,tmp_text);
    a := 1;
    b := 1;
    while not (a = 0) do
    begin
      Inc(a);
      Inc(b);
      if a = 1 then exit;
      if tmp_text[p-1+a] = #13 then a := 0;
    end;
    Result := Result + Copy(tmp_text,p,b+1);
  end;
end;

Последний раз редактировалось Ultras, 20.02.2010 в 23:40.
Ответить с цитированием
  #3  
Старый 20.02.2010, 22:00
tonick2001 tonick2001 вне форума
Прохожий
 
Регистрация: 20.02.2010
Сообщения: 4
Репутация: 10
По умолчанию

У функции возвращаемый параметр String?
Ответить с цитированием
  #4  
Старый 20.02.2010, 22:44
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

ой, извеняюсь, забыл:
Код:
function GetString(text: string; tstrs: TStringList): string;
Ответить с цитированием
  #5  
Старый 20.02.2010, 22:45
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Если я правильно понял, то ведь TStringList почти для этого создан:
Код:
var
  s: TStringList;
...
  s.NameValueSeparator := '=';
  name_value := s.Valus['Name'];
end;
Для поиска сделать просто перебор
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #6  
Старый 20.02.2010, 23:37
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

Цитата:
Сообщение от AleD
Если я правильно понял, то ведь TStringList почти для этого создан:
а если параметр будет типа просто ЭлектронныйНомер123, или value456, без "=", тогда как?

P.S.: у меня изначально было сделано для удаление повторяющихся строк типа "ЭлектронныйНомер=", и это была процедура, переписывал на лету (для форума этого), поэтому за работоспособность не отвечаю ))

Последний раз редактировалось Ultras, 20.02.2010 в 23:40.
Ответить с цитированием
  #7  
Старый 21.02.2010, 14:42
tonick2001 tonick2001 вне форума
Прохожий
 
Регистрация: 20.02.2010
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо, сделал вот так:
Код:
Function Get_Lines (strng:string):string;
  var i,j:integer;
      str:string;
      counts:integer;
      StartCh:integer;
      List:TStringList;
  begin
  List := TStringList.Create;
  List.Text:=strng;
   For i:=0 to (List.Count-1) do
    Begin
     str:=Trim(List[i]);
     if Pos('Name',str)=1 then
      begin
       For j:=1 to Length(str) do
        begin
         counts:=j;
         if str[j]='=' then
          begin
           Delete(str,1,counts);
           str:=Trim(str);
           break;
          end;
        end;
     For j:=1 to length(str) do
      begin
       startCH:=j;
       if (str[j]='"') then
        begin
         Delete(str,StartCh,1);
         str:=Trim(str);
        end;
      end;
     For j:=1 to length(str) do
      begin
       startCH:=j;
       if (str[j]=';') then
        begin
         Delete(str,StartCh,1);
         str:=Trim(str);
         Break;
        end;
      end;
      Result:=str;
      Break;
    end;
  end;
  end;
Admin: Не забываем про теги!

Последний раз редактировалось Admin, 21.02.2010 в 14:53.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter