Проблем с Delphi - несъвместимост на версията - Блог Личен сайт на Михаил Фленов

Един не толкова интелигентен човек веднъж изрази учудване защо сам пиша такива неща като предаване на данни към мрежата, а не използване на компоненти. Факт е, че ако знаете как работи протоколът и най-важното, разберете как работи. Писането на код не е трудно. Но винаги пиша по такъв начин, че кодът ми да не е обвързан с конкретна версия и след това можете лесно да преминете към следващата. Да не говорим, че мрежовата комуникация трябва да бъде клас, а не компонент.

Но това вече е отклонение от основната идея и ако някой все още внедрява мрежата чрез компонент, тогава тук няма нищо фатално. Това не е съвсем успешно, но не и фатално.

Да се ​​върнем на съвместимостта между версиите. Мисля, че това е основният проблем на Delphi. Много хора са останали с Delphi 5, 6 или 7 само защото цената на надстройката до 2007 или по-нова става нереалистично висока.

Това, разбира се, не е единственият проблем, но е доста сериозен, защото ако приложението ви не е от класа на Hallo World, а използва компоненти на трети страни, то определено ще срещнете проблеми със съвместимостта на кода по време на прехода. Това не е толкова проблем с Delphi, а по-скоро как хората пишат компоненти за тази среда. И те се записват със знака за равенство.

Много често виждах сравнения на типове в кода на компонентите: ако Delphi версия = 5, тогава използвайте чипа версия 5. Например, да кажем, че програмист е написал компонент за работа с низове в Delphi 6, използвайки Ansi функции за низове. Излиза Delphi 7 (номерата на версиите са само пример и нямат нищо общо с реалността) с поддръжка на Unicode и променя компонента по следния начин:

Този код работи добре, докато бъде пусната версия 8,където Unicode трябва да се използва отново, въпреки че съществуващата логика ще използва по-старата функция. Това създава проблеми при прехода. Трябва да е нещо като:

Обикновено обратната съвместимост се запазва и следователно нова функция, която се появява в някоя версия на средата или SDK, се запазва в следващите.

Не използвам компоненти на трети страни в C# по навик, лош опит с Delphi, но се чудя дали има такива проблеми там?

Microsoft стигна до такова лошо заключение преди много време, че повечето програмисти използват сравнение на равенството, така че проблеми със съвместимостта в софтуера много често възникваха и MS не беше много виновен за това. Следователно при преминаване от Vista към Windows 7 не промениха номера на версията, който API функцията връща, той остана 6-ти.

Хареса ли? Щракнете върху Харесвам, за да знам кое съдържание е по-интересно за читателите. Все още никой не е харесал тази публикация и можете да сте първият