Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / не копируется структура / 25 сообщений из 29, страница 1 из 2
07.05.2014, 16:41
    #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
07.05.2014, 16:57
    #38635841
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
woojinчто сделать, чтобы tl скопировалась в pv?
Убрать звёздочку при объявлении pv. Почувствуй разницу между значением и указателем на него.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.05.2014, 17:01
    #38635846
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
Dimitry SibiryakovУбрать звёздочку при объявлении pv.

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

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

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


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

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

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

это после
...
Рейтинг: 0 / 0
07.05.2014, 17:37
    #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
07.05.2014, 17:48
    #38635902
pirovindos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
woojin,

Ход отладчик не всегда идеально соответствует строкам кода (он не по исходнику работает).
На whilе(pv) еще может ничего не присвоено, посмотри, попадает ли исполнение внутрь цикла while.
...
Рейтинг: 0 / 0
07.05.2014, 17:54
    #38635906
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
pirovindosХод отладчик не всегда идеально соответствует строкам кода (он не по
исходнику работает).
А жёлтая полоска на скриншотах как бы намекает, что этот код ещё и не был сохранён...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.05.2014, 17:56
    #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
07.05.2014, 18:00
    #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
07.05.2014, 18:06
    #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
07.05.2014, 19:30
    #38635975
clihlt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
woojin,

A "TelList* tl;" тоже в заголовочном файле который подключен ко всем CPP файлам ?
...
Рейтинг: 0 / 0
07.05.2014, 20:21
    #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
07.05.2014, 20:45
    #38636015
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
clihltwoojin,
A "TelList* tl;" тоже в заголовочном файле который подключен ко всем CPP файлам ?
да
Dima TЭто компилятор изначально настроен на юникод. Отключи. Тут с картинками
у меня RAD Studio XE5 - используется для Delphi, не нашёл где это отключается, единственная похожая опция


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


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

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

Надо в одном из CPP написать TelList* tl; а в заголовочном файле "export TelList* tl"
...
Рейтинг: 0 / 0
07.05.2014, 21:19
    #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
07.05.2014, 21:55
    #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
07.05.2014, 22:49
    #38636068
smald
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не копируется структура
woojin
Есть ли где в заголовках или в потоке исполнения строки типа
Код: plaintext
1.
struct TelList glob_val;


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


?

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

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

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


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