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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2009, 15:17   #1
Rubaka
Новичок
Джуниор
 
Регистрация: 10.08.2009
Сообщений: 2
Лампочка HTML Parser на Delphi 2009

Имеется проект, написанный на Delphi 7, мне нужно переписать его под 2009, сейчас единственная проблема в переписке парсера.
В строчках типа:
Код:
BlockStart := Pos('<'+Tag, LowerCase(WholeText));
Выдает ошибку:
Цитата:
[DCC Error] htmlparse.pas(132): E2251 Ambiguous overloaded call to 'Pos'
System.pas(16672): Related method: function Pos(const WideString; const WideString): Integer;
System.pas(18130): Related method: function Pos(const string; const string): Integer;
Цитата:
[DCC Warning] htmlparse.pas(132): W1058 Implicit string cast with potential data loss from 'WideString' to 'RawByteString'
И так местах в 6-8 где-то...

Что-нужно поправить? и поподробнее пожалуйста где и как...
Исходник парсера прикладываю во вложении.
Вложения
Тип файла: rar htmlparse.rar (10.0 Кб, 70 просмотров)
Rubaka вне форума Ответить с цитированием
Старый 10.08.2009, 15:26   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

нужно перевести весь код или на использование string или на использование ansistring
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 10.08.2009, 15:32   #3
Rubaka
Новичок
Джуниор
 
Регистрация: 10.08.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
нужно перевести весь код или на использование string или на использование ansistring
Поправил, часть функций и процедур... В общем там полный атас... как я понял во всем проекте используются Widestring
Это проблема из перехода на новую версию, часть кода надо править, мне помогла статья

Еще вопрос:
Код:
function URLEncode(const AStr: string): string;
const
  NoConversion = ['0'..'9','A'..'Z','a'..'z'];
var
  Sp, Rp: PChar;
begin
  SetLength(Result, Length(AStr) * 3);
  Sp := PChar(AStr);
  Rp := PChar(Result);
  while Sp^ <> #0 do
  begin
    if Sp^ in NoConversion then
      Rp^ := Sp^
Цитата:
[DCC Warning] htmlparse.pas(449): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
это как поправить? Если менять PChar на Char или AnsiChar то выдает E2089 Invalid typecast

upd: добавил в uses Character
а строчку заменил на if Character.IsDigit(Sp^) or Character.IsLetter(Sp^) then

Последний раз редактировалось Rubaka; 10.08.2009 в 19:55. Причина: нашел решение
Rubaka вне форума Ответить с цитированием
Старый 11.08.2009, 08:35   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Достаточно было просто перевести предупреждение компилятора )
Для понимания работы с строками в D2009
http://edn.embarcadero.com/article/38437
http://edn.embarcadero.com/article/38498
http://edn.embarcadero.com/article/38693
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 2009 Yar Свободное общение 1 22.06.2009 20:15