![]() |
|
|
#1
|
|||
|
|||
|
Есть переменная типа TStringList содержащая текст, как из нее вытащить одну строку причем зная только начало строки например Name = ...
![]() |
|
#2
|
||||
|
||||
|
очень давно делал, за правильность не отвечаю, вытащил из своих архивов, проверяйте:
Код:
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
|
|||
|
|||
|
У функции возвращаемый параметр String?
|
|
#4
|
||||
|
||||
|
ой, извеняюсь, забыл:
Код:
function GetString(text: string; tstrs: TStringList): string; |
|
#5
|
||||
|
||||
|
Если я правильно понял, то ведь TStringList почти для этого создан:
Код:
var s: TStringList; ... s.NameValueSeparator := '='; name_value := s.Valus['Name']; end; |
|
#6
|
||||
|
||||
|
Цитата:
P.S.: у меня изначально было сделано для удаление повторяющихся строк типа "ЭлектронныйНомер=", и это была процедура, переписывал на лету (для форума этого), поэтому за работоспособность не отвечаю )) Последний раз редактировалось Ultras, 20.02.2010 в 23:40. |
|
#7
|
|||
|
|||
|
Спасибо, сделал вот так:
Код:
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, 21.02.2010 в 14:53. |