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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 17:25   #1
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию save file delphi

Давно начал писать программу и назрел вопрос. Не раз видел сэйв файлы игр и т.д. в них информация хранится не в прямом виде и изменить просто не получится. Вот вопрос в том, как создать такой сэйв файл, вариант с шифровкой метода замены конечно тоже подойдёт но это не интерисует так как хватит и своих знаний )
keef вне форума Ответить с цитированием
Старый 25.02.2010, 17:39   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Просто пишите через BlockWrite и никому не показывайте структуры.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.02.2010, 18:38   #3
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Можно небольшой пример с StringList, дабы задать верный путь ?)
keef вне форума Ответить с цитированием
Старый 25.02.2010, 18:40   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А каким боком тут фигурирует StringList? О_о
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 25.02.2010, 19:04   #5
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Ну вообще я просто даже представления не имею о BlockWrite поэтому у меня фигурирует ) Да и программа уже под строки подстроена
keef вне форума Ответить с цитированием
Старый 25.02.2010, 20:00   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ну, вот кусок из моей проги, правда он на Pascal
Код:
program Rec;

uses
	Crt;

const
	DATABASE    = 'database.db';
	ERR_READ    = 0;
	ERR_WRITE   = 1;
	ERR_ASSIGN  = 2;
	ERR_OPEN    = 3;

type
  mydb = record
    Date: String[10];
    Price: Real;
    Count: Integer;
    Cost: Real;
  end;

var
  db: mydb;

function GetError(const errno: Integer; const errtxt: Byte): Boolean;
begin
  GetError := false;
  if errno <> 0 then
  begin
    ClrScr;
    TextColor(12);
    case errtxt of
      0: WriteLn('Can''t read database from disk', #13#10, 'Error #', errno);
      1: WriteLn('Can''t write database to disk', #13#10, 'Error #', errno);
      2: WriteLn('Can''t assign database', #13#10, 'Error #', errno);
      3: WriteLn('Can''t open database', #13#10, 'Error #', errno);
    end;
    GetError := true;
  end;
end;

{ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; }

{ Запись }
procedure dbWrite;
var
  d_db: File of mydb;
begin
  {$I-}
  Assign(d_db, DATABASE);
  if GetError(IOResult, ERR_ASSIGN) then Exit;
  Reset(d_db);
  if GetError(IOResult, ERR_OPEN) then Exit;
  Seek(d_db, FileSize(d_db));
  Write(d_db, db);
  if not GetError(IOResult, ERR_WRITE) then
  begin
    WriteLn('Record was been added');
  end;
  Close(d_db);
end;

{ Ввод данных }
procedure dbEnter;
begin
  ClrScr;
  Write('Enter date[10]: ');ReadLn(db.Date);
  Write('Enter price: '); ReadLn(db.Price);
  Write('Enter count: '); ReadLn(db.Count);
  db.Cost := db.Price * db.Count;
  WriteLn('Cost is = ', Int(db.Cost):4:2);
  dbWrite;
  WriteLn('--------------------------------------------------------------------------------');
end;

begin
  dbEnter;
end.
А про BlockWrite можно в help'e почитать. Делает примерно тоже самое, только другим способом
P.S. Без примера данных, тут сложно сказать, что нужно. Покажи кусок кода (переменные и т.д.) которые нужно сохранить

Последний раз редактировалось psycho-coder; 25.02.2010 в 20:03.
psycho-coder вне форума Ответить с цитированием
Старый 25.02.2010, 20:35   #7
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

Ну вот примерно так:

Код:
var
f : TStringList;

procedure m(Sender: TObject);
begin
f:=TStringList.Create();
f.LoadFromFile('text.save');
f.Add(IntToStr(x)); //деньги
f.Add(IntToStr(y)); //число
f.SaveToFile('text.save');
end;
Ну, как видно просто новые строки добавляет и каждая строка несёт своё значение.
keef вне форума Ответить с цитированием
Старый 25.02.2010, 21:24   #8
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

keef, да таким макаром в ini-шник обычный проще сохранять
fbus вне форума Ответить с цитированием
Старый 25.02.2010, 21:43   #9
keef
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 61
По умолчанию

М, а шифроваться как ?) Ведь ini он и существует на то чтобы открыть и поменять )
keef вне форума Ответить с цитированием
Старый 26.02.2010, 08:45   #10
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

keef, насколько я понял, главное не то, чтобы такой файл нельзя было прочитать, а то, чтобы его так просто нельзя было изменить. В этих случаях при генерации файла считается его контрольная сумма (по какому-нибудь хитрому алгоритму), которая потом записывается, например, в конец этого файла. При загрузке файла прога снова рассчитывает контрольную сумму и если рассчитанное значение не совпадает с записанным в файле, сообщает об ошибке.
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём разница между unit, header file, cpp file? TwiX Общие вопросы C/C++ 6 29.04.2012 19:49
Delphi 7 Fatal Error [File not found]... mutabor Общие вопросы Delphi 5 07.12.2010 13:28
Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory s20 Общие вопросы C/C++ 2 26.09.2009 23:28
Delphi + Video file toxich Мультимедиа в Delphi 8 01.08.2009 16:42
как вставить swf file в delphi Altera Компоненты Delphi 4 18.02.2008 20:12