Добрый день!
Прошу помощи сообщества в следующем вопросе. Есть ОЧЕНЬ необходимый для меня код, который работает в Дельфи. Он нужен для взаимодействия с довольно закрытой но очень необходимой системой для меня. Пробую перенести в IC. И тут ошибка при объявлении общих переменных. Что я делаю не так ?
code_36588.txt
Этот топик читают: Гость
Ответов: 203
Рейтинг: 2
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
kaban4ik,
Белое солнце пустыни. писал(а): - Гюльчатай, открой личико. А ? |
|||
карма: 25 |
|
Ответов: 203
Рейтинг: 2
|
|||
карма: 0 |
| ||
файлы: 1 | code_36589.txt [4KB] [580] |
Ответов: 16884
Рейтинг: 1239
|
|||
kaban4ik писал(а): Пробую перенести в IC. |
|||
карма: 25 |
|
Ответов: 203
Рейтинг: 2
|
|||
карма: 0 |
| ||
файлы: 1 | code_36590.txt [1.9KB] [556] |
Ответов: 4630
Рейтинг: 749
|
|||
карма: 26 |
| ||
файлы: 1 | code_36595.txt [2KB] [703] |
Ответов: 203
Рейтинг: 2
|
|||
Netspirit, спасибо что посмотрели мой файл. Насколько позволяют мне мои знания вы переместили массив mass в переменную типа строка S. Но вызов внешней функции требует именно массив байт типа TByteDynArray;. Так же вопрос открыт наверно.
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
А зачем преобразовывать в Base64?
|
|||
карма: 26 |
|
Ответов: 203
Рейтинг: 2
|
|||
Netspirit, что бы уменьшить размер передаваемых данных. Потом это ложиться в базу данных. Только я не уверен что там "настоящий" Base64. Это для меня закрытая система, мне дали только туда доступ.
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
То-есть, данные должны быть преобразованы в Base64 перед тем, как будут занесены в массив mass2, а затем этот массив подаётся дальше?
Потому, что, судя по твоему исходнику, преобразование в Base64 нужно только для того, чтобы вывести в консоль. И кроме этого преобразования больше никаких внешних функций не вызывается. То, что идёт после "// Начало основной программы" звучит так: - заполнить массив из 48 чисел типа Extended - поместить его в другой массив типа "массив байтов" - преобразовать этот другой массив в кодировку Base64 и вывести в консоль Конечно, если client.Encode64() - это преобразование только в Base64, а не какое-то другое. Название функции EncodeBase64 как-бы говорит об этом. |
|||
карма: 26 |
|
Ответов: 203
Рейтинг: 2
|
|||
Netspirit писал(а): Конечно, если client.Encode64() - это преобразование только в Base64, а не какое-то другое. Название функции EncodeBase64 как-бы говорит об этом.1. заполнить массив из 48 чисел типа Extended. 2. поместить его в другой массив типа массив байт. 3. передать массив через функцию client.Encode64() из сторонней библиотеки (через OLE если память не изменяет) Client_ADO.ClassA. Хоть там и написано Base64 там совсем не разу не Base64. А может ее какая реализация, но я об этом не знаю. 4. Получить строку. Работать дальше со строкой я уже умею. |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Вот как объявить и заполнить тот массив: code_36597.txt Пробуй подавать в те твои функции.
|
|||
карма: 26 |
| ||
файлы: 1 | code_36597.txt [1.1KB] [657] |
Ответов: 203
Рейтинг: 2
|
|||
Спасибо Netspirit, , благодаря Вашим подсказкам сильно продвинулся вперед к решению своей проблемы.
Вот код который работает и в Delphi 7 и в Lazarus 1.4. code_36603.txt но совершенно отказывается работать в IC Hiasm, т.е. ехе собирается, запускается и при вызове функции ошибка (исключение). Если закомментировать строку s := client.Encode64(VarArrayRef (mass2), error); то программа не падает в ошибку. Если написать s := client.Encode64(mass2), error); то программа дальше работает но нет закодированных данных. Чувствую что осталось всего пол шага до решения проблемы... Но Куда ? |
|||
карма: 0 |
| ||
файлы: 1 | code_36603.txt [286B] [552] |
Ответов: 4630
Рейтинг: 749
|
|||
То-есть, ты вытащил код из функции CallToLib и подаешь массив сразу после заполнения?
Ты не можешь просто подать mass2 на client.Encode64(). Там в функции EncodeBase64 на основе твоего mass2 создается ещё один массив, совместимый с типом Variant, а уже он подаётся на client.Encode64() code_36604.txt |
|||
карма: 26 |
| ||
файлы: 1 | code_36604.txt [772B] [674] | ||
Голосовали: | kaban4ik |
Ответов: 203
Рейтинг: 2
|
|||
Netspirit, УРА!!!!!!!!!!!!!!!!!!!!!
Тестовый пример и тот что вы дали - все данные сошлось!!!!! Огромное Вам спасибо. |
|||
карма: 0 |
|