|
#1
|
|||
|
|||
TStringList
Есть переменная типа 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; TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); 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. |