Страница 1 из 1

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

СообщениеДобавлено: 25.01.2013 17:24:46
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

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

СообщениеДобавлено: 25.01.2013 19:17:36
NTFS
Да, в Delphi работает не так.

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

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

СообщениеДобавлено: 27.01.2013 08:24:31
daesher
NTFS писал(а):Нашли баг, поздравляю. Можно слать отчет.

Насколько это документировано - присваивать значение пустому имени?

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

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

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

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

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