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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2011, 23:06   #1
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
Стрелка Чтение файла

Возникла след. неприятность.. Есть исходный файл *.obml (телефон. формат сохран. страниц на браузерах Opera mobile) напичканный nul-символами и прочим. Очень хотелось бы выдернуть кое-какие данные из него программно. Они там в некоторых местах вполне читабельны. Решить стандартным способом открытия его через tstringlist не получилось, как впрочем и через все другие извест. мне способы(паскалевский метод,поток,память)..(: Они туда просто не попадают! В лучшем случае вижу лишь пустые разделители(пробелы). Сам файл в кодировке utf8.. Опять же пробовал его для начала преобразовать в ansi станд. функцией utf8toansi(), но на выходе все таже пустая строка. Буду признателен за помощь. Вот так вот выглядит снимок подопытного файла Буфер.jpg
Foxpronet вне форума Ответить с цитированием
Старый 12.08.2011, 01:02   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Возможно это поможет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.08.2011, 17:59   #3
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию

Спасибо, конечно mr. doober, на самом деле очень ценная инфа для, меня! Тем более, что сижу на dual up соединении, а режим Turbo windows платформы этого замеч. браузера постоянно сносит... Потому обязательно перебазируюсь на идею запуска мобильной версии на платформе XP . Только мне бы хотелось в моей почти уже законченной пр-ме, что бы рядовые пользователи сохраняли эту страницу именно из своих мобильных телефонов, в этом, как бы и состоит основная логика программы, потому как она написанна как вьювер сыгранных партий в шашки, для клиентов с ВИП статусом, небезизвестного мобильного игрового сервера MobiLeap. Может быть есть какой нить другой способ в рамках Delphi ? Еще раз спасибо за ваш ответ.
Foxpronet вне форума Ответить с цитированием
Старый 12.08.2011, 21:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
через все другие извест. мне способы(паскалевский метод,поток,память)..(: Они туда просто не попадают!
Ерунда! попадают еще и как. Ты как проверял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.08.2011, 02:15   #5
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию

Согласен! Поторопился, пока писал.. Имел ввиду tstringlist (-> на выходе пустая строка)
Теперь вижу основную задачу найти какой то аналог фукции utf8toansi(), так как придется для начала сконвертировать в ansi, иначе поиск локализации этих самых читабельных данных, будет затруднен, как мне видится..(текст на рус.языке). А в станд. функции utf8toansi(), при встрече некорректного символа, насколько я могу судить, происходит прерывание, и опять же - на выходе пустая строка в отличие от нормальных текст. файлов, где все работает, как задумано.
Подскажи, пожалуйста какой метод доступа к файлу оптимальней использовать в данном случае и есть ли в природе функция для по-символьного сравнения исходного текста на предмет принадлежности к кодировке UTF8, что бы можно было отфильтровать все лишнее.. Прошу прощение за некоторую путаницу, довольно долго не юзал Delphi.

Пробовал, в частности примерно так:

Код:
     if not od.execute then exit; {тот самый файл}
     AssignFile(F, od.FileName); { File selected in dialog }
     FileMode:=fmOpenReadWrite;
     Reset(F);
     While not eof(f) do
     begin
     ReadLn(f, s);
     s:= utf8toansi(s);
     rs:= rs+#13+s;
     end;
     CloseFile(F);
Нулевой результат!
Что то более менее подходящее получилось при такой вот обработке, видимо благодаря этой строчке
Код:
 if (b1>=1)and(b1<=255) then..
(полный код ниже). Но опять же никакого толка от utf8toansi(s); Привычная пустая строка (:
Код:
     if not od.execute then exit; {тот самый файл}
     fs1 := tfilestream.create(od.filename, fmopenread or fmsharedenywrite);
     while fs1.position <> fs1.size do begin
     fs1.read(b1, 1);
     if (b1>=1)and(b1<=255) then
     s:= s+chr(b1)
     end;
Может я где-то что то напутал.. Если, возможно дай пожалуйста маленький примерчик, как это должно (или может) выглядеть. Спасибо.
Foxpronet вне форума Ответить с цитированием
Старый 14.08.2011, 13:37   #6
Foxpronet
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 67
По умолчанию

Задача частично решена 2 способом, без преобразования текста в ansi
Foxpronet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла virtuhay266 Помощь студентам 0 27.11.2010 23:27
Чтение из файла pautina Общие вопросы Delphi 8 23.01.2009 15:48
Чтение из файла e@gle Общие вопросы Delphi 3 14.12.2008 17:21
Чтение из файла Amen БД в Delphi 2 09.12.2008 10:40
Чтение файла Stanislav Общие вопросы Delphi 18 24.11.2007 20:45