powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите разобраться с преобразованием типов
10 сообщений из 10, страница 1 из 1
помогите разобраться с преобразованием типов
    #38387151
Konstantin-78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток,
Я пишу программу на Delphi (ранее на С++ не писал), и мне дали небольшой кусочек кода на C++, который нужно потом откомпилировать под dll.
Помогите разобраться с кусочком кода на С++:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
#define L_LONG_NUMBER_SIZE	540
#define L_LONG_SHORT_NUMBER_SIZE 32
 typedef DWORD L_LONG_NUMBER[L_LONG_NUMBER_SIZE];
 typedef DWORD L_LONG_SHORT_NUMBER[L_LONG_SHORT_NUMBER_SIZE];

VOID LAdd(
	L_LONG_NUMBER x,
	L_LONG_NUMBER y,
	L_LONG_NUMBER z)
{
	PDWORD px, py;
	DWORD r, i , l;
	INT C;
….


void main(void)
{                                              
  L_LONG_NUMBER x;
  L_LONG_NUMBER y;
  L_LONG_NUMBER z;

  char *string = "87654321", *endptr;
  unsigned long lnumber;
  lnumber = strtoul(string, &endptr, 10);

  LAdd(lnumber,lnumber,lnumber);
…


У меня не совсем получается переконвертировать переменную «lnumber» в нужный тип, при вызове функции «LAdd»,
Ошибка: «cannot convert “unsigned long” to “unsigned long *” »,
Что я не так делаю?

Заранее спасибо
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387159
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin-78Что я не так делаю?
Передаёшь unsigned long int туда, где требуется L_LONG_NUMBER.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387162
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin-78,

Ну так все правильно.
Функция принимает параметром массив (на самом деле неявно указатель ), а вы передаете значение, а не массив или указатель.
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387196
Konstantin-78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Ну так все правильно.
Функция принимает параметром массив (на самом деле неявно указатель ), а вы передаете значение, а не массив или указатель.

Вот так, тогда, если не ошибаюсь, пример передачи указатель :
Код: plaintext
1.
2.
3.
4.
  
  unsigned long lnumber = 2;
  unsigned long* p=&lnumber;
  LAdd(p,p,p);



Тогда программа компилируется, ..., все замечательно, но при запуске: в сообщениях компилятора:
"Fatal: Assertion failed: exeHandle == 0 at 'PEFILE.C' (High_precision.exe - создается, но с ошибкой)
Fatal: Could not create High_precision.exe (error code 32)"

P/S
функция LAdd, является функцией сложения 2х чисел, т.е. как я понял, в функцию передаются тогда указатели на ячейки памяти с конкретными числами
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387204
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin-78,

L_LONG_NUMBER - это массив из 540 элементов, а вы передаете указатель на всего один элемент - что там будет с ним функция делать - неопределено, т.е. что угодно вплоть до форматирования диска.
Рекомендую разобраться среди себя что вы хотите сделать и уже тогда гадать, как это сделать.
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387205
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, в Дельфи типы формальных и актуальных параметров тоже должны совпадать.
Так какого ж ты передаёшь всякую левую хрень в процедуру, которая ожидает L_LONG_NUMBER?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387206
Konstantin-78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Извиняюсь, я предполагал, что "540" это размер одного элемента, мне ведь дали функцию "LAdd", как функцию сложения чисел, с высокой точностью
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387207
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin-78мне ведь дали функцию "LAdd", как функцию сложения чисел, с высокой
точностью
А ты не в состоянии ни написать эту функцию для Дельфи с нуля, ни найти готовую? Это же легко.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387212
Konstantin-78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это массивы, я посмотрел функцию далее, еще раз извиняюсь,
С другой стороны, тогда "х". "y" это массивы чисел, элементами которых, являются сами цифры чисел, правильно? И функция, поэлементно производит сложение цифр?
...
Рейтинг: 0 / 0
помогите разобраться с преобразованием типов
    #38387213
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin-78элементами которых, являются сами цифры чисел, правильно?
Да, цифры. В четыре-миллиарда-с-гаком-ричной системе счисления.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите разобраться с преобразованием типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]