Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с параметров параметров в функции, функция неправильно принимает значения 
:(
    Опции темы
LokiAsgard
Дата 17.12.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



Всем добрый день!
Возникла лажа с приемом данных в функции.
Сразу объясню на словах - в одной функции я считываю значения из полей формы (winapi). Вывожу сообщением параметр который плохо передается - выводит нормально.
Передаю значения в функцию создания списка. После создания - вывод параметра нормальный.
Потом запускаю функцию вывода на экран значений списка - тут с параметром происходит лажа - выводит всякую хрень.

Подскажите в чем косяк.
Вот отрывки кода. 
Код

// Структура по которой создается список 
typedef struct
    {
        int recept;        
        char nazv[20];
        char fio[15];
        char doza[15];
        char date[20];
    } panacea;

typedef struct _PAN{panacea Val; struct _PAN *Next, *Prev;} pan;

extern pan *Head, *Curr;
extern int N;
//Структура поиска 
typedef struct
    {
        int recept1;        
        int recept2;
        char nazv[20];
        char fio[15];
        char doza[15];
        char date1[20];
        char date2[20];
        int flag;
    } poisk;

Вызов окна для заполнения и вызов функции вывода в таблицу
Код

case ADD:
    //Создаем диалог добавления
        DialogBox(ghInstance, MAKEINTRESOURCE(DLG_ABOUT), hwnd, (DLGPROC)AddDlgProc);
    find.flag=0;
    //обновляем сдержимое таблицы
    Refresh(hList,find);
break;


Здесь принимаю данные с формы
Код

case IDOK:    
    GetDlgItemText(hDlg,FIO,tmp.fio,15);
    GetDlgItemText(hDlg,NAZVANIE,tmp.nazv,20);
    GetDlgItemText(hDlg,RECEP,c,15);
    tmp.recept=atoi(c);

       //Мессага отрабатывается правильно
    _itoa(tmp.recept,test,10);
    MessageBox(NULL,test,"ADD",MB_OK);


    GetDlgItemText(hDlg,DOZA,tmp.doza,40);
    GetDlgItemText(hDlg,DATA,tmp.date,20);  
        //Функция добавления в список     
    Create(tmp); 


    EndDialog(hDlg, 0);
break;

Код

//Создание элемента
int Create(panacea val)
{
    char test[255];
    pan *tmp = (pan *)malloc(sizeof(pan));
    if(!tmp) return 0;

    if(!Head)
    {
        Head=tmp;
        tmp->Prev=NULL;
        tmp->Next=NULL;
    }
    else
    {
        if(!Curr) Curr=Head;
        while(Curr->Next) Curr=Curr->Next;
        Curr->Next=tmp;
        tmp->Prev=Curr;
        tmp->Next=NULL;
    }
    tmp->Val=val; Curr=tmp;

        //Мессага отрабатывается правильно
       _itoa(tmp->Val.recept,test,10);
       MessageBox(NULL,test,"CREATE",MB_OK);


    N++;    
return 1;
}

Функция для вывода в таблицу (куски кода)
Код

BOOL InitListViewItems(HWND hList, poisk find) 
{     
    LVITEM item; 
    int flag=1,i=0;
    char ,test[255];
    pan *tmp,*tmp2;    

         //Вот тут значение записи из списка выдает хрень и что само интересно только на этом значении типа инт, на чаровских - все отлично
        _itoa(tmp->Val.recept,test,10);
        MessageBox(NULL,test,"INIT",MB_OK);

.....



Заранее благодарен за подсказки в этом косяке
PM MAIL   Вверх
bsa
Дата 17.12.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



LokiAsgard, сразу хочу сказать, что не стоит передавать структуры в функции по значению, лучше это делать по константному указателю или по ссылке.
чему равняется tmp перед тем, как ты вызываешь _itoa() в проблемном месте?
PM   Вверх
LokiAsgard
Дата 17.12.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



Введенным значениям. 
Но как только хочу просмотреть содержимое поля типа инт в InitListViewItems вылетает по ошибке.
PM MAIL   Вверх
bsa
Дата 17.12.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



LokiAsgard, в том коде, что ты привел, tmp используется до инициализации.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.