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

Вниз

Integer и Longint в D2   Найти похожие ветки 

 
Acorus   (2002-11-07 19:57) [0]

Как Дельфи 2 определяет каков Integer - 16 или 32 bit (Smallint/Longint) ?

на D2 (с D5) переписывается такой код: (под D5 все ok!)

hImg: Longint;
...
property Handle: Integer read hImg;

- тут возникает "Incompatible types: Longint and Integer"

как без изменения Integer на Longint обойтись ?
запускается все это под w2k


 
Smithson   (2002-11-07 20:03) [1]

SizeOF(Integer)*8 - в битах


 
Alex4444444444   (2002-11-07 20:04) [2]

type
OldInt = Integer;
Integer = Longint;

No, mogut vozniknut" problemy v drugom meste...
(E.g., v cyclah.) Tak chto, skoree vsego, pridetsya code peresmatrivat" v lyubom sluchae. Vopros: a nuzhno li na D2 perepisyvat" (esli ona voobshe ne 32 bit), k tomu zhe pod W2K?


 
Acorus   (2002-11-08 11:04) [3]

2Alex

дело в том сто мне нужен код на D2 (для демонстрации примера и совместимости с последующими версиями) под w2k просто пишу пример (адаптирую с D5).

моя Дельфа2 кричит "Incompatible types: Longint and Integer" - см. выше.

В доке к ней написано: "The implementation-dependent types Integer and Cardinal are 32-bit values in Delphi 2.0, where they were 16-bit values in Delphi 1.0. "

Раз Integer implementation-dependent - то когда Integer равен Smallint(16-bit) а когда LongInt ?

Неужели мастера не знают ?

Торможу - помогите! :)


 
Anatoly Podgoretsky   (2002-11-08 11:19) [4]

Что то ты серьезно тормозишь и Longint и Integer в д2 32 битные знаковые вот в Д1 там да 16 бит, возможно у тебя где то переопределен Integer
Узнать размер просто SizeOf(Type)


 
Acorus   (2002-11-08 11:22) [5]

да не надо мне узнавать размер - читай внимательно первый вопрос !


 
Acoru   (2002-11-08 11:29) [6]

и не преопределен у меня Integer (хотя наверно придется это сделать чтоб скомпилировать) !

- проблема то в том как не переписывая всего кода (т.е. не меняя Integer на Longint везде в коде) скомпилировать такой код (см. первый вопрос)

- не понимаю почему D2 кричит о несоответствии типов раз они по идее одно и тоже самое?



 
Bis   (2002-11-08 11:40) [7]

Перепиши свойство тоже под LongInt
какие проблемы у тебя возникнут, если есть все исходные коды и можешь везде заменить ?


 
Anatoly Podgoretsky   (2002-11-08 11:47) [8]

Чудес не бывает, ты где то напутал, Integer и Longint в D2-D7 совместимы


 
Юрий Зотов   (2002-11-08 11:51) [9]

Обычно в подобных случаях используют директиву компилятора IFDEF (или IFNDEF) в сочетании с VERxxx.


 
Acorus   (2002-11-08 11:52) [10]

2Bis

так в том то и дело что код везде менять не катит :)


 
Acorus   (2002-11-08 11:54) [11]

2 Anatoly

Были бы совместимы - не было бы ошибок компиляции и вопросов...


 
Anatoly Podgoretsky   (2002-11-08 12:05) [12]


type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
L : LongInt;
public
Property I: Integer read L;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
L:=5;
Label1.Caption := IntToStr(I);
end;

end.


 
Acorus   (2002-11-08 12:19) [13]

2 Anatoly

ты извини меня - попробовал твой код (может я действительно ТОГО :))

но результат тот же - Incompatible types "Longint" and "Integer".

- дай мыло - кину скриншот. я же не обманываю никого...


 
Alex44   (2002-11-08 14:39) [14]

> Узнать размер просто SizeOf(Type)


 
Bis   (2002-11-08 14:45) [15]

напиши в нулевом проекте 3 строчки

procedure f(var a: LongInt);
begin
a:=1;
end;

var a: Integer;
begin
f(a);
end.

компилится это или нет?
и что сказано в справке? под рукой нету 2 ...


 
Acorus   (2002-11-08 15:32) [16]

2 Alex - ДА НЕ НАДО РАЗМЕР !!! :)))


 
Acorus   (2002-11-08 15:36) [17]

2 Bis:

не компилится твой код!

дока по D2:

Generic types

The generic integer types are Integer and Cardinal. The Integer type represents a generic signed integer, and the Cardinal type represents a generic unsigned integer. The actual ranges and storage formats of the generic types vary across different implementations of Object Pascal, but are generally the ones that result in the most efficient integer operations for the underlying CPU and operating system.

Type Range Format
Integer -32768 .. 32767 Signed 16-bit
Integer -2147483648 .. 2147483647 Signed 32-bit
Cardinal 0 .. 65535 Unsigned 16-bit
Cardinal 0 .. 2147483647 Unsigned 32-bit



 
Acorus   (2002-11-08 15:39) [18]

2 Bis:

ошибка компиляции:

types of actual and formal var parameters must be identical




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

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

Наверх





Память: 0.48 MB
Время: 0.008 c
14-59398
DDS
2002-10-28 09:41
2002.11.18
Чудеса с монитором.


3-58986
mas_alexey
2002-10-28 17:32
2002.11.18
Подскажите компонент


4-59514
Gayrus
2002-10-06 07:15
2002.11.18
Имитация


3-58997
Dbrf
2002-10-28 16:17
2002.11.18
Вывести значения, ограниченные датами


14-59400
GUID
2002-10-30 19:16
2002.11.18
HELP!!!!! Proxy server for w2k professional





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский