Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Делфи, TOClient |
Философия, технологии, алгоритмы! |
|
Опции темы |
19.08.2013, 10:01 | #1 |
Форумец
|
Делфи, TOClient
добрый день
Возникла проблема с Делфи. Нужно переписать код на делфи под С#, мне прислали делфевый проект. При открытии пишет груду ошибок про класс TOClient (вложение), соовтественно не стартует, не могу отдебажить. Предполагаю что то нужно подключить, но что и где взять? win 7 64х, делфи 7 ent/ Прошу откликнуться. |
19.08.2013, 10:34 | #2 |
Мы вместе
Сообщений: 917
Регистрация: 15.04.2005
Возраст: 40
Не в сети |
К проекту подключены сторонние модули: UOMemTable, UOClient, UOrionAbstracts, UOrionTCPConnection. Учитывая то, что гугл о ни не знает, это, скорее всего, какие-то самописные библиотеки для работы с базами данных тех, кто дал вам этот проект. Этих файлов в самом проекте нет? Может они приложены и их просто нужно подключить?
|
19.08.2013, 11:00 | #3 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
][irurg, откуда ты этот проект взял?
В некоторых случаях, проще написать с 0 на C#. Имея только рабочее приложение, и сам код. Он у тебя есть. Так что принцип работы ты знаешь. P.S. Наблюдал ситуацию, когда одна организация спионерила исходники, без компонентов. Пытались запустить но тщетно. Оказалось часть компонентов, было "обёрткой" для достаточно специфичных компонент. Пришлось выходить на программиста, который рассказал что и как. Ах да, чуть не забыл... DWanek , +1 |
19.08.2013, 11:12 | #4 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Это, кстати, говорит не в пользу того программиста. Ну, знаете, bus factor и все такое.
|
19.08.2013, 11:22 | #5 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
silly, ) Bus Factor тут не причём. Я допустим при разработке программ, библиотеки или компоненты храню в отдельной папке. Т.к. иногда приходиться их обновлять или с новой версией экспериментировать.
Ещё один аргумент, вот у меня например, несколько проектов используют компонент FastReport. Я же не буду эти компоненты в каждую папку проекта совать. Так что если скопировать папку Source, то исходники просто не откомпилируются, т.к. IDE не найдёт библиотек. |
19.08.2013, 12:41 | #6 | |
Форумец
|
да, погуглил поглубже - видимо какие то самописные функции. В файле проекта библиотек нет.
Может сможете тогда в конвертации помочь? Проблема в том, что в проге происходит раскодирование последовательности из базы данных скл. Последовательность выглядит примерно так - OќnюRюT набор сиволов. В скл выглядит чуть иначе чем тут. Всего 11 символов. из этой строки должен получаться шестнадцатиричный код : 540052006E9D4F01 Переписываю алгоритм в си шарп, получаю хрень: 54144e52144e6e45c4f Алгоритм перед раскодировкой обрабатывает исх строку и выкидывает эскейп-символы. Вот тут видимо и засада. Вот алгоритм на делфи: Цитата:
Прикладываю скриншот из си. И ладно бы проблемы кодировки какие нибудь - другие то символы угадываются - 540052006E9D4F01 - что должно быть 54144e52144e6e45c4f - что получаю 54, 52, 6е - присутсвуют. 144e видимо должно в 00 превратится. 9D4F - код карточки который мне нужен, он там вобще не угадывается в том что получаю. |
|
19.08.2013, 12:47 | #7 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
][irurg, 0х254 != #254
#254 значит в десятичном коде! Сам посуди, откуда взяться такому символу? Таблица ASCII это вроде как 256 символов, а если ты переведёшь 254 из Шестрадцатеричной в десятеричную, то за её границы выйдешь. В дельфи свои фишки с кодировкой. там например #13#10 равно '\n' из C/C++. И вообще сделай через switch Так удобнее анализировать будет. Последний раз редактировалось Hopkroft; 19.08.2013 в 12:52. Причина: Не все мысли изложил в одном посте... |
19.08.2013, 13:04 | #8 |
Форумец
|
Hopkroft, блин, я думал # в делфях символ шестнадцатиричных чисел. Причем где то даже натыкался в инете на такую статью. Сейчас еще раз посмотрел -
" В этом случае перед целым десятичным числом без знака, находящимся в интервале от 0 по 255, ставится специальный знак # . Например, #65 (литера A) | #40 (литера открывающаяся круглая скобка) | #36 (литера $)." Но все равно непонятно, у меня в строке десятичных 254 тоже нет. дык вот это и смутило. Посмотри на скриншот из Си - там и больше 1000 коды есть. Почему, откуда? |
19.08.2013, 13:10 | #9 | |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
Цитата:
По поводу 254 символа...Тут зависит от того кто тебе поток создаёт. Т.к. может какая-то функция генерирует сообщение с 254 символом в конце. Вот тогда он у тебя и появиться. Кстати, Delphi (до включительно 2007) использовала ASCII, так что вероятность что в программе у тебя использовалось ASCII кодировка равна 100%. Тем более у тебя стоит тип ShortString. P.S. или как вариант переменная "обрезается" до нужного типа. Последний раз редактировалось Hopkroft; 19.08.2013 в 13:28. |
|
19.08.2013, 13:30 | #10 |
Форумец
|
Hopkroft, огромное сердечное спасибо! конечно это не ASCII был, cp1251.
две строчки все решили: var encoding = Encoding.GetEncoding(1251); var str = encoding.GetBytes(str1); и там уже 254 символ присутствует. |
19.08.2013, 19:29 | #12 | |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Цитата:
Последний раз редактировалось silly; 20.08.2013 в 00:07. Причина: Опять непонятно написал |
|
20.08.2013, 08:55 | #14 | |
Форумец
Сообщений: 39,863
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
автор свою проблему, как я понимаю, решил, так что мы никому не помешаем, тем паче что ему тоже сия таинственная тема сущности текста любопытна))) |
|
20.08.2013, 11:21 | #15 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Spectator, ты, как обычно, неправ. Кодировка по определению есть сопоставление байтиков с буквами, если в бинарных данных не закодирован текст, то у них нет и кодировки.
|
20.08.2013, 12:25 | #16 |
Registered User
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56
Не в сети |
silly, ты можешь рассматривать последовательность байт как закодированный текст. Применяя к нему кодировку ты будешь менять его отображение.
Например, ты же когда открывать JPEG в текстовом редакторе, в зависимости от кодировки у тебя будут меняться буковки на экране. Компьютеру плевать, что у тебя за данные. Как ты с ними работаешь так он и будет тебе их отображать. |