Форум программистов, компьютерный форум CyberForum.ru

Пара глупых вопросов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
11.02.2011, 20:51     Пара глупых вопросов #1
Помогите please,please,please.
Не могу понять в чем туплю, надо всего-то записать двумерный массив в файл ну и я пишу
(Уже есть массив int levelv[25][25][2])
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//..
//..
CStdioFile file((m_filename+'.Qm'),CFile::typeText | CFile::modeCreate | CFile::modeWrite);
 
for(int fg=1;fg<26;fg++)
{
for(int gg=1;gg<26;gg++)
{
 
char buff[3];
sprintf(buff,'%i 
',levelv[fg][gg][1]);
file.WriteString(buff);
 
}
}
Почему неправельно??
Да и еще хотел спросить, как в VC делаются нестандартные окна, т.е. какие - нибудь под картинку и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2011, 20:51     Пара глупых вопросов
Посмотрите здесь:

пара вопросов по GUI C++
C++ вставление строк и пара вопросов
C++ Пара вопросов по С++
Пара вопросов про массивы C++
C++ Пара вопросов по функторам stl
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ghost
Сообщений: n/a
12.02.2011, 00:09     Пара глупых вопросов #2
1. Объявлен 3-х мерный массив, двумерки не вижу
2. Индекс массива вроде с 0-ля всегда начинался. Недавно с VB перешел на C/C++?
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
12.02.2011, 10:14  [ТС]     Пара глупых вопросов #3
Ну трехмерный, не в этом суть, а в том что компелируется нормально, а потом уже ошибка, а причина - мое мтремное знание С++.

Пишет
Run-Time Check Failure #2 - Stack around the variable 'buff' was corrupted.
SevaB
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 39
12.02.2011, 10:17     Пара глупых вопросов #4
Уж не f2c ли здесь поработал? В С с нуля массивы. И трехмерным массив нечего делать:
C++
1
2
3
4
int levelv[25][25];
for(int fg=0;fg<25;fg++)
sprintf(buff,'%i 
',levelv[fg][gg]);
Да, и %d вместо %i. И буффер побольше сделать желательно, если, конечно, изначально не известно, что -9<levelv[fg][gg]<99.
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
13.02.2011, 17:58  [ТС]     Пара глупых вопросов #5
Помогите с еще одной фишкой - мне надо получить имена всех файлов в папке. Как это осуществить даже не представляю.
man_of_ring
4 / 4 / 0
Регистрация: 09.12.2010
Сообщений: 278
13.02.2011, 21:14     Пара глупых вопросов #6
для этого используеться 3 функции:
FindFirst, FindNext, FindClose
вот примерчик из помощи Билдера

The following example uses an edit control, a button, a string grid, and seven check boxes. The check boxes correspond to the seven possible file attributes. When the button is clicked, the path specified in the edit control is searched for files matching the checked file attributes. The names and sizes of the matching files are inserted into the string grid.
C++
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
29
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
  TSearchRec sr;
  int iAttributes = 0;
  StringGrid1->RowCount = 1;
  iAttributes |= faReadOnly * CheckBox1->Checked;
  iAttributes |= faHidden * CheckBox2->Checked;
  iAttributes |= faSysFile * CheckBox3->Checked;
  iAttributes |= faVolumeID * CheckBox4->Checked;
  iAttributes |= faDirectory * CheckBox5->Checked;
  iAttributes |= faArchive * CheckBox6->Checked;
  iAttributes |= faAnyFile * CheckBox7->Checked;
  StringGrid1->RowCount = 0;
  if (FindFirst(Edit1->Text, iAttributes, sr) == 0)
 
  {
    do
    {
      if ((sr.Attr & iAttributes) == sr.Attr)
      {
        StringGrid1->RowCount = StringGrid1->RowCount + 1;
        StringGrid1->Cells[1][StringGrid1->RowCount-1] = sr.Name;
        StringGrid1->Cells[2][StringGrid1->RowCount-1] = IntToStr(sr.Size);
      }
    } while (FindNext(sr) == 0);
    FindClose(sr);
  }
}
я правда не понял для какого компилятора тебе это надо,
для досовсвого или виндового.

в любом случае для консоли пойдет )))
ну .... чекбоксы, гриды всякие удалить.
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
13.02.2011, 23:19  [ТС]     Пара глупых вопросов #7
А по проще нельзя, а то я не совсем понял, как это должно работать..
(вернее как заставить это заработать)
Пишу я на VS в MFC..
man_of_ring
4 / 4 / 0
Регистрация: 09.12.2010
Сообщений: 278
14.02.2011, 08:32     Пара глупых вопросов #8
мля....
ну примерный шаблон на АПМ...так как кодишь ты на VC
общее у нас тока АПёвые функции... не обессудь

FindFirstFile.....
do
{.....} FindNextFile
FindClose

примерно тока....
исчи в этом направлении.
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
14.02.2011, 16:32  [ТС]     Пара глупых вопросов #9
Плохо..
Придется искать исходники.
Ghost
Сообщений: n/a
14.02.2011, 17:26     Пара глупых вопросов #10
В качестве примера - выдержка из моего кода (код старый, но зато работает):
C++
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
void Process(CString stDir, CString stXMask, 
            bool bDone, bool bRecursion, bool bSilent, DWORD dwKillMode, bool bKillDir)
{
    BOOL bContinue;
 
    if (!::SetCurrentDirectory(stDir))
    {
        cerr << endl << stDir << _T(" - error! Can't change directory.") << endl;
        return;
    }
 
    while (1)
    {
        if (bRecursion || bDone)
        {   //  2 save memory - local FileFind
            CFileFind ffind;
 
            bContinue = ffind.FindFile(_T('*.*'));
            while (bContinue)
            {
                bContinue = ffind.FindNextFile();
                CString stx(ffind.GetFileName());
                if (ffind.IsDirectory())
                {
                    CString dirname = ffind.GetFileName();
                    if ((dirname != _T('.')) && (dirname != _T('..')))
                    {
                        dirname = stDir;
                        dirname += ffind.GetFileName();
                        dirname += _T('\ ');
                        if (bRecursion || bDone)
                        {
                            Process(dirname, stXMask, bDone, bRecursion, bSilent, dwKillMode, bKillDir);
                            _trmdir(dirname);
                        }
                    }
                }
            }
            ffind.Close();
            ::SetCurrentDirectory(stDir);
        }
 
        {
            CFileFind ffind2;
            bContinue = ffind2.FindFile(stXMask);
            while (bContinue)
            {
                bContinue = ffind2.FindNextFile();
                if (!ffind2.IsDirectory())
                {
                    CString name(stDir);
                    name += ffind2.GetFileName();
                    ProcessFile(name, bSilent, dwKillMode, ffind2.GetLength64());
                }
            }
            ffind2.Close();
            break;
        }
    }
    if (bKillDir)
    {
        //
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2011, 20:45     Пара глупых вопросов
Еще ссылки по теме:

Пара вопросов по итераторам C++
C++ Маленькая кучках глупых вопросов (отвечайте по проще, я еще ничего не знаю ;)
C++ Пара вопросов по C++ 11

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
an-v1
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 105
14.02.2011, 20:45  [ТС]     Пара глупых вопросов #11
Thanks!Thanks!Thanks! Проверим.
Yandex
Объявления
14.02.2011, 20:45     Пара глупых вопросов
Ответ Создать тему
Опции темы

Текущее время: 03:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru