Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2008, 12:33   #1
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию Загрузка и сохранение в файл

Я использую StringGrid для сохранения параметров, сделал так, чтобы при закрытии формы с параметрами, из StringGrid сохранялось в файл param.dat, и автоматически загружалось при загрузке формы:
Код:
procedure TParamForm.FormShow(Sender: TObject);
var
st:Pstrings;
fs:TFileStream;
begin
if FileExists('param.dat') then
begin
  fs:=TFileStream.Create('param.dat',fmOpenRead);
  fs.Read(st^, sizeof(st^));
  fs.Free;
  StringGrid1.Cells[1,1]:=FloatToStr(st.Xm1);
  StringGrid1.Cells[2,1]:=FloatToStr(st.Ym1);
  StringGrid1.Cells[3,1]:=FloatToStr(st.X42_1);
  StringGrid1.Cells[4,1]:=FloatToStr(st.Y42_1);
  StringGrid1.Cells[1,2]:=FloatToStr(st.Xm2);
  StringGrid1.Cells[2,2]:=FloatToStr(st.Ym2);
  StringGrid1.Cells[3,2]:=FloatToStr(st.X42_2);
  StringGrid1.Cells[4,2]:=FloatToStr(st.Y42_2);
  StringGrid2.Cells[1,1]:=FloatToStr(st.Xm11);
  StringGrid2.Cells[2,1]:=FloatToStr(st.Ym11);
  StringGrid2.Cells[3,1]:=FloatToStr(st.X63_1);
  StringGrid2.Cells[4,1]:=FloatToStr(st.Y63_1);
  StringGrid2.Cells[1,2]:=FloatToStr(st.Xm21);
  StringGrid2.Cells[2,2]:=FloatToStr(st.Ym21);
  StringGrid2.Cells[3,2]:=FloatToStr(st.X63_2);
  StringGrid2.Cells[4,2]:=FloatToStr(st.Y63_2);
end;
Dispose(st);
end;
И сохранялось при выходе:
Код:
var
st:Pstrings;
f:Tfilestream;
begin
try
st:=New(Pstrings);
st.Xm1:=StrToFloat(StringGrid1.Cells[1,1]);
st.Ym1:=StrToFloat(StringGrid1.Cells[2,1]);
st.X42_1:=StrToFloat(StringGrid1.Cells[3,1]);
st.Y42_1:=StrToFloat(StringGrid1.Cells[4,1]);
st.Xm2:=StrToFloat(StringGrid1.Cells[1,2]);
st.Ym2:=StrToFloat(StringGrid1.Cells[2,2]);
st.X42_2:=StrToFloat(StringGrid1.Cells[3,2]);
st.Y42_2:=StrToFloat(StringGrid1.Cells[4,2]);
st.Xm11:=StrToFloat(StringGrid2.Cells[1,1]);
st.Ym11:=StrToFloat(StringGrid2.Cells[2,1]);
st.X63_1:=StrToFloat(StringGrid2.Cells[3,1]);
st.Y63_1:=StrToFloat(StringGrid2.Cells[4,1]);
st.Xm21:=StrToFloat(StringGrid2.Cells[1,2]);
st.Ym21:=StrToFloat(StringGrid2.Cells[2,2]);
st.X63_2:=StrToFloat(StringGrid2.Cells[3,2]);
st.Y63_2:=StrToFloat(StringGrid2.Cells[4,2]);
 f:=TFileStream.Create('param.dat',fmCreate);
f.Write(st^,sizeof(st^));
f.Free;
Dispose(st);
В типах объявлено следующее:
Код:
type
PStrings = ^Strings;
Strings = record
Xm1,Ym1,X42_1,Y42_1,Xm2,Ym2,X42_2,Y42_2,Xm11,Ym11,X63_1,Y63_1,Xm21,Ym21,X63_2,Y63_2:real;
end;
Теперь никак не могу сделать, чтобы файл с параматрами можно было сохранять под определенным именем через SaveDialog и загружать в программу через OpenDialog.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 16.09.2008 в 13:01.
rainbow вне форума Ответить с цитированием
Старый 16.09.2008, 13:27   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

if OpenDialog.Execute then
begin
fs:=TFileStream.Create('OpenDialog. FileName',fmOpenRead);
...
... или я не правильно понял?
PS. Для этого существуют ини-файлы.
_SERGEYX_ вне форума Ответить с цитированием
Старый 16.09.2008, 13:38   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
fs:=TFileStream.Create('OpenDialog. FileName',fmOpenRead);
OpenDialog.FileName без кавычек
eoln вне форума Ответить с цитированием
Старый 16.09.2008, 15:46   #4
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Параметры я имел ввиду пересчета, а не программы.
C OpenDialog разобрался, теперь не знаю как создать и сохранить под определенным именем.
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 16.09.2008, 17:40   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Если я правильно тебя понял, ты хочешь сохранять файл, например, в папку где хранится твой EXE:
Код:
fs:=TFileStream.Create (ExtractFilePath (Application.ExeName) + 'param.dat', fmOpenRead);
Sibedir вне форума Ответить с цитированием
Старый 17.09.2008, 06:15   #6
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Если я правильно тебя понял, ты хочешь сохранять файл, например, в папку где хранится твой EXE
Совсем необязательно в папку с программой.
Я хочу сохранить под определенным именем файла, и имя файла необязательно должно быть param.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 17.09.2008 в 06:39.
rainbow вне форума Ответить с цитированием
Старый 17.09.2008, 09:04   #7
bashkos
Пользователь
 
Аватар для bashkos
 
Регистрация: 03.08.2008
Сообщений: 30
По умолчанию

f:=TFileStream.Create(SaveDialog1.F ileName,fmCreate); - можно было по логике догадаться
bashkos вне форума Ответить с цитированием
Старый 17.09.2008, 10:28   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от rainbow
Совсем необязательно в папку с программой.
Я хочу сохранить под определенным именем файла, и имя файла необязательно должно быть param.
Извиняюсь, не заметил
Цитата:
Сообщение от rainbow
через SaveDialog
Код:
if SaveDialog1.Execute then begin
  f := TFileStream.Create (SaveDialog1.FileName, fmCreate);
  ...
end;
Sibedir вне форума Ответить с цитированием
Старый 17.09.2008, 13:54   #9
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

bashkos Я уже догадался.
Только надо f:=TFileStream.Create(((SaveDialog1 .FileName)+'.dat'),fmCreate);
писать, чтобы еще с расширением dat сохранялось, только теперь проблема, надо условие написать, если файл существует заменить его или нет, без него прорамма просто создает файл имя файла.dat.dat.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 17.09.2008 в 14:00.
rainbow вне форума Ответить с цитированием
Старый 17.09.2008, 14:26   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
if SaveDialog1.Execute then
if fileexists(SaveDialog1.FileName+'.dat') then
if MessageDlg('Заменить?', mtConfirmation,[mbYes,mbNo], 0) = mrYes then 
begin
f:=TFileStream.Create(SaveDialog1.FileName+'.dat', fmCreate);
...
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка/сохранение рисунков Marsik Помощь студентам 20 20.11.2008 18:09
HRGN сохранение-загрузка? Comer_Jus Общие вопросы Delphi 5 21.05.2008 20:12
Сохранение и загрузка информации Slash Общие вопросы Delphi 9 04.02.2007 22:01
Сохранение и загрузка узлов TreeView из базы данных Ko$tello Компоненты Delphi 1 14.11.2006 17:15