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

C++ Builder

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 5.00
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
#1

Сохранение файла - C++ Builder

13.10.2011, 23:26. Просмотров 6177. Ответов 21
Метки нет (Все метки)

Вобщем так... Есть форма, на ней 2 кнопки. Одна открывает файл(оупенДиалог1), производит там нужные изменения и закрывает. А вторая должна сохранить.. Но не хочет( какой там код должен быть на кнопке?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 23:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сохранение файла (C++ Builder):

Создание/сохранение файла - C++ Builder
Как создать файлы с помощью цикла, чтобы имена файлов менялись... TStringList *list = new TStringList; for ( int i = 1 ; i <= 4 ;...

Чтение и сохранение файла - C++ Builder
Почти закончила лабораторную...и закосячила с функциями для работы с файлами(Write_File,Read_File) и их вызовами.Помогите, пожалуйста,...

Пери сохранение файла. - C++ Builder
Добрый вечер! У меня возник вопрос. У меня например есть на форме Memo1 типа TMemo и OpenD типа TOpenDialog и SaveBut и LoadBut типа...

Неправильное сохранение файла - C++ Builder
Здравствуйте. На сервере лежит файл Файл.txt его структура: --------------------------------------- строка1 строка2 ...

Сохранение XML файла - C++ Builder
Вывожу с xml файла данные в ListView, далее хочу сохранить эти данные в этом же виде только в новом текстовом или xml файле с помощью...

Открытие и сохранение файла - C++ Builder
Добрый вечер. Есть код void __fastcall TForm1::N3Click(TObject *Sender) { TTabSheet* TabSheet1 = new...

21
__bool
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
13.10.2011, 23:28 #2
Какой файл открываете OpenDialog'ом? В переменную какого типа его считываете?
0
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
13.10.2011, 23:31  [ТС] #3
Файл .bin , считываю в AnsiString
0
__bool
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
13.10.2011, 23:36 #4
Я бы сделал так:
C++
1
2
3
4
TStringList* strList = new TStringList; создаем
strList->LoadFromFile("имя файла из OpenDialog"); // открываем
//strList->Text; тут ваш текст
strList->SaveToFile("имя конечного файла");// сохраняем
0
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
13.10.2011, 23:50  [ТС] #5
Не, там как получается... открывается одной функцие, сохраняется другой. и вот та которая сохраняет она похоже не понимает что ей надо сохранить)
0
__bool
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
13.10.2011, 23:52 #6
А что мешает открывать этой вашей "одной" функцией записывая файл в TStringList??))
А потом нормально сохранить его как я показал?
Если действительно там прям особый случай, код в студию!
0
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
13.10.2011, 23:55  [ТС] #7
да с собой нету...) что делает TStringList ?
0
__bool
285 / 226 / 6
Регистрация: 13.06.2010
Сообщений: 744
14.10.2011, 00:00 #8
Цитата Сообщение от Fitz Посмотреть сообщение
да с собой нету...) что делает TStringList ?
Вообще для этих целей Google..
TStringList - полезный тип класса. Он чрезвычайно полезен для многих видов обработок списков. Элементы в строковом списке могут быть вставлены, перемещены и отсортированы.

Список может быть сформирован строка за строкой, или загружен из большой строки разделенной запятой или даже из текстового файла. TStringList происходит от TStrings. Вы можете использовать и TStrings, но это не рекомендуется, так как он не полный - некоторые из его методов абстрактны. TStringList осуществляет эти абстрактные методы (Clear, Delete и Insert). Мы рассмотрим основные свойства и методы TStringList, включая полученные из TStrings.

Свойство Count
Возвращает число строк в списке.

Свойство Capacity

Устанавливает или получает текущую вместимость строкового списка. Вы можете управлять этой вместимостью по необходимости.

Свойство Strings
Получает или корректирует строку по данному индексу в списке (первый элемент списка имеет индекс 0).

Обратите внимание, что свойство Strings является свойством, заданным по умолчанию. Это означает, что вы можете использовать его без его указания:

myName = names->Strings[4];

является эквивалентным:

myName = names[4];

Свойство Text
Устанавливает или получает список в виде большой строки. Эта строка будет содержать каждую строку закончивающуюся комбинацией символов перевода каретки и перевода строки (CRLF). Полезно для загрузки из визуального объекта, который может содержать многочисленные строки текста.

Свойство CommaText
Получает или устанавливает список в виде большой строки. Эта строка будет иметь список строк разделенных запятыми. Это полезно для загрузки из экспорта текстовой электронной таблицы. Если при получении строка содержит вложенные пространства, то она будет заключена в двойные кавычки.

Cвойство DelimitedText
Получает или устанавливает список через большую строку. Эта строка содержит список строк разделенных значением Delimiter (по умолчанию - запятая). Строки, содержащие вложенные пробелы должны быть заключены в QuoteChar (по умолчанию - ").

Свойство QuoteChar
Используется для замыкания строк, которые имеют вложенные пробелы при использовании DelimitedText.

Свойство Delimiter
Используется для разделения строк при использовании DelimitedText
. Свойство Names
Строки в строковом списке могут быть обработаны, как пары название/значение, как во втором примере кода. Каждая строка не должна иметь никаких внедренных пробелов, и содержать знак =. Это очень полезное понятие. См. свойства Value и ValueFromIndex, и метод IndexOfName.

Свойство Values
Возвращает значение для данного названия, когда используются строки пары название/значение (см. выше).

Свойство ValueFromIndex
Возвращает значение по индексу строки (начинается с 0), когда используются пары название/значение.

Свойство CaseSensitive
Когда true, Delphi обрабатывает строки чувствительно к регистру при выполнении некоторых операций, таких как Sort.

Свойство Duplicates
Это свойство может иметь одно из следующих перечислимых TDuplicates значений:

dupIgnore Игнорирует (отбрасывает) дубликаты
dupAccept Позволяют дубликаты
dupError Выбрасывает исключение, если имеются дубликаты


Свойство Sorted
Когда true, все строки будут добавляться в свою позицию отсортированной последовательности. Когда false, они будут добавляться в конец. См. также метод Sort.

Свойство Objects
Возвращает объект, связанный со строкой по данному индексу, если он существует.

Метод Add
Добавляет данную строку в список, возвращая ее позицию в списке (начинается с 0).

Метод Append
Так же как и Add, но без возвращения индексного значения.

Метод Insert
Вставляет строку в заданную индексом позицию. Позиция 0 вызовет вставку в начало.

Метод Delete
Удаляет строку по данному индексу.

Метод Clear
Удаляет все строки из списка.

Метод Move
Перемещает строку из одной позиции в другую, сдвигая другие строки соответственно.

Метод Exchange
Перестанавливает две строки в списке, идентифицированные по их индексным позициям.

Метод IndexOf
Получает индекс позиции строки в списке соответствующей данной строке. Если строка не найдена, то возвращается -1.

Метод IndexOfName
Получает индекс позиция первой пары название/значение строки, где название соответствует данной строке. Если не найдена - возвращается -1.

Метод Find
То же самое, что и IndexOf, но с использованием списков сортированных строк.

Метод Sort
Если Sorted является ложным, то это вызовет сортировку списка.

Метод AddStrings
Добавляет строки из другого списка.

Метод Assign
Заменяет текущий список содержанием другого списка.

Метод LoadFromFile
Очень полезный метод, загружает строковый список из текстового файла. Каждая текстовая строка (законченая CRLF - см. DelimitedText) становится строкой списка.

Метод SaveToFile
Сохраняет строковый список в текстовый файл.
2
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
14.10.2011, 08:30  [ТС] #9
вот, что еще надо? Сорри, могу только так выложить, ибо с телефона
0
Вложения
Тип файла: txt 11111111.TXT (815 байт, 67 просмотров)
mimicria
return (true);
1960 / 1097 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
14.10.2011, 08:57 #10
Цитата Сообщение от Fitz Посмотреть сообщение
Ff1 = SaveDialog1->FileName;
SaveDialog1->SaveToFile(Ff1);
Ну задали вы имя файла для сохранения, а что сохранили то?
Где результат работы prog, что сохранять собираетесь?

Добавлено через 3 минуты
Вам уже предлагали сделать так:
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
void __fastcall TForm1::BtnFileOpenClick(TObject *Sender)
{
    if (OpenDialog1->Execute())
    {
     TStringList *file = new TStringList;
     file->LoadFromFile(OpenDialog1->FileName);
     // тут делаем дальше с файлом что надо, он в StringList
    }
 
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFileOutClick(TObject *Sender)
{
     Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFileSaveClick(TObject *Sender)
{
    if (SaveDialog1->Execute())
    {
     file->SaveToFile(SaveDialog1->FileName); // сохранили в новый файл  
     delete file;
    } 
}
1
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
14.10.2011, 09:05  [ТС] #11
file->SaveToFile(SaveDialog1->FileName);
improper us of typedef "file"
0
LK
Заблокирован
14.10.2011, 09:14 #12
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
#pragma resource "*.dfm"
TForm1 *Form1;
TStringList *myfile;
myfile = new TStringList;
 
//...
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFileOpenClick(TObject *Sender)
{
  if (OpenDialog1->Execute()) {
    myfile->LoadFromFile(OpenDialog1->FileName);
   // тут делаем дальше с файлом что надо, он в StringList
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFileSaveClick(TObject *Sender)
{
  if (SaveDialog1->Execute()) {
    myfile->SaveToFile(SaveDialog1->FileName); // сохранили в новый файл  
  } 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnFileOutClick(TObject *Sender)
{
  delete myfile;
  myfile = NULL;
  Close();
}
//---------------------------------------------------------------------------
1
mimicria
return (true);
1960 / 1097 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
14.10.2011, 09:19 #13
Цитата Сообщение от Fitz Посмотреть сообщение
file->SaveToFile(SaveDialog1->FileName);
improper us of typedef "file"
Дада, file надо объявлять глобальной переменной. LK поправил
2
LK
Заблокирован
14.10.2011, 09:31 #14
и имена давать свои, а не соотносящиеся с определениями ИДЕ, имхо.
1
mimicria
return (true);
1960 / 1097 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
14.10.2011, 09:45 #15
Цитата Сообщение от LK Посмотреть сообщение
и имена давать свои, а не соотносящиеся с определениями ИДЕ, имхо.
file не ключевое слово.
0
14.10.2011, 09:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2011, 09:45
Привет! Вот еще темы с ответами:

Создание/сохранение файла - C++ Builder
Пишет, что не может создать файл void __fastcall TForm1::Button7Click(TObject *Sender) { String FileName =...

Memo, сохранение файла - C++ Builder
У меня несколько кнопок, которые открывают определенный текстовый файл. Например кнопка A открывает a.txt , B -> b и т.д. Как реализовать...

Сохранение и загрузка из файла - C++ Builder
Столкнулся с проблемой загрузки из файла *.ini. для сохранения параметров программы использую ...

Сохранение файла на диске - C++ Builder
Можно ли как либо сохранить в файл текстовой- данные прямо из массива? String FIO; // массив FIO="Маша петрова"; FIO="Иванов...


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

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

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