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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
#1

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

01.10.2012, 13:07. Просмотров 572. Ответов 5
Метки нет (Все метки)

у меня есть программа, которая загружает изображение , пользователь его меняет, а затем сохраняет. Как сделать чтоб первая картинка сохранялась с именем "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". Как исправить???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 13:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу разобратсья с функцией SaveToFile (C++):

Не могу справится с последней функцией - C++
Уважаемые форумчане! Прошу не пинать меня если вопрос окажется элементарным или я его не задал не там где надо. Ну в общем у меня такое...

Не могу разобраться с функцией fseek - C++
Вот код #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) ...

Не могу справиться с функцией с++ istringstream - C++
В общем, изначальный код был таков: #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;sstream&gt; #include...

не могу сделать программу с указателями на массив и с функцией - C++
такая &quot;беда&quot; впервые столкнулся с указателями,в них чайник.. вот код задание--вывести массив,сделать так,чтоб к этому массиву...

Не могу вывести на экран строку, переданную по указателю функцией - C++
Вот такой несложный код. Функция copyString просто копирует строку. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

не могу разобраться функцией систем("") - C++
system(&quot;Findstr word dbaze.txt&quot;);- так он находит слово... а мне нужно что бы ос слово запросил... это возможно? или нужно...

5
Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 16:54 #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(); //очищаем имя файла
 }
 
}
Вот пример формирования имени файла
1
prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
01.10.2012, 17:05  [ТС] #3
спасибо что хоть немного помогли, но результат немного не такой. получается 1.bmp , 1.bmp2.bmp, 1.bmp2.bmp3.bmp и т.д. а надо 1.bmp , 2.bmp, 3.bmp .....
0
Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 17:06 #4
prank2007, просто скопируй целиком код. возможно я исправлял пока ты проверял. а возможно ты внес изменения


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

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

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

это очень важная строка, не пропускай ее. Без нее как раз и будет приклеивание новых имен файлов.
Эта строка нужна для очистки старого имени файла
1
prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
01.10.2012, 17:50  [ТС] #5
Спасибо, это работает. а как сделать, чтобы при первом нажатии кнопки сохранялся только 1.бмп, при втором нажатии 2.бмп, при десятом 10.бмп и т.д.??
0
Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
01.10.2012, 18:01 #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(); //очищаем имя файла
 
 
}
1
01.10.2012, 18:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 18:01
Привет! Вот еще темы с ответами:

Разобратсья с history | wc - Bash
В учебнике читаю задание: By piping the output of history to wc, count how many commands you’ve executed so far. Делаю так: ...

Как разобратсья с чекбоксами в форме? - JavaScript
Задача такова. Подготовить форму html, содержащую в себе текстовое поле и флажок. Если длина текстового поля меньше 10, то вывод...

Не могу разобраться с функцией - MathCAD
Здравствуйте! Маткад знаю не очень, поэтому прошу помочь мне решить проблему. Как сделать так, чтобы я мог задать несколько значений f...

Не могу разобраться с функцией - JavaScript
Пожалуйста, объясните что делает эта функция... Мне такая абракадабра не под силу) eval(function(p,a,c,k,e,d) { ...


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

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

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