Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2013, 17:58   #1
elzafox
Новичок
Джуниор
 
Регистрация: 18.09.2011
Сообщений: 2
По умолчанию Парсинг в файле с непонятными символами

Имеется код

Код:
function Pars(TextIn, Text, TextOut:string):string;
var
TempStr: string;
begin
  Result:='';
  TempStr:=Text;
  TempStr:=Copy(TempStr, Pos(TextIn, TempStr) +Length(TextIn), Length(TempStr));
  Delete(TempStr, Pos(TextOut, TempStr), Length(TempStr));
  Result := TempStr;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var
list:TStrings;
ItData: TListItem;
d:integer;
begin
list :=TStringList.Create;
ItData := ListView1.Items.Add;
list.LoadFromFile('12.test');
for d := 0 to list.Count-1 do
begin
ItData.Caption := pars('"date": "', list[d], '",');
ItData.SubItems.Add(pars('"Time": "', list[d], '",'));
ItData.SubItems.Add(pars('"Name": "', list[d], '",'));
ItData.SubItems.Add(pars('"Type": "', list[d], '",'));
ItData.SubItems.Add(pars('"chislo": ', list[d], ','));
Вопрос вот в чем! Результат данный код даёт, но, если в файле 12.test
будет, что то типа такого
Цитата:
߿Ė����羶Ƴ0Αᾠq=ǼMۜK4'͏̴Lq.��ŮЊмA߁Ȭ;; ퟹ�սѪǍ檼��
по мимо нужных данных, то ничего не получается. Кто подскажет, как же быть?
elzafox вне форума Ответить с цитированием
Старый 14.09.2013, 20:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но, если в файле 12.test
будет, что то типа такого
То наверное нужно для TStringList при загрузке указывать класс TEncoding с нужным свойством, позволяющим декодировать юникод. Это если в файле действительно юникод. Однако судя по цитате это могут быти бинарные данные. И вот тогда придется использовать TFileStream вместо TStringList.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.09.2013, 23:24   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Может вы просто GZIP данные распарсить собрались, не разжав их?
Человек_Борща вне форума Ответить с цитированием
Старый 16.09.2013, 07:18   #4
elzafox
Новичок
Джуниор
 
Регистрация: 18.09.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Может вы просто GZIP данные распарсить собрались, не разжав их?
может проблемка решена таким способом:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  S: String;
begin
  with TFileStream.Create('12.test', fmOpenRead) do
  try
    SetLength(S, Size);
    ReadBuffer(S[1], Size);
  finally
    Free;
  end;
  for i := 1 to Length(S) do
    if S[i] = #0 then
      S[i] := #10;
 
  ShowMessage(Pars('"dateTime": "', S, '",'));
end;
elzafox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки с символами в С++ Аруми Помощь студентам 0 28.12.2011 19:10
Задача с символами pasha1993 Помощь студентам 5 13.10.2010 12:15
задача с символами с++ kate311893 Помощь студентам 6 19.09.2010 20:11
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Рисование символами. (*_*) Общие вопросы C/C++ 2 04.03.2009 23:03