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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.03.2011, 19:55
NO PASARAN NO PASARAN вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 17
Репутация: -58
По умолчанию Поиск строки в файле *.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  
Старый 22.03.2011, 20:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
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  
Старый 22.03.2011, 22:21
NO PASARAN NO PASARAN вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 17
Репутация: -58
По умолчанию

Цитата:
Сообщение от lmikle
Код:
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;

Проверить корректность длинны копирования результата.


Спасибо за труд, но к сожалению не очень понял, как применить данную функцию к моей задачи. Если не затруднит, можно поподробнее?)
Ответить с цитированием
  #4  
Старый 22.03.2011, 23:29
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Вот подробнее:

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  
Старый 23.03.2011, 00:05
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Или как вариант - загрузить в мемо и работать с мемо.
77434469377537682B6555743875346738664C75364F767549 4F4837494F667434504C384950547A37657232364F67676347 397A4C43426A62334235494F676737655567352B446B344F4C 6738767767342B767A372F7631494F4C75372F447538654967 4F696B4E43673D3D
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter