|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
|  | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Помогите распарсить строку Всем привет. Есть строка вида: Цитата: 
 Цитата: 
 Пишу следующую процедуру и всё отображается не так как задумывал: Код: procedure TEditor.StrToTBytes(const str: String);
var
  I: Integer;
  S: String;
begin
  S := str;
  CT := TStringList.Create;
  CT.LoadFromFile('code.tbl');
  S := StringReplace(S, #13, '', [rfReplaceAll]);
  S := StringReplace(S, #10, '', [rfReplaceAll]);
  for I := $00 to $FF do begin
    S := StringReplace( S,
      CT.Values[IntToHex(I, 2)],
      '<$'+IntToHex(I, 2)+'>',
      [rfReplaceAll]
    );
  ShowMessage(S);
  // Тут должно быть продолжение парсинга, но уже что-то не так
  CT.Free;
  end;Последний раз редактировалось otRock, 30.03.2011 в 12:21. | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   чет меня вот это смущает: Код: for I := $00 to $FF do begin
    S := StringReplace( S,
      CT.Values[IntToHex(I, 2)],
      '<$'+IntToHex(I, 2)+'>',
      [rfReplaceAll]
    ); | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   и у вас CT.Free внутри цикла, т.е. после первого прохода... объекта CT уже нет! | 
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   Код: procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  S: String;
  CT : TStringList;
begin
  S := edit1.text;
  CT := TStringList.Create;
  CT.LoadFromFile('c:\code.tbl.txt');
  S := StringReplace(S, #13, '', [rfReplaceAll]);
  S := StringReplace(S, #10, '', [rfReplaceAll]);
  for I := 0 to CT.Count-1 do begin
    S := StringReplace( S,
      CT.Values[CT.Names[i]],
      '<$'+CT.Names[i]+'>',
      [rfReplaceAll]
    );
  // Òóò äîëæíî áûòü ïðîäîëæåíèå ïàðñèíãà, íî óæå ÷òî-òî íå òàê
  end; ShowMessage(S);
  CT.Free;
  end; | 
| 
			 
			#6  
			
			
			
			
		 | |||
| 
 | |||
|   После твоей процедуры получается: Цитата: 
 | 
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   Да, так и есть, например строка: Цитата: 
 Цитата: 
 |