Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Text file to XML 
:(
    Опции темы
golfV
Дата 18.12.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



Доброго времени суток!

есть такой вопросик может кто подскажет в чем проблема
есть текстовый файл, выглядит вот так

<MP:F> 1.1,Current consumption Min,###,mA,LIM,140,210
<MP:F> 1.2,Secondary voltage +5V Min,#.##,V,LIM,4.8,5.2

делаю из него xml файл

Код

procedure SeparateStr(in_str:String;items:TStrings);
var i:Integer;
  tmpStr:String;
begin
  tmpStr:='';
for i :=1  to Length(in_str)-1 do begin
  if in_str[i] = ',' then begin
    items.Add(tmpStr);
    tmpStr:='';
  end  else
  tmpStr:=tmpStr+in_str[i]

end;
   items.Add(tmpStr);
end;


function GetTaggedString(in_str:String;items:TStrings):String;
var   pos, len, i:Integer;
    tag,endtag:String;
begin
    in_str:=AnsiReplaceStr(in_str,'&','&amp;');
    pos:=AnsiPos('>',in_str);
    tag:=copy(in_str,1,pos);
    len:=Length(in_str);
    endtag:=tag;
    Insert('/',endtag,2);

     if tag[4]=':' then begin
      items.Clear;
      endtag:=AnsiReplaceStr(copy(in_str,pos+1,len-pos),'<','&lt;');
      endtag:=AnsiReplaceStr(endtag,'>','&gt;');
      SeparateStr(endtag,items);
      //len:=
      tag:='<MP type="'+tag[5]+'" name="'+items[0]+'">';

      for i:= 1 to items.Count-1 do begin
          endtag:=IntToStr(i);
           tag:=tag+'<V'+endtag+'>'+items[i]+'</V'+endtag+'>';
      end;

      result:=tag +'</MP>';
     end else begin

    endtag:=tag;
    Insert('/',endtag,2);
     result:=tag + copy(in_str,pos+1,len-pos)+endtag;
     end;

    
end;

function toXml(TxtFile, xmlFile:TStrings):Boolean;
var i:Integer;
  tmp_list:TStrings;
begin
  tmp_list:=TStringList.Create;
  xmlFile.Add('<root>');
    for i := 0 to TxtFile.Count-1  do  begin
      xmlFile.Add(GetTaggedString(TxtFile[i],tmp_list));
    end;

  xmlFile.Add('</root>');
  tmp_list.Free;
  result:=true;
end;



все работает нормально но вот только последнюю цифру в строчке если она дробная то убирает точку и все что после нее(получается 5 вместо 5.2 ) или если оканчивается на 0 то убирает 0(получается 21 вместо 210), никак немогу понять в чем проблема, и убирает именно только ту цифру которая стоит в конце, все остальные нормально. Подскажите кто может в чем ошибка?
PM MAIL   Вверх
golfV
Дата 21.12.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 4.11.2007

Репутация: нет
Всего: 1



может кто нить увидит в чем ошибка? какой день мучаюсь немогу разобраться, помогите кто сможет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.