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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос 7-2010 не компилирует сторонние модули 
:(
    Опции темы
lollollollol
Дата 17.7.2014, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте. Переношу проект с делфи 7 на делфи 2010 (необходимость в юникоде).

Проблема в том, что не могу скомпилировать поект. 


Цитата

[DCC Error] Pngimage.pas(2827): E2015 Operator not applicable to this operand type



на строке

Код

procedure TChunkIDAT.CopyInterlacedPalette148(const Pass: Byte;
  Src, Dest, Trans{$IFDEF Store16bits}, Extra{$ENDIF}: pChar);
const
  BitTable: Array[1..8] of Integer = ($1, $3, 0, $F, 0, 0, 0, $FF);
  StartBit: Array[1..8] of Integer = (7 , 0 , 0, 4,  0, 0, 0, 0);
var
  CurBit, Col: Integer;
  Dest2: PChar;
begin
...
      Dest2^ := Dest2^ or (((integer(Src^) shr CurBit) and BitTable[Header.BitDepth]) shl (StartBit[Header.BitDepth] - (Col * Header.BitDepth mod 8)));
...



помогите понять, что за несоответствие типов, и что к чему нужно приводить? Спасибо


Это сообщение отредактировал(а) lollollollol - 17.7.2014, 14:26
PM MAIL   Вверх
kami
Дата 17.7.2014, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Pchar в D7 = PAnsiChar в D2009up.

Соответственно - явно меняем Pchar на PAnsiChar, Char на AnsiChar...
Больше всего засад будет, если строки используются в качестве бинарного буфера...

Pngimage.pas - это чей модуль? В D2010 есть такой стандартный, может можно его использовать?

Это сообщение отредактировал(а) kami - 17.7.2014, 16:31
PM MAIL WWW   Вверх
lollollollol
Дата 17.7.2014, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Pngimage.pas - это чей модуль? В D2010 есть такой стандартный, может можно его использовать?


незнаю, я при переносе проекта все .pas файлы в lib папку закинул от делфи7, без замены. Раз он не родной, значит его там небыло
PM MAIL   Вверх
lollollollol
Дата 17.7.2014, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ужас, не могу понять эту делфи 2010 вообще! раньше в семёрке я просто зажимал control, кликал по нужному uses и любовался его кодом. А тут неработает. и слева в списке модулей пытался кликать, нифига. чтото я торможу, подскажите как открыть код uses'a для просмотра/редактирования?
PM MAIL   Вверх
kami
Дата 18.7.2014, 08:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(lollollollol @  17.7.2014,  21:39 Найти цитируемый пост)
А тут неработает. 

Работает. И по клику, и через Ctrl +Enter. Пути пропиши правильно.

Цитата(lollollollol @  17.7.2014,  17:28 Найти цитируемый пост)
 Раз он не родной, значит его там небыло

$(BDS)\SOURCE\WIN32\VCL\pngimage.pas
Должен быть.

Добавлено через 2 минуты и 18 секунд
Цитата(kami @  18.7.2014,  08:33 Найти цитируемый пост)
Пути пропиши правильно.

Имеется ввиду - пути в Tools - Options - Library Win32 - Browsing path
PM MAIL WWW   Вверх
lollollollol
Дата 18.7.2014, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, с этим разобрался, проект скомпилировался, проблемы начались дальше.

сразу при старте приложения высыпаются ошибки, первая:

вопрос:

есть переменная

Код

  ReadFolderName:string;

если в неё записывается строка типа AnsiString, а потом передаётся в функцию которая хочет получить AnsiString, функция получит верные данные или ломаные? и как быть в таком случае? 


PM MAIL   Вверх
kami
Дата 18.7.2014, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(lollollollol @  18.7.2014,  10:55 Найти цитируемый пост)
если в неё записывается строка типа AnsiString, а потом передаётся в функцию которая хочет получить AnsiString, функция получит верные данные или ломаные? и как быть в таком случае? 

Увидишь преобразование строк в действии.
Вообще, компилятор должен выдавать хинты (или варнинги - не помню). Корректная перегодировка (особенно - UnicodeString => AnsiString) гарантирована только для английских символов, цифр и знаков препинания. С русскими и остальными может быть пичаль-бида.

Как быть?
Если функция твоя - переделывай всё под string.
Если чужое - смотри, сможешь ли справиться, и если нет - ищи альтернативы. Возможно, в интернете уже есть адаптированное под юникод решение.

Особенно советую обратить внимание на конструкции, содержащие Move, Copy (включая Stream.Write/Read), преобразования в PChar и т.п.
Емнип, у Embarcadero целый раздел был по миграции на юникод, там всё отлично расписано.

Добавлено через 3 минуты и 52 секунды
Цитата(kami @  18.7.2014,  12:10 Найти цитируемый пост)
 если нет - ищи альтернативы.

Поверь на слово человеку, который несколько лет назад переводил большой проект с D7 на D2010 - гораздо проще вместо старого "чужого" модуля (пусть и отлично работавшего под D7) найти с похожим функционалом, но под юникод, чем копаться в куче малопонятного кода, заточенного под особенности AnsiString и ловить баги/глюки на ровном месте.
Да, потребуется доработка/некоторое изменение своего кода. Но в конечном итоге это выйдет дешевле.
PM MAIL WWW   Вверх
Akella
Дата 20.7.2014, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(kami @  17.7.2014,  16:29 Найти цитируемый пост)
Pngimage.pas - это чей модуль? В D2010 есть такой стандартный, может можно его использовать?


Да, скорее всего, что можно будет использовать.
Единственное, что у себя в программе придётся немного поменять типы данных, объектов и переменных.
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.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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