powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / не копируется структура
25 сообщений из 29, страница 1 из 2
не копируется структура
    #38635818
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем здравствуйте!
задача в принципе не сложная, но т.к. я с "СИ" ни когда не сталкивался упёрся лбом в стенку
есть структура
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
const int len = 31, tlen = 16;

struct TelList {
	char fam[len];
	char name[len];
	char tel[16];
	int start;
	int end;
	TelList* next;
};
//TelList* tl = new TelList;
TelList* tl;


переменная tl (как я понял) задаётся глобально, т.к. структура описана в заголовочном файле который подключен ко всем CPP файлам
и в одной из функций надо локально сделать копию данной переменной чтобы потом перегнать её в StringGrid
вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
	   TelList* pv = tl;
	   while(pv) {
		  StringGrid1->Cells[0][0] = StringGrid1->RowCount+1;
		  StringGrid1->Cells[1][0] = pv->fam;
		  StringGrid1->Cells[2][0] = pv->name;
		  StringGrid1->Cells[3][0] = pv->tel;
		  StringGrid1->Cells[4][0] = DateTimeToStr(pv->end - pv->start);
		  pv=pv->next;
	   }


но почему то при TelList* pv = tl; переменная pv просто становится нулевой!!!
подскажите что сделать, чтобы tl скопировалась в pv ?
...
Рейтинг: 0 / 0
не копируется структура
    #38635841
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojinчто сделать, чтобы tl скопировалась в pv?
Убрать звёздочку при объявлении pv. Почувствуй разницу между значением и указателем на него.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
не копируется структура
    #38635846
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУбрать звёздочку при объявлении pv.

ошибка: не возможно конвертировать 'TelList *' в 'TelList'
Dimitry SibiryakovПочувствуй разницу между значением и указателем на него.

я в СИ не шарю так что почувствовать не получается (((
...
Рейтинг: 0 / 0
не копируется структура
    #38635851
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверял чему равно tl ?
...
Рейтинг: 0 / 0
не копируется структура
    #38635853
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovwoojinчто сделать, чтобы tl скопировалась в pv?
Убрать звёздочку при объявлении pv. Почувствуй разницу между значением и указателем на него.

как понимаю это связный список, надо указатель на начало скопировать, не надо звездочки убирать.
...
Рейтинг: 0 / 0
не копируется структура
    #38635860
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TПроверял чему равно tl ?
при каждом пуске программы постоянно изменяющемуся адресу
...
Рейтинг: 0 / 0
не копируется структура
    #38635862
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tкак понимаю это связный список, надо указатель на начало скопировать, не надо звездочки убирать.
в том то и дело он не копируется, после TelList* pv = tl; , pv становится NULL
...
Рейтинг: 0 / 0
не копируется структура
    #38635864
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если сделать так
Код: c#
1.
2.
	   TelList*pv;
	   pv = tl;


то pv так же становится равно NULL
при этом в tl данные есть
...
Рейтинг: 0 / 0
не копируется структура
    #38635867
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,

Как ты выяснил, что при TelList* pv = tl; переменная pv просто становится нулевой!

Отладчик?
...
Рейтинг: 0 / 0
не копируется структура
    #38635876
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pirovindoswoojin,
Отладчик?
ага
это до:

это после
...
Рейтинг: 0 / 0
не копируется структура
    #38635891
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojinDima Tкак понимаю это связный список, надо указатель на начало скопировать, не надо звездочки убирать.
в том то и дело он не копируется, после TelList* pv = tl; , pv становится NULL
Проверь
Код: plaintext
1.
2.
3.
TelList* pv = tl;
MessageBox(NULL, tl->fam, "tl", 0);
MessageBox(NULL, pv->fam, "pv", 0);
...
Рейтинг: 0 / 0
не копируется структура
    #38635902
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,

Ход отладчик не всегда идеально соответствует строкам кода (он не по исходнику работает).
На whilе(pv) еще может ничего не присвоено, посмотри, попадает ли исполнение внутрь цикла while.
...
Рейтинг: 0 / 0
не копируется структура
    #38635906
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirovindosХод отладчик не всегда идеально соответствует строкам кода (он не по
исходнику работает).
А жёлтая полоска на скриншотах как бы намекает, что этот код ещё и не был сохранён...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
не копируется структура
    #38635908
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TПроверь
Код: plaintext
1.
2.
3.
TelList* pv = tl;
MessageBox(NULL, tl->fam, "tl", 0);
MessageBox(NULL, pv->fam, "pv", 0);


пусто

pirovindoswoojin,

Ход отладчик не всегда идеально соответствует строкам кода (он не по исходнику работает).
На whilе(pv) еще может ничего не присвоено, посмотри, попадает ли исполнение внутрь цикла while.
не попадает, со строки whilе(pv) сразу проходит дальше (т.е. во внутрь не попадает)
...
Рейтинг: 0 / 0
не копируется структура
    #38635911
Фотография Macks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojinDima TПроверь
Код: plaintext
1.
2.
3.
TelList* pv = tl;
MessageBox(NULL, tl->fam, "tl", 0);
MessageBox(NULL, pv->fam, "pv", 0);


пусто



В обоих боксах?
...
Рейтинг: 0 / 0
не копируется структура
    #38635920
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а сейчас вообще стало ошибку выдавать на обоих MessageBox
[bcc32 Error] main.cpp(39): E2034 Cannot convert 'char *' to 'const wchar_t *'
[bcc32 Error] main.cpp(39): E2342 Type mismatch in parameter 'lpText' (wanted 'const wchar_t *', got 'char *')
...
Рейтинг: 0 / 0
не копируется структура
    #38635975
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,

A "TelList* tl;" тоже в заголовочном файле который подключен ко всем CPP файлам ?
...
Рейтинг: 0 / 0
не копируется структура
    #38635997
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojinа сейчас вообще стало ошибку выдавать на обоих MessageBox
[bcc32 Error] main.cpp(39): E2034 Cannot convert 'char *' to 'const wchar_t *'
[bcc32 Error] main.cpp(39): E2342 Type mismatch in parameter 'lpText' (wanted 'const wchar_t *', got 'char *')
Это компилятор изначально настроен на юникод. Отключи. Тут с картинками
...
Рейтинг: 0 / 0
не копируется структура
    #38636015
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
clihltwoojin,
A "TelList* tl;" тоже в заголовочном файле который подключен ко всем CPP файлам ?
да
Dima TЭто компилятор изначально настроен на юникод. Отключи. Тут с картинками
у меня RAD Studio XE5 - используется для Delphi, не нашёл где это отключается, единственная похожая опция


P.S. было бы задание на дельфе, я бы уже накатал, а вот на СИ как то не получается (((((
...
Рейтинг: 0 / 0
не копируется структура
    #38636017
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,


woojinclihltwoojin,
A "TelList* tl;" тоже в заголовочном файле который подключен ко всем CPP файлам ?
да

Ну дык... нибось значение в переменную tl записывается в одном CPP файле, а читать пытаешься во втором?

Надо в одном из CPP написать TelList* tl; а в заголовочном файле "export TelList* tl"
...
Рейтинг: 0 / 0
не копируется структура
    #38636030
woojin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
clihltwoojin,


woojinпропущено...

да

Ну дык... нибось значение в переменную tl записывается в одном CPP файле, а читать пытаешься во втором?

Надо в одном из CPP написать TelList* tl; а в заголовочном файле "export TelList* tl"

заголовочный со структурой
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//---------------------------------------------------------------------------

#ifndef structH
#define structH
const int len = 31, tlen = 17;

struct TelList {
	char fam[len];
	char name[len];
	char tel[tlen];
	int start;
	int end;
	TelList* next;
};
//TelList* tl = new TelList;
TelList* tl;
//---------------------------------------------------------------------------
#endif


CPP структурного заголовка
Код: c#
1.
2.
3.
4.
5.
6.
//---------------------------------------------------------------------------

#pragma hdrstop

#include "struct.h"
//---------------------------------------------------------------------------


в каком месте я должен расположить export ?
...
Рейтинг: 0 / 0
не копируется структура
    #38636047
clihlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin,

CPP структурного заголовка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
//---------------------------------------------------------------------------

#pragma hdrstop

#include "struct.h"
//---------------------------------------------------------------------------
TelList* tl;



заголовочный со структурой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
//---------------------------------------------------------------------------

#ifndef structH
#define structH
const int len = 31, tlen = 17;

struct TelList {
	char fam[len];
	char name[len];
	char tel[tlen];
	int start;
	int end;
	TelList* next;
};
//TelList* tl = new TelList;
export TelList* tl;
//---------------------------------------------------------------------------
#endif
...
Рейтинг: 0 / 0
не копируется структура
    #38636068
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woojin
Есть ли где в заголовках или в потоке исполнения строки типа
Код: plaintext
1.
struct TelList glob_val;


И в потоках исполнения
Код: plaintext
1.
 tl = &glob_val;


?

Если этого нет, то в tl что угодно, тоько не адрес экземпляра struct TelList.

ЗЫ над Вами тут стебутся, призывая звёздочки убрать, не слушайте.
Запись TelList* pv = tl; правильна.

ЗЫ если не секрет, где это Вам сразу так доверили на С-ях писать, не зная их.
Узнать бы контору, которая такое практикует, софт у них лёгкая мишень по любому.
...
Рейтинг: 0 / 0
не копируется структура
    #38636152
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
В неинициализированной глобальной переменной не что угодно, а совершенно точно NULL.
...
Рейтинг: 0 / 0
не копируется структура
    #38637235
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?В неинициализированной глобальной переменной не что угодно, а совершенно точно NULL.Заблуждаешься.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / не копируется структура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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