Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
100 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,599
1

Как установить в RAD Studio компонент от Delphi 7?

27.10.2017, 19:37. Показов 3990. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот есть старый компонент(требуется только VCL):
TntUnicode.rar

Значит там в папке TntUnicode/Packages есть папки(под версию Delphi):
TntUnicode/Packages/bds4
TntUnicode/Packages/d6
TntUnicode/Packages/d7
TntUnicode/Packages/d9


Копирую папку d9 на рабочий стол(беру просто ближайшую к своей версии).
Изменяю цифру 9 на 14 в названии(у меня RAD 2010).
Открываю папку, удаляю всё лишненее, оставляю только файлы *.dpk и *.cfg
4 файла:
TntUnicodeVcl_D90.dpk
TntUnicodeVcl_R90.dpk
TntUnicodeVcl_D90.cfg
TntUnicodeVcl_R90.cfg


Меняю им 90 на 14, открываю блокнотом *.dpk, и меняю окончания вверху на:
package TntUnicodeVcl_D14;
package TntUnicodeVcl_R14;


Всё, можно устанавливать, закидываю папку обратно в TntUnicode/Packages/

Открываю в RAD файл TntUnicodeVcl_R14.dpk.
Вылезает табличка, что нет файла TntUnicodeVcl_R14.res, жму ОК - он создаётся.
Нажимаю в Project Manager(справа) правой кнопкой мыши по TntUnicodeVcl_R14.bpl
Выбираю сначала Clean, затем Build, и посыпалось(19 предупреждений, 4 ошибки):

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[DCC Warning] ActiveIMM_TLB.pas(897): W1057 Implicit string cast from 'AnsiString' to 'WideString'
[DCC Error] TntClasses.pas(108): E2037 Declaration of 'Get' differs from previous declaration
[DCC Error] TntClasses.pas(109): E2037 Declaration of 'Put' differs from previous declaration
[DCC Error] TntClasses.pas(119): E2037 Declaration of 'Insert' differs from previous declaration
[DCC Warning] TntClasses.pas(345): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Warning] TntClasses.pas(353): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Warning] TntClasses.pas(360): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(391): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(394): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(396): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(507): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Warning] TntClasses.pas(556): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(561): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(565): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(649): W1022 Comparison always evaluates to True
[DCC Warning] TntClasses.pas(988): W1057 Implicit string cast from 'AnsiString' to 'WideString'
[DCC Warning] TntClasses.pas(1027): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Warning] TntClasses.pas(1048): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Warning] TntClasses.pas(1097): W1057 Implicit string cast from 'AnsiString' to 'string'
[DCC Warning] TntClasses.pas(1719): W1057 Implicit string cast from 'AnsiString' to 'WideString'
[DCC Warning] TntClasses.pas(1729): W1057 Implicit string cast from 'AnsiString' to 'WideString'
[DCC Warning] TntClasses.pas(1735): W1058 Implicit string cast with potential data loss from 'WideString' to 'AnsiString'
[DCC Fatal Error] TntFormatStrUtils.pas(38): F2063 Could not compile used unit '..\..\Source\TntClasses.pas'


Исправить всё это я могу, просто буду тыкать компилятору то, что ему надо.
Но не уверен, что потом всё это будет работать.

Вот например первое предупреждение:
Delphi
1
[DCC Warning] ActiveIMM_TLB.pas(897): W1057 Implicit string cast from 'AnsiString' to 'WideString'
3я строка, MachineName - AnsiString, а первый аргумент у CreateRemoteComObject - WideString.
Функция вроде как стандартная, декларируется в ComObj
Delphi
1
2
3
4
class function CoCActiveIMM.CreateRemote(const MachineName: AnsiString): IActiveIMMApp;
begin
  Result := CreateRemoteComObject(MachineName, CLASS_CActiveIMM) as IActiveIMMApp;
end;
Как так получается?
Тот, кто писал этот компонент не видел, что функция принимает двухбайтовую строку?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2017, 19:37
Ответы с готовыми решениями:

Кто знает как установить компонент от Делфи 7 в RAD Studio XE3?
Здравствуйте. Когда-то бродив по интернету, нашел для себя хороший компонент DBNavSearch. Это по...

Компонент DbGridPro из RAD Studio 4.52 for Delphi 7
Может кто сталкивался? Как отобразить картинку в ячейке DBGridPro из палитры RAD-Studio? Как это...

Посоветуйте какую версию Delphi скачать? Пытаюсь установить RAD Studio XE3 - вылетает по ошибке
Посоветуйте какую версию Delphi скачать? Пытаюсь установить RAD Studio XE3 - вылетает по ошибке ...

Как создать свой собственный компонент для rad studio?
Доброго времени суток. Столкнулся с проблемой создания собственных компонентов, так как понятия не...

8
Native x86
Эксперт Hardware
5524 / 3279 / 938
Регистрация: 13.02.2013
Сообщений: 10,443
27.10.2017, 19:41 2
Лучший ответ Сообщение было отмечено артист как решение

Решение

Начиная с Delphi 2009 тип string стал двухбайтовым. И функции API теперь по умолчанию вызываются юникодные. И большинство старых компонентов простой компиляцией теперь не поставить, нужен вдумчивый анализ всех строковых и символьных операций.
1
100 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,599
27.10.2017, 19:47  [ТС] 3
Т.е. String == WideString?
0
Native x86
Эксперт Hardware
5524 / 3279 / 938
Регистрация: 13.02.2013
Сообщений: 10,443
27.10.2017, 19:50 4
Лучший ответ Сообщение было отмечено артист как решение

Решение

String = UnicodeString (WideString -- это немножко другое, хоть и похоже)
TChar = TWideChar

А все API вызовы с A-суффикса теперь переведены на W-суффикс (в D2-D2007 при вызове CreateFile вызывалась CreateFileA, а начиная с D2009 вызывается CreateFileW).
1
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
27.10.2017, 20:24 5
Лучший ответ Сообщение было отмечено артист как решение

Решение

А нафига вообще эту библиотеку ставить в Д2010? Все что она делала это представляла юникодные версии старой VCL. А в Д2010 это и так уже реализовано.
1
100 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,599
27.10.2017, 21:02  [ТС] 6
Я не особо шарю как поменять, хочу скомпилить программку, она тоже на 7ке писалась, вот там этот компонент используется...
0
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
27.10.2017, 21:26 7
Лучший ответ Сообщение было отмечено артист как решение

Решение

Просто меняйте названия компонентов в pas и dfm файлах удаляя из названий буквы tnt
1
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
28.10.2017, 09:27 8
Цитата Сообщение от артист Посмотреть сообщение
хочу скомпилить программку, она тоже на 7ке писалась, вот там этот компонент используется...
ну так поставь D7. тучу сборок можно найти, портабельных и не очень. не нравится сборка, возьми чистую. как и где это берется, рассказывать не нужно?
1
100 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,599
28.10.2017, 11:05  [ТС] 9
Да я ставил, она задолбала предупреждениями о том, что совместимость не совместимость...
Да и какая-то странная она, вся из окон, а посередине рабочий стол видно.
0
28.10.2017, 11:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 11:05
Помогаю со студенческими работами здесь

Где в RAD Studio Starter компонент WebBrowser?
Торренты позаблокировали пришлось скачать... RAD STUDIO 10.2 starter проект не собирается от...

Как установить компонент на Delphi 7
Помогите не могу установить компонент на Delphi 7

Как установить компонент на Delphi 7
Помогите не могу установить компонент TLCDScreen v3.0 на Delphi 7

Как установить компонент в Delphi?
Нашел компонент для работы с XML: http://www.kluug.net/oxml.php Перенес его в Delphi,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru