Сохранение действий при после закрытия программы

oleg290494

Всем привет! Такой вопрос, как осуществить такую вещь? Допустим, на форме у меня располагаются практические задания, скажем 10 практических заданий. Пользователь выполняет эти задания... Остановился на 5 задании, и ему срочно нужно куда-то идти, и при этом выключить компьютер. Естественно, когда пользователь захочет продолжить выполнять задания, он снова начнём выполнять с первого задания! Подхожу к самому главному, можно ли как-то сделать, чтобы пользователь продолжил работать с того задания, на котором он остановился? Т.е. как-бы осуществить сохранение действий программы.
10 ответов

oleg290494

как-бы осуществить сохранение действий программы
сохранять в ini файле номер последнего выполненного задания, а при запуске программы подгружать это значение из файла, увеличивая его на единицу, т.е. перейти к следующему заданию.работа с ini файлами еще инфо


oleg290494

А как допустим, запомнить изменения Image? После того как я выполню задание, у меня становится активным ImageВ интернете показывается только, как сохранять настройки Edit, combobox, и всякой фигни, но только не Image


oleg290494

запомнить изменения Image?
путь до последней картинки в том же ini сохранить, не вариант?


oleg290494

Программа орёт, не соответствие типов: boolean and tpictureНе пойму ничегоКакой тип нужно указать когда мы записываем и считываем Image?


oleg290494

Какой тип нужно указать когда мы записываем и считываем Image?
Если речь об ини-файле, то имадж в него не запишешь.


oleg290494

Окей. Есть какие-то варианты, чтобы как-то запомнить Image?


oleg290494

В интернете показывается только
код, взятый на просторах интернета
var
  ini: TIniFile;
  img: string;
begin
  img:='res\mnogo.jpg';
Image1.Picture.LoadFromFile(img);
Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+'\beehive.ini');
ini.WriteString('picture','img',ExtractFilePath(ParamStr(0))+img); //сохраняем путь
ini.free;
end;
Если у Вас изображения отдельно не хранятся, то можно поэкспериментировать с TMemoryStream.
Если речь об ини-файле, то имадж в него не запишешь
можно попробовать через конверсию рисунка в текст сохранить.oleg290494, если Вам это важно, разберетесь (информации не мало в сети)
procedure ReadWriteImage(Graphic: TGraphic; Read: Boolean);
const sSect = 'sSection';
      sName = 'sName';
var Mem: TMemoryStream;
begin
     // юзаем TMemIniFile чтобы небыло проблем с размером ini файла
  with TMemIniFile.Create('C:\123.ini') do try
    Mem := TMemoryStream.Create;
    if Read then ReadBinaryStream(sSect, sName, Mem) else Graphic.SaveToStream(Mem);
    Mem.Position := 0;
    if Read then Graphic.LoadFromStream(Mem) else WriteBinaryStream(sSect, sName, Mem);
  finally
    Mem.Free;
    if not Read then UpdateFile;
    Free;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ReadWriteImage(Image1.Picture.Graphic, False);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image2.Picture.Graphic := TJPEGImage.Create;
  ReadWriteImage(Image2.Picture.Graphic, True);
end;


oleg290494

можно попробовать через конверсию рисунка в текст сохранить.
Тогда можно использовать механизм dfm


oleg290494

TMemoryStream это что?


oleg290494

TMemoryStream это что?
Класс, используемый для работы с потоками.