Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
1

2 вопроса про цикл и про FileCreate

22.07.2009, 14:05. Просмотров 3235. Ответов 8
Метки нет (Все метки)

1.При выполнении прога зависает:
C++
1
2
3
4
5
 int count = 1;
        AnsiString myF;
        while(FileExists("files\\file_1"))count++;
        myF=("\\files\\file_"+count);
        RenameFile("files\\temp\\temp", myF);
2.После создания файла к нему нет доступа пока не выйдешь из проги, как заставить создать файл и оставить его в покое после этого?
C++
1
FileCreate("files\\temp\\temp");
Добавлено через 10 минут 32 секунды
По поводу первого вопроса - мне нужно переменной myF присвоить имя, в зависимости от того какие файлы уже существуют в папке, тоесть, если есть файл file_1 , то myF должно присвоится file_2. Объясните, как это реализовать. Жду помощи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2009, 14:05
Ответы с готовыми решениями:

И снова про PopupMenu (было про длину, теперь про ширину)
Добавляем в пустое PopupMenu несколько пунктов динамически (шириной, например, до 50 символов)....

2 вопроса про носители
Привет, Помогите разобраться... 1. Купил новую флэшку С150В (на 4 ГБ). 100 МБ записываются...

2 вопроса про службы в Windows XP
1) Как удалить службу? 2) Как изменить имя исполняемого файла, который запускает служба?

Два вопроса про DropDownList
Сабж следующий: 1. Есть GridView, в котором один из столбцов состоит из ячеек типа...

8
Эксперт С++
7174 / 3233 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
22.07.2009, 14:06 2
А что обозначает загадочный код ?
while(FileExists("files\\file_1"))count++;
Тут и зависает.
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
22.07.2009, 14:07  [ТС] 3
odip, агась, именно тут Подскажи, как правильно написать?
По поводу первого вопроса - мне нужно переменной myF присвоить имя, в зависимости от того какие файлы уже существуют в папке, тоесть, если есть файл file_1 , то myF должно присвоится file_2. Объясните, как это реализовать. Жду помощи.
0
83 / 83 / 19
Регистрация: 17.12.2007
Сообщений: 574
23.07.2009, 09:15 4
Цитата Сообщение от singleplayer Посмотреть сообщение
1.При выполнении прога зависает:

Код C++1 2 3 4 5 int count = 1; AnsiString myF; while(FileExists("files\\file_1"))count++; myF=("\\files\\file_"+count); RenameFile("files\\temp\\temp", myF);
2.После создания файла к нему нет доступа пока не выйдешь из проги, как заставить создать файл и оставить его в покое после этого?

Код C++1 FileCreate("files\\temp\\temp");
Добавлено через 10 минут 32 секунды
По поводу первого вопроса - мне нужно переменной myF присвоить имя, в зависимости от того какие файлы уже существуют в папке, тоесть, если есть файл file_1 , то myF должно присвоится file_2. Объясните, как это реализовать. Жду помощи.

как то так:
1) посчитай колличество имеющихся файлов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TSearchRec File;
 
  if (FindFirst(WayToGirtcInp, faAnyFile, File) == 0)
 
  {//2 если есть файл
 
    do //3 цикл do
    { 
      if (!(File.Name=="." || File.Name==".." ) )
 
       { //4 если не каталог
 
         счетчик файлов++;
     
       } //4  если не каталог
 
    } while (FindNext(File) == 0); //3 цикл do
            FindClose(File);
  }//2 если есть файл
2) по поводу создания файла - хелп:

The following example uses a button, a string grid, and a Save dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the contents of the string grid are written to the specified file. Additional information is also written to the file so that it can be read easily with the FileRead function.
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
#include <dir.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  char szFileName[MAXFILE+4];
  int iFileHandle;
  int iLength;
  if (SaveDialog1->Execute())
  {
    if (FileExists(SaveDialog1->FileName))
    {
      fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
      strcat(szFileName, ".BAK");
      RenameFile(SaveDialog1->FileName, szFileName);
    }
    iFileHandle = FileCreate(SaveDialog1->FileName);
 
    // Write out the number of rows and columns in the grid.
    FileWrite(iFileHandle, (char*)&(StringGrid1->ColCount), sizeof(StringGrid1->ColCount));
    FileWrite(iFileHandle, (char*)&(StringGrid1->RowCount), sizeof(StringGrid1->RowCount));
    for (int x=0;x<StringGrid1->ColCount;x++)
    {
      for (int y=0;y<StringGrid1->RowCount;y++)
      {
        // Write out the length of each string, followed by the string itself.
 
        iLength = StringGrid1->Cells[x][y].Length();
        FileWrite(iFileHandle, (char*)&iLength, sizeof(iLength));
        FileWrite(iFileHandle, StringGrid1->Cells[x][y].c_str(), StringGrid1->Cells[x][y].Length());
      }
    }
    FileClose(iFileHandle);
  }
}
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
23.07.2009, 14:27  [ТС] 5
FreeWay,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TSearchRec File;
 
  if (FindFirst(WayToGirtcInp, faAnyFile, File) == 0)
 
  {//2 если есть файл
 
    do //3 цикл do
    { 
      if (!(File.Name=="." || File.Name==".." ) )
 
       { //4 если не каталог
 
         счетчик файлов++;
     
       } //4  если не каталог
 
    } while (FindNext(File) == 0); //3 цикл do
            FindClose(File);
  }//2 если есть файл
можно по-подробнее это объяснить?
В частности что в скобках:
C++
1
2
(WayToGirtcInp, faAnyFile, File)
(!(File.Name=="." || File.Name==".." ) )
0
Эксперт С++
7174 / 3233 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
23.07.2009, 20:54 6
C++
1
(!(File.Name=="." || File.Name==".." ) )
В каждом каталоге есть зарезервированные имена "." и "..".
Их нужно пропустить.
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
24.07.2009, 09:20  [ТС] 7
догадался уже,что это,спс. Я по-другому реализовал-просто в имя файла при создании добавляю дату и время.
0
2921 / 842 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
24.07.2009, 09:51 8
Цитата Сообщение от singleplayer Посмотреть сообщение
while(FileExists("files\\file_1"))count++;
а если поменять это дело на такое вот
while(FileExists("files\\file_"+"count"))count++;
потому как ты проверяешь постоянно на существование одного и того же файла, а надо если есть то проверять существование следующего
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
24.07.2009, 10:10  [ТС] 9
mamedovvms, а, ну да,так и есть, спс, учту, если все же это понадобится снова.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2009, 10:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

2 вопроса про скорость - указатели и строки
Здравствуйте. Скажите, а работа с большими массивами с помощью указателей происходит быстрее...

Два простых вопроса про консоль
Два на первый взгляд простых вопроса: 1). Как сделать, чтоб курсор не затирал следующий символ...

Два вопроса про RTC и асм.
Два вопроса хотел бы задать: 1) Вопрос про RTC, прочитал на википедии такие слова &quot;применение...

два вопроса по С++,вопрос про заг.файла и поток cin
1.У меня есть заголовoчный файл,созданный в проекте А,в проекте В он нужен,как его туда...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.