Неочевидное поведение TStringList

Общие вопросы программирования, алгоритмы и т.п.

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

Ответить
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Неочевидное поведение TStringList

Сообщение Brainenjii »

Код:

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

program Project1;
Uses
  Classes;
Var
  aStringList: TStringList;
begin
  aStringList := TStringList.Create;
  aStringList.Values[''] := '100';
  aStringList.Values['wtf'] := '200';
  aStringList.Values['wtf'] := '300';
  aStringList.Values[''] := '400';
  WriteLn(aStringList.Text);
  aStringList.Free;
end.

Ожидалось увидеть:
=400
wtf=300

Обнаружено:
=100
wtf=300
=400
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

Да, в Delphi работает не так.

Нашли баг, поздравляю. Можно слать отчет.
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

NTFS писал(а):Нашли баг, поздравляю. Можно слать отчет.

Насколько это документировано - присваивать значение пустому имени?
NTFS
постоялец
Сообщения: 388
Зарегистрирован: 05.11.2007 13:57:50
Откуда: Краснодар
Контактная информация:

Сообщение NTFS »

Неважно, насколько документировано - все равно документацию никто не читает :-)
Важно, чтобы с включенной опцией {$mode delphi} поведение компилятора на 100% соответствовало тому компилятору, которое делал давно ушедший от нас Borland.
Иначе FreePascal из довольно полезной и самобытной поделки превращается в очередной PascalABC - учиться на нем можно, но смысл?
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

NTFS писал(а):Неважно, насколько документировано - все равно документацию никто не читает :-)
Важно, чтобы с включенной опцией {$mode delphi} поведение компилятора на 100% соответствовало тому компилятору, которое делал давно ушедший от нас Borland.
Иначе FreePascal из довольно полезной и самобытной поделки превращается в очередной PascalABC - учиться на нем можно, но смысл?

Ну, в {$mode delphi} может быть, хотя, конечно, за недокументированными функциями VCL гнаться не обязательно - пусть лучше правят исходники те, кто их зачем-то использует (благо, исходники есть, иначе особо не попортируешь). Заодно выявляются явные баги, которые в delphi были менее заметны.
Да и сейчас freepascal имеет куда более высокий уровень, нежели PascalABC - на нём много чего написано и переписано; скоро будет больше, чем на Delphi
А что действительно серьёзно - так это отсутствие в рабочем виде нормальных package, появившихся ещё с первых версий Delphi - о каких недокументированных функциях вообще идёт речь, пока нет их?
Ответить