powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с динамическими массивами.
11 сообщений из 11, страница 1 из 1
Работа с динамическими массивами.
    #39627282
Приветствую.
Возникла необходимость в старый софт, написанный на С++ Builder добавить работу с web-сервисом (SOAP).
Пришлось вспоминать С++
Через импорт WSDL получил модуль работы с web-сервисом.
В файле .h есть такой спецификатор:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
typedef DynamicArray<itemTO*>     itemListTO;  

/*Сам класс itemTO*/
class itemTO: public TRemotable {
private:
  __int64         FidHistory;
  bool            FidHistory_Specified;
  UnicodeString   Fsurname;
  bool            Fsurname_Specified;

...
public:
  __fastcall ~itemTO();
__published:
  __property __int64     idHistory = { index=(IS_OPTN | IS_UNQL), read=FidHistory, write=SetidHistory, stored = idHistory_Specified };
  __property UnicodeString    surname = { index=(IS_OPTN | IS_UNQL), read=Fsurname, write=Setsurname, stored = surname_Specified };


А также описание функции сервиса:
Код: plaintext
1.
virtual itemListTO      getData(const UnicodeString arg0, const UnicodeString arg1) = 0;


Как правильно работать с объектом itemListTO с точки зрения работы с памятью? Создать, удалить?
Сам вызов метода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void __fastcall TForm1::BitBtn1Click(TObject *Sender) {
try {
	_di_Service WebService = GetService(True, "", NULL);
	itemListTO data;
	data = WebService->getData("test_login","test_pass");
	for (int i = 0;i < data.Length ; i++)
	{
	         Memo1->Lines->Add(data[i]->surname);
	}
	for (int i = 0;i < data.Length ; i++)
	{
	         delete[] data[i];
	}
	WebService ->Release();
}


Заранее спасибо за советы.
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627334
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр_SКак правильно работать с объектом itemListTO с точки зрения работы с памятью? Создать, удалить?


Как и со всеми объектами:
1. Если хотите, чтобы после выхода из области видимости объект сохранился, то создавайте его с помощью new:
Код: plaintext
1.
itemListTO* CurrentArray = new itemListTO(параметры конструктора);



В этом случае объект придется удалять самостоятельно:
Код: plaintext
1.
delete CurrentArray;



2. Если хотите, чтобы после выхода из области видимости объект автоматически уничтожился, то создавайте так:
Код: plaintext
1.
itemListTO CurrentArray(параметры конструктора);



В первом случае объект создается в куче, а во втором- в процедурном кеше. Но сами данные массива в обоих случаях хранятся в куче.
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627488
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLа во втором- в процедурном кеше.где-где?
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627528
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychAlekseySQLа во втором- в процедурном кеше.где-где?Это он так стек называет. :)
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627570
AlekseySQLКак и со всеми объектами:


А как быть с указателями itemTO ? В файле .h и .cpp, полученных после импорта нет описания конструктора itemListTO, есть только
строчка
Код: plaintext
1.
typedef DynamicArray<itemTO*>     itemListTO; 


А вот конструктор и деструктор объекта itemTO имеется.
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627611
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_SА как быть с указателями itemTO ? В файле .h и .cpp, полученных после импорта нет описания конструктора itemListTO, есть только
строчка
Код: plaintext
1.
typedef DynamicArray<itemTO*>     itemListTO;


А вот конструктор и деструктор объекта itemTO имеется.Нажать Ctrl+F1 на DynamicArray или воспользоваться поиском в интернете не судьба? :)
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627631
rdb_devНажать Ctrl+F1 на DynamicArray или воспользоваться поиском в интернете не судьба? :)
Читал, вот и спрашиваю Вашего совета, правильно ли все понял.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void __fastcall TForm1::BitBtn1Click(TObject *Sender) {
try {
	_di_Service WebService = GetService(True, "", NULL);
	itemListTO data;
	data = WebService->getData("test_login","test_pass");
	for (int i = 0;i < data.Length ; i++)
	{
	         Memo1->Lines->Add(data[i]->surname);
	}
	for (int i = 0;i < data.Length ; i++)
	{
	         delete data[i];  // // Удаляем объекты itemTO
	}
	WebService ->Release();
}
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627638
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_S,
Код: plaintext
1.
itemListTO data = WebService->getData("test_login","test_pass");



PS при удалении элементов из data могут быть проблемы, а могут и не быть, как повезёт)
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627727
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_S,

что-то ты один бред за другим городишь, а толку ноль.

чего тебе надо?

может тебе лучше обратно с++ забыть, нанять профессионала?
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627730
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Александр_S
А также описание функции сервиса:
Код: plaintext
1.
virtual itemListTO      getData(const UnicodeString arg0, const UnicodeString arg1) = 0;


Как правильно работать с объектом itemListTO с точки зрения работы с памятью? Создать, удалить?.[/quot]


вот как ещё можно работать с памятью, если эта функция тебе itemListTO ПО ЗНАЧЕНИЮ ?

И парни в топике такие берут и пишут тонну бреда на эту тонну беда в вопросе.

какие ещё конструкторы тебе нужны у typedef-а?
Погляди оригинальный тип, там может и будут тебе конструкторы.

ты просто С++ не вспоминаешь, ты его не знаешь.
...
Рейтинг: 0 / 0
Работа с динамическими массивами.
    #39627744
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр_SА как быть с указателями itemTO ?

Надо создать объекты itemTO, а указатели на них сложить в DynamicArray. Перед удалением DynamicArray удалить и объекты itemTO, на которые ссылаются указатели с помощью:
Код: plaintext
1.
delete itemTO;



Александр_SВ файле .h и .cpp, полученных после импорта нет описания конструктора itemListTO, есть только
строчка
Код: plaintext
1.
typedef DynamicArray<itemTO*>     itemListTO; 


А вот конструктор и деструктор объекта itemTO имеется.

typedef для удобства вводит краткое наименование типа, поэтому если интересоваться, то не конструктором itemListTO, а конструктором DynamicArray.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с динамическими массивами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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