![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Incompatible types
stenfit © (2011-04-21 15:57:00)не компилируется строка в модуле (Incompatible types), хотя в других модулях аналогичные конструкции компилируются нормально.
SetString(A, @PAnsiChar(Item)[iText1Offset], iText1Length);
Item: PLinkerItem;
A: AnsiString;
iText1Offset: SmallInt;
iText1Length: SmallInt;
han_malign (2011-04-22 16:28:00) [1]
> Есть такая настройкакомпилятора "Typed @ operator".
- ключевое слово настройка- все что не обязательно - потенциальные грабли...
Хотя есть:
Syntax {$T+} or {$T-}
{$TYPEDADDRESS ON} or {$TYPEDADDRESS OFF}
Default {$T-}
{$TYPEDADDRESS OFF}
Sapersky (2011-04-22 13:16:00) [2]Есть такая настройка компилятора "Typed @ operator". Я, правда, не пробовал, но по идее должна включать типизацию.
han_malign (2011-04-22 10:35:00) [3]лучше так:
SetString(A,PAnsiChar(Item)+iText1Offset, iText1Length);/CODE>
- для PChar в Delphi - сделано исключение, даже такие конструкции проходят:
(PAnsiChar(Item)+iText1Offset )^
З.Ы. Оператор @ - возвращает нетипизированный указатель(тип Pointer), который молчаприводится к любому типизированному указательному типу(D7) - а это потенциальные грабли...
stenfit (2011-04-21 16:14:00) [4]
> там где компилируется, там в зоне видимости всего одна SetString.
> а там где нет, там две.
действительно есть еще один SetString, спасибо.
Медвежонок ХМЛ (2011-04-21 16:08:00) [5]там где компилируется, там в зоне видимости всего одна SetString.
а там где нет, там две.
stenfit (2011-04-21 16:03:00) [6]
> brother © (21.04.11 15:58) [1]
> версия делфи?
delphi 7
в XE все нормально компилируется.
brother (2011-04-21 15:59:00) [7]SetString не переназначен?
Медвежонок ХМЛ (2011-04-21 15:59:00) [8]хотя в других модулях аналогичные конструкции компилируются нормально.
в других модулях юзез другой, вот и компилируется.
brother (2011-04-21 15:58:00) [9]версия делфи?