![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
несоответствие типов
Gu © (2011-12-17 01:26:00)в types.pas и далее в windows.pas объявлен тип
_FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
{$EXTERNALSYM _FILETIME} (*)
в проге пишу
uses windows..
Type
_FILETIMEA = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
Function CompareFileTimeA(t1,t2:_FILETIMEA):Integer;
begin
Result:=CompareFileTime(t1,t2); // тут ругается на несоответствие типов t1 и t2 (windows._FileTime и моймодуль._FileTimeA)
end;
почему? ведь типы одинаковые. и для чего в windows.pas вот это (*)
KilkennyCat (2011-12-17 16:20:00) [1]
> Gu (17.12.11 06:56) [13]
> вроде бы форум кк раз для этого и создан? чтобы
> проблемы решать, в особенности эта ветка.
чтобы добровольно помогатьрешать. почувствуй разницу.
но ты всегда можешь подать в суд, если что не так. это твое гражданское право.
> вы поймите - людям ответы нужны, а не поучения
не обобщай, то, что тебе нужно - мне, например, не нужно.
oxffff (2011-12-17 15:23:00) [2]На SO не совсем корректный ответ.
Есть понятие структурной и именной эквивалентности типов.
Для записей в Delphi используется именная эквивалентность типов.
Плохиш (2011-12-17 13:24:00) [3]
> Rouse_ © (17.12.11 02:18) [7]
> Справку стало быть не читаешь совсем?
О, ты только это понял.
Ega23 (2011-12-17 09:43:00) [4]А по сабжу - CompareMem тебе в помощ. Но вопрос из ряда извращений, да-с.
Ega23 (2011-12-17 09:40:00) [5]
> вы поймите - людям ответы нужны, а не поучения
Тебе никто ничего не должен.
MBo (2011-12-17 08:43:00) [6]На SO тебе прочитали справку. Вслух, с выражением.
Gu (2011-12-17 06:56:00) [7]
> Но это твоя проблема.
конечно моя, вроде бы форум кк раз для этого и создан? чтобы проблемы решать, в особенности эта ветка.
уже ответили через 10 минут после того, как вопрос задал, тут: http://stackoverflow.com/questions/8540780/discrepancy-of-types
а тут только выясняют, для чего это надо или спать отправляют или справку читать. вы поймите - людям ответы нужны, а не поучения (нравоучения, сожаления и тп), которые каждый и так может дать любому и чем тут в "ответах" в основном занимаются. Флуд один, ей богу.
Германн (2011-12-17 04:11:00) [8]
> а проспаться сам можешь.
>
Проспаться я и так просплюсь. :)
А вот
"<Цитата>
Gu (17.12.11 02:07) [6]
просто не понятно, почему если пишу"
это уже проблема! Но это твоя проблема.
Может всё-таки почитаешь учебники?
Rouse_ (2011-12-17 02:45:00) [9]Больно слышать, но все-же прочитай справку...
Gu (2011-12-17 02:43:00) [10]и мне
Rouse_ (2011-12-17 02:33:00) [11]
> Gu (17.12.11 02:22) [8]
> Больше нечего ответить?
Хм, в такой постановке вопроса, вероятнее всего нет...
Gu (2011-12-17 02:22:00) [12]
> Справку стало быть не читаешь совсем?
Больше нечего ответить?
Rouse_ (2011-12-17 02:18:00) [13]Справку стало быть не читаешь совсем?
Gu (2011-12-17 02:07:00) [14]просто не понятно, почему если пишу
Type
myInt=Integer;
myNewInt=-2147483648..2147483647;
var a:myint;b:myNewInt;
begin
a:=b;
end;
все нормльно
а если
uses windows;
type
_FILETIMEA = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
var x:_FILETIMEA;y:_FILETIME;
begin
x:=y;
end;
вызовет ошибку компиляции.
а проспаться сам можешь.
Германн (2011-12-17 02:02:00) [15]
> Gu (17.12.11 01:56) [3]
>
>
> > Rouse_
>
> по вашему выходит, что все типы надо в каждом модуле объявлять
> > А зачем это пишешь в своей программе?
> не относится к вопросу
>
Проспись сначала. А завтра может поймёшь где ты тупишь.
Хотя это вряд ли. Не читая учебников - очень трудно написать грамотный код.
Rouse_ (2011-12-17 01:59:00) [16]
> Gu (17.12.11 01:56) [3]
> по вашему выходит, что все типы надо в каждом модуле объявлять
Наоборот не нужно, сие есть зело вредно, тебе об этом даже компилер в ошибке написал о несоответствии типов.
Gu (2011-12-17 01:56:00) [17]
> Rouse_
по вашему выходит, что все типы надо в каждом модуле объявлять. например Dword в windows.pas объявлен как DWORD = Types.DWORD;, однако windows.pas копилится нормально (не кричит что все dword в дальнейших типах и процедурах должны быть types.dword) и если я пишу
type
DWORD = Types.DWORD;
_FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
не ругается, что dwLowDateTime: DWORD; <> windows.dword
> А зачем это пишешь в своей программе?
не относится к вопросу
Германн (2011-12-17 01:40:00) [18]
> в проге пишу
>
> uses windows..
>
> Type
> _FILETIMEA = record
> dwLowDateTime: DWORD;
> dwHighDateTime: DWORD;
> end;
>
А зачем это пишешь в своей программе?
Rouse_ (2011-12-17 01:37:00) [19]
> ведь типы одинаковые.
типы разные, один объявлен в модуле windows, второй у тебя, названия у них одинаковые - это да