Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

Delphi 7 + int64   Найти похожие ветки 

 
Стивенс   (2002-10-18 09:52) [0]

Поставил 7 дельфи и столкнулся с проблемой при установке компанента. В 6 версии все было ОК. Вот куски кода:

.....
type
.....
Capacity,
FreeSpace: Int64;
....
end;
....
{$IFDEF D4PLUS}
Capacity:=TC*SPC*BPS;
FreeSpace:=FC*SPC*BPS;
{$ELSE}
Capacity.QuadPart:=TC*SPC*BPS;
FreeSpace.QuadPart:=FC*SPC*BPS;

{$ENDIF}
....
Ругается на выделенные строки: [Error] comp_sys.pas(898): Record, object or class type required
В чем может быть дело? Спасибо.


 
Anatoly Podgoretsky   (2002-10-18 09:58) [1]

У тебя есть тип Int64 типа record с полем QuadPart, ну или класс, объект?


 
Ученик   (2002-10-18 10:58) [2]

Проверь определение D4PLUS, в Delphi 7 - VER150, Delphi 6 - VER140


 
han_malign   (2002-10-18 11:05) [3]

Windows.pas - и в 6 и в 7 одинаковый
LONGLONG = Int64;
{$EXTERNALSYM LONGLONG}
PLargeInteger = ^TLargeInteger;
_LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: Longint);
1: (
QuadPart: LONGLONG);
end;
{$EXTERNALSYM _LARGE_INTEGER}
{$NODEFINE TLargeInteger}
TLargeInteger = Int64;
LARGE_INTEGER = _LARGE_INTEGER;
{$EXTERNALSYM LARGE_INTEGER}

ULARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: DWORD);
1: (
QuadPart: LONGLONG);
end;
{$EXTERNALSYM ULARGE_INTEGER}
PULargeInteger = ^TULargeInteger;
TULargeInteger = ULARGE_INTEGER;


 
han_malign   (2002-10-18 11:11) [4]

я так понимаю, что в 7 просто не определена директива D4PLUS
type
.....
{$IFDEF D4PLUS}
Capacity,
FreeSpace: Int64;
{$ELSE}//для совместимости с Delphi 2,3
Capacity,
FreeSpace: TLargeInteger;
{$ENDIF}
....
end;
....
{$IFDEF D4PLUS}
Capacity:=TC*SPC*BPS;
FreeSpace:=FC*SPC*BPS;
{$ELSE}//для совместимости с Delphi 2,3
Capacity.QuadPart:=TC*SPC*BPS;
FreeSpace.QuadPart:=FC*SPC*BPS;
{$ENDIF}
....

лечится добавлением {$DEFINE D4PLUS} или заменой D4PLUS на более актуальную для Delphi 7.


 
Стивенс   (2002-10-18 13:15) [5]

Я просто убрал определение версии Дельфи и все заработало, но столкнулся с другой немного проблемой:
....
var
op0, op1: Int64;
....
begin
....
op1.LowPart:=op0.LowPart;
...
Ругается также. Ка кнадо описать или что добавить, чтоб он не приставал к переменным типа int64?


 
han_malign   (2002-10-18 13:40) [6]

op0,op1: TLargeInteger;
или
op1:=(op1 and $FFFFFFFF00000000)or(op0 and $FFFFFFFF);
или
move(op0,op1,sizeof(DWORD));
Посмотри внимателтно мой самй первый ответ и разберись с типами, в конце концов.
З.Ы.На сколько я понял, в старых версиях Delphi, int64 был описан как сейчас TLargeInteger(только QuadPart был типа comp), теперь обработка 64-бит целого интегрирована в компилятор (тип comp хотя и является 64-бит целым, но считается как вещественный)
надо полагать было так:
int64 = record
case Integer of
0: (
LowPart: LongWord;
HighPart: Longint);
1: (
QuadPart: Comp);
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.012 c
6-92631
Руль
2002-08-27 01:41
2002.10.28
Снова вопрос по извлечению текста из сайта


3-92335
студент2002
2002-10-06 11:10
2002.10.28
ADOQuery


14-92663
Asteroid
2002-10-06 21:01
2002.10.28
О мобильниках


1-92431
lann
2002-10-17 17:21
2002.10.28
TWordDocument


14-92721
NewI
2002-10-08 11:37
2002.10.28
Кто-нибудь знает есть ли Service Pack для Delphi_6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский