Difference between revisions of "User Changes 2.6.4/ru"

From Free Pascal wiki
Jump to navigationJump to search
Line 34: Line 34:
  
 
==== В StrUtils добавлена реализация RomanToInt ====  
 
==== В StrUtils добавлена реализация RomanToInt ====  
* '''Old behaviour''': Providing an invalid input to RomanToInt would return 0.
+
* '''Было''': Providing an invalid input to RomanToInt would return 0.
* '''New behaviour''': Providing an invalid input to RomanToInt will raise an EConvert error.
+
* '''Стало''': Providing an invalid input to RomanToInt will raise an EConvert error.
* '''Reason''': What constitutes "Invalid input" was very arbitrary: only invalid characters constituted an error. Right characters in wrong places would be erroneously translated. Now the implementation has the three usual implementations TryRomanToInt, RomanToIntDef and RomanToInt
+
* '''Причина''': What constitutes "Invalid input" was very arbitrary: only invalid characters constituted an error. Right characters in wrong places would be erroneously translated. Now the implementation has the three usual implementations TryRomanToInt, RomanToIntDef and RomanToInt
* '''Remedy''': Use RomanToIntDef. The Default value used in case of error is declared with default 0, making the signature and behaviour equivalent to the old function.
+
* '''Лекарство''': Use RomanToIntDef. The Default value used in case of error is declared with default 0, making the signature and behaviour equivalent to the old function.
  
 
==== Метод Classes.TStringList.InsertItem теперь представлен как виртуальный с двойной реализацией ====  
 
==== Метод Classes.TStringList.InsertItem теперь представлен как виртуальный с двойной реализацией ====  

Revision as of 12:16, 12 April 2014

О чём эта статья

Здесь представлены изменения, которые внесены в компилятор FPC версии 2.6.4 после предыдущего релиза, которые могут вызвать в некоторых случаях невозможность работы кода программы. Список включает в себя причины, по которым эти изменения были внесены и предложения о том, как вы можете доработать свой код если обнаружите, что ранее работавщий код вдруг оказался нерабочим вследствие этих изменений.

Все системы

Изменения в модулях

DB

TODBCConnection (odbcconn) - Больше нет автоматического подтверждения каждого изменения данных
  • Было: Autocommit был включён: Каждое изменение записывалось в базу данных сразу.
  • Стало: Изменения должны быть подтверждены явно с помощью Transaction.Commit.
  • Причина: Транзакции становятся бесполезными, если всё подтверждается автоматом по частям: в этом случае откат полностью не представляется возможным.
  • Лекарство: Вы можете включить autocommit записав AUTOCOMMIT=1 в параметры TODBCConnection.
TDBF - Из модуля удалено предупреждение "Устаревшее" (deprecation)
  • Было: Модули TDBF были помечены как устаревшие из-за того, что разработчик, ведущий эти модули, прекратил их обслуживать. Однако модуль остался в fcl-db и патчи к нему принимались.
  • Стало: Предупреждение "устарело" удалено. Был найден новый разработчик, который поддерживает этот модуль.
  • Лекарство: Не требуется.

FPCanvas - свойство Strikethough исправлено написание - StrikeThrough

  • Было: Fonts had a Striketrough property which is a typo.
  • Стало: The property has been changed to Strikethrough.
  • Причина: Исправление синтаксической ошибки.
  • Лекарство: Пожалуйста, переименуйте вызов свойства в своём коде. FPC 2.6.2 содержало обе версии.

Ссылка shlobj удалена из модуля Windows

  • Было: Когда содержимое модуля windows было разделено между модулями windows и shlobj, не все ссылки на shlobj были удалены из windows.
  • Стало:
    • Сейчас: the symbols are marked deprecated in the windows unit.
    • Next major version: shlobj symbols will be removed from the windows unit. Code relying on that will fail to compile if it doesn't import shlobj.
  • Причина: shlobj и некоторые версии windows несовместимы, что вело к ошибкам.
  • Лекарство: Добавьте shlobj себе в строку uses, если её там раньше не было.

В StrUtils добавлена реализация RomanToInt

  • Было: Providing an invalid input to RomanToInt would return 0.
  • Стало: Providing an invalid input to RomanToInt will raise an EConvert error.
  • Причина: What constitutes "Invalid input" was very arbitrary: only invalid characters constituted an error. Right characters in wrong places would be erroneously translated. Now the implementation has the three usual implementations TryRomanToInt, RomanToIntDef and RomanToInt
  • Лекарство: Use RomanToIntDef. The Default value used in case of error is declared with default 0, making the signature and behaviour equivalent to the old function.

Метод Classes.TStringList.InsertItem теперь представлен как виртуальный с двойной реализацией

  • Old behaviour: The two InsertItem methods (both Virtual) had their own implementation. This double virtual method is probably an ancient form of default parameter by overloading. If you wanted to override InsertItem, you had to override them both.
  • New behaviour: InsertItem(Index,String) now calls InsertItem(Index,String,nil). This means that users can and should only override the 3 parameter version. In case both methods are overridden, this can lead to duplicate execution of the override code.
  • Reason: Only having to override one method. However this breaks code that overrode both.
  • Remedy: Only override the three parameter version.