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

Не могу разобратсья с функцией SaveToFile - C++

Восстановить пароль Регистрация
 
prank2007
 Аватар для prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
01.10.2012, 13:07     Не могу разобратсья с функцией SaveToFile #1
у меня есть программа, которая загружает изображение , пользователь его меняет, а затем сохраняет. Как сделать чтоб первая картинка сохранялась с именем "1.bmp", вторая "2.bmp", третья "3.bmp" и т.д.
я написал так:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
for (int a=1; a <= 100; a++) {
 
Image3->Picture->SaveToFile("a.bmp");
}
}
результат сохраняется с именем "а",а не "1". Как исправить???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 13:07     Не могу разобратсья с функцией SaveToFile
Посмотрите здесь:

Трабла с функцией ( C++
Помогите с функцией. C++
Не могу справится с последней функцией C++
Не могу разобраться с функцией fseek C++
не могу сделать программу с указателями на массив и с функцией C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pure
 Аватар для Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 16:54     Не могу разобратсья с функцией SaveToFile #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//для простоты  используем класс строки из стандартной библиотэки
#include <string> 
#include  <stdio.h>
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
std::string filename;
filename.reserve(8);//имя файла
 
char buf [4] = {0};
char extension [] = ".bmp"; //расширение
 
for (int a=1; a <= 100; a++) 
 {
 snprintf(buf, 4, "%d", a); //переводим цифру в символы
 filename.append(buf); //формируем имя файла
 filename.append(extension); //приклеиваем расширение
 Image3->Picture->SaveToFile(filename.c_str()); //сохраняем
 filename.clear(); //очищаем имя файла
 }
 
}
Вот пример формирования имени файла
prank2007
 Аватар для prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
01.10.2012, 17:05  [ТС]     Не могу разобратсья с функцией SaveToFile #3
спасибо что хоть немного помогли, но результат немного не такой. получается 1.bmp , 1.bmp2.bmp, 1.bmp2.bmp3.bmp и т.д. а надо 1.bmp , 2.bmp, 3.bmp .....
Pure
 Аватар для Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 17:06     Не могу разобратсья с функцией SaveToFile #4
prank2007, просто скопируй целиком код. возможно я исправлял пока ты проверял. а возможно ты внес изменения


по ссылке выход формирования имени ВОТ

выше он интегрирован в твою форму. сохранять будет 100 файлов с именами от 1, до 100.bmp

filename.clear(); //очищаем имя файла

это очень важная строка, не пропускай ее. Без нее как раз и будет приклеивание новых имен файлов.
Эта строка нужна для очистки старого имени файла
prank2007
 Аватар для prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
01.10.2012, 17:50  [ТС]     Не могу разобратсья с функцией SaveToFile #5
Спасибо, это работает. а как сделать, чтобы при первом нажатии кнопки сохранялся только 1.бмп, при втором нажатии 2.бмп, при десятом 10.бмп и т.д.??
Pure
 Аватар для Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 18:01     Не могу разобратсья с функцией SaveToFile #6
prank2007, ввести счетчик нажатий, который будет ++ внутри обработки нажатия.
только он должен находится вне тела функции либо быть статическим. Цикл в таком случае не нужен
например


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
//для простоты  используем класс строки из стандартной библиотэки
#include <string> 
#include  <stdio.h>
 
int a = 0; //это счетчик определен либо как поле класса либо как глобальная переменная, либо можно как static int внутри тела функции обработчика
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
std::string filename;
filename.reserve(8);//имя файла
 
 a++; // при попадании в обработчик нажатия счетчик увеличивается на 1
//цикла больше нет
 
char buf [4] = {0};
char extension [] = ".bmp"; //расширение
 
 snprintf(buf, 4, "%d", a); //переводим цифру в символы
 filename.append(buf); //формируем имя файла
 filename.append(extension); //приклеиваем расширение
 Image3->Picture->SaveToFile(filename.c_str()); //сохраняем
 filename.clear(); //очищаем имя файла
 
 
}
Yandex
Объявления
01.10.2012, 18:01     Не могу разобратсья с функцией SaveToFile
Ответ Создать тему
Опции темы

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