Форум: "Основная";
Текущий архив: 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.009 c