Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Выдернуть из переменной TStringList нужну строку   Найти похожие ветки 

 
tonick2001 ©   (2010-02-21 10:56) [0]

Есть переменная типа TStringList которая содержит вот такую инфу:
instance of Win32_Processor
{
AddressWidth = 64;
Architecture = 9;
Availability = 3;
Caption = "Intel64 Family 15 Model 6 Stepping 2";
CpuStatus = 1;
CreationClassName = "Win32_Processor";
CurrentClockSpeed = 3010;
CurrentVoltage = 13;
DataWidth = 64;
Description = "Intel64 Family 15 Model 6 Stepping 2";
DeviceID = "CPU0";
ExtClock = 200;
Family = 178;
L2CacheSize = 4096;
L2CacheSpeed = 3010;
L3CacheSize = 0;
L3CacheSpeed = 0;
Level = 15;
LoadPercentage = 99;
Manufacturer = "GenuineIntel";
MaxClockSpeed = 3010;
Name = "Intel(R) Pentium(R) D CPU 3.00GHz";
NumberOfCores = 2;
NumberOfLogicalProcessors = 2;
PowerManagementSupported = FALSE;
ProcessorId = "BFEBFBFF00000F62";
ProcessorType = 3;
Revision = 1538;
Role = "CPU";
SocketDesignation = "Socket 775";
Status = "OK";
StatusInfo = 3;
Stepping = "2";
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "COMP01";
UpgradeMethod = 1;
Version = "Model 6, Stepping 2";
};

Необходимо выдернуть строку с полем name.

Функция натыкается на первую попавшую строку которая содержит name то есть CreationClassName, как сделать так что бы она смотрела только на начало строки, т.е на ту строку которая начинается с Name и до этого ничего нет.


function _ExtractValue(Data:string):string;
 var
   str:string;
   index, i:integer;
   TS:TStrings;
 begin
   Result := "";
   TS := TStringList.Create();
   try
     TS.Text := StrInfo;

      for i := 0 to (TS.Count - 1) do begin
        Str := Trim(TS[i]);
       index := AnsiPos(Data + " = ", Str);
       if (index <> 0) then begin

         Str := Copy(Str, index + Length(Data + " = "), Length(Str));
         Str := Trim(Str);


         if Str[1]= """ then begin
           Str := Copy(Str, 2, Length(Str));
         end;

         Str := AnsiReplaceText(Str, "";", "");


         if (Length(Str) > 1) then begin

           if Str[Length(Str)]= ";" then begin
             Str := Copy(Str, 1, Length(Str) - 1);
           end;
         end;

         Result := Str;
         Break;
       end;
     end;


 
Вася   (2010-02-21 11:15) [1]

Попробуй так
Result := StringList.Values["Name "]


 
Юрий Зотов ©   (2010-02-21 11:20) [2]

Способ 1 - см. свойство Values.
Способ 2 - if Pos("Name", Str) = 1 then


 
Tonick2001 ©   (2010-02-21 14:39) [3]

Спасибо, сделал.

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;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.06 c
15-1269190277
конструктор
2010-03-21 19:51
2010.08.27
АОП в DELPHI


2-1267163973
scur
2010-02-26 08:59
2010.08.27
Размер базы


15-1267352341
виола
2010-02-28 13:19
2010.08.27
Задача


2-1270634702
Sairex
2010-04-07 14:05
2010.08.27
Как программно скопировать строку Excel


2-1269514776
ComeGetSome
2010-03-25 13:59
2010.08.27
Интерфейс Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский