|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск строки в файле *.cfg
Здравствуйте!
Такая проблема - есть файл config.cfg Для наглядности приведу фрагмент этого файла: Код:
... hud_takesshots "0" joystick "0" lookspring "0" lookstrafe "0" m_filter "0" m_forward "1" m_pitch "0.022" m_side "0.8" m_yaw "0.022" model "gordon" MP3FadeTime "2.0" MP3Volume "1" mp_decals "300.000000" name "NO PASARAN" //искомая строка net_graph "0" net_graphpos "1" net_scale "5" r_bmodelhighfrac "5.0" r_detailtextures "0" s_a3d "0.0" s_automax_distance "30.0" s_automin_distance "2.0" s_bloat "2.0" s_distance "60" s_doppler "0.0" s_eax "1" .... Меня интересует строка - "neme "....." " Вопрос - как в Делфи организовать поиск в файле этой строки и вывести ее в string (У каждого пользователя свой name"....") Зарание спасибо! |
#2
|
|||
|
|||
Код:
function GetValue(AFileName, AVarName : String) : String; var I : Integer; L : TStringList; ALen : Integer; begin Result := ''; ALen := Length(AVarName); L := TStringList.Create; Try L.Load(AFileName); For I := 0 To L.Count-1 Do If Copy(L[i],1,ALen) = AVarName Then Begin Result := Copy(L[i],ALen+2,Length(L[i])-ALen-2); // проверить. End; Finally L.Free; End; end; Проверить корректность длинны копирования результата. |
#3
|
|||
|
|||
Цитата:
Спасибо за труд, но к сожалению не очень понял, как применить данную функцию к моей задачи. Если не затруднит, можно поподробнее?) |
#4
|
||||
|
||||
Вот подробнее:
2 memo (memo1 - твой текст и memo2 - результат) 1 button скодом: Код:
procedure TForm1.Button1Click(Sender: TObject); var i,j,n,k,t:integer; h,o,o1,h5:byte; s,s0,stri:string; aa,ab:array[0..6]of byte; begin s0:='name'; for i:=0 to 6 do aa[i]:=i shr 1; n:=memo1.Lines.Count; h:=aa[2]; if s0[aa[4]+aa[5]]=char($65) then begin o1:=202; j:=n-h; h5:=110; end else begin o1:=102; j:=n+h; end; for i:=h-1 to j do begin stri:=memo1.Lines.Strings[i]; ab[h]:=0; if stri[5]=' ' then s0:='0'; o:=o1 div 101; if o=0 then k:=length(s)-14*o else begin s:=stri+''+inttostr(o); k:=length(s); end; if k>(o+aa[3]+aa[6]) then if ord(s[h])=h5 then if ord(s[o])=$61 then if ord(s[1+o])=109 then if ord(s[2+o])=(o1 shr 1) then if s0='0' then ab[h]:=8 else ab[h]:=0; for t:=2 to 6 do ab[t]:=t+k; if (ab[1]=sqr(o)*2) and(aa[o]>0) then memo2.Lines.Add(copy(s,h,length(s)-1)); end; end; А и конечно же для обработки ошибок и загрузки с файла в мой код нужно добавить код lmikle-а. там дело 2-х минут - разберешся. Последний раз редактировалось Konrad, 23.03.2011 в 00:08. |
#5
|
||||
|
||||
Или как вариант - загрузить в мемо и работать с мемо.
77434469377537682B6555743875346738664C75364F767549 4F4837494F667434504C384950547A37657232364F67676347 397A4C43426A62334235494F676737655567352B446B344F4C 6738767767342B767A372F7631494F4C75372F447538654967 4F696B4E43673D3D |