Различие в работе FPC от ObjectPascal

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
arni
незнакомец
Сообщения: 4
Зарегистрирован: 19.10.2009 17:10:51

Различие в работе FPC от ObjectPascal

Сообщение arni »

Код: Выделить всё

var
   a: array of Char;
begin
  SetLength(a, 8);
  if a[0]='' then
     ShowMessage('equal')
  else
     ShowMessage('not equal');
end;

FPC выдает "not equal"
Borland выдает "equal"

Можете пояснить?

p.s. Lazarus 0.9.28, Delphi 7
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

arni
Это не различия. Вы выделяете память динамически и компилятор не инициализирует её!
И для того, чтобы говорить о несоответствии необходимо избавится от "мусора" - инициализировать выделенную память!
хотя бы так:

Код: Выделить всё

FillChar(a,8,#0)
arni
незнакомец
Сообщения: 4
Зарегистрирован: 19.10.2009 17:10:51

Сообщение arni »

Добавил
a[0]:=#0;
после инициализации массива.
Поведение не поменялось. Видимо что-то другое.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

А как вы интерпретируете запись вида ''? И какой ответ вы ожидаете при этой проверке a[0]=''?
arni
незнакомец
Сообщения: 4
Зарегистрирован: 19.10.2009 17:10:51

Сообщение arni »

я далек от интерпретаций :)
просто хочу понять, почему для дельфы #0='', а для лазаря #0<>''
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

почему для дельфы #0='', а для лазаря #0<>''

это не так. #0='' в Дельфе возвращает "not equal". Так что это наверно какой-то баг Дельфийского компилятора :roll: Ведь по логике символ #0 не должен быть равен пустой строке..
arni
незнакомец
Сообщения: 4
Зарегистрирован: 19.10.2009 17:10:51

Сообщение arni »

Обсуждение в дельфовийской ветке.
http://www.sql.ru/forum/actualthread.aspx?tid=704901
Ответить