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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2015, 22:39   #1
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию при сохранение данных в файл данные сохранились в скрытый файл ini

как сделать при сохранение данных из stringgrid данные сохранилисъ в скрытый файл ini и загрузит данных обратно
у меня код такой

SaveStringGrid(StringGrid1,(extract filepath(paramstr(0))+'Fi5le.ini')) ;
alman12 вне форума Ответить с цитированием
Старый 22.05.2015, 07:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и чем не устраивает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2015, 09:47   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну видимо скрытость файла не устраивает.

Цитата:
у меня код такой

SaveStringGrid(StringGrid1,(extract filepath(paramstr(0))+'Fi5le.ini')) ;
А у меня такой:
Код:
MakeEverythingOk();
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.05.2015, 11:50   #4
GNDragonFly
Пользователь
 
Регистрация: 05.07.2012
Сообщений: 11
По умолчанию

Жутко безграмотный вопрос + нет знаков пунктуации, аналогично известному выражению
Цитата:
Казнить нельзя помиловать
Как я понял человеку надо:
1) сохранить данные из stringgrid в ini-файл;
2) сделать ini-файл скрытым
3) заполнить stringgrid данными из ini-файла.
Цитата:
«Мысли, как дети, легче родить, чем довести до ума.» Валентин Домиль
Вот кстати код:
Код:
procedure TForm1.LoadStrGrFromIni(FIniName: string);
var // не забываем про Uses IniFiles
  Ini: TMemIniFile;
  r, c: integer;
  i, j: integer;
  RC: string;
begin
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');
  try
    Ini := TMemIniFile.Create(FIniName);
    try
      r := Ini.ReadInteger('StrGrid', 'RowCount', 0);
      c := Ini.ReadInteger('StrGrid', 'ColCount', 0);
      StrGrid.RowCount := r;
      StrGrid.ColCount := c;

      for i := 0 to r - 1 do
      begin
        RC := 'Row' + IntToStr(i);
        for j := 0 to c - 1 do
          StrGrid.Cells[j, i] := Ini.ReadString(RC, 'Col' + IntToStr(j), '');
      end;
    except
    end;
    Ini.Free;
  except
  end
end;

function TForm1.SaveStrGrToIni(FIniName: string): boolean;
var // не забываем про Uses IniFiles
  Ini: TMemIniFile;
  i, j: integer;
  RC: string;
begin
  Result := false;
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');

  // можно удалять существующий файл, если в StringGrid меняется кол-во строк и/или столбцов
  { if FileExists(FIniName) then
    DeleteFile(FIniName); }

  try
    Ini := TMemIniFile.Create(FIniName);
    try
      Ini.Clear;
      Ini.UpdateFile;
      Ini.WriteInteger('StrGrid', 'ColCount', StrGrid.ColCount);
      Ini.WriteInteger('StrGrid', 'RowCount', StrGrid.RowCount);

      for i := 0 to StrGrid.RowCount - 1 do
      begin
        RC := 'Row' + IntToStr(i);
        for j := 0 to StrGrid.ColCount - 1 do
          Ini.WriteString(RC, 'Col' + IntToStr(j), StrGrid.Cells[j, i]);
      end;

      Ini.UpdateFile;
      Result := true;
    except
      Result := false;
    end;
    Ini.Free;
  except
    Result := false;
  end;
end;

function TForm1.SetInvisIni(FIniName: string): boolean;
begin
  Result := false;
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');
  if FileExists(FIniName) then
    if FileSetAttr(FIniName, faHidden) > 0 then
      Result := true;
  { faReadOnly : 1  - Файл только для чтения
    faHidden : 2  - Скрытый файл
    faSysFile : 4  - Системный файл
    faVolumeID : 8  - Файл идентификатора объёма
    faDirectory : 16  - Файл директории
    faArchive : 32  - Архивный файл
    faSymLink : 64  - Ярлык
    атрибуты записываются через или (or) }
end;
Где SaveStrGrToIni - сохраняет данные из грида, SetInvisIni - делает файл скрытым (лучше вызывается сразу после SaveStrGrToIni), LoadStrGrFromIni - читает данные из ини-файла в грид. функции описаны в классе TForm1 в секции private.
А StrGrid - TStringGrid, которая находится на главной форме приложения. Но если хочется - можете передавать ее как параметр в функции (через var).

Последний раз редактировалось Аватар; 22.05.2015 в 11:57.
GNDragonFly вне форума Ответить с цитированием
Старый 22.05.2015, 11:59   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ТС надеется, что скрытый файл защитит данные от наглого юзера? Наивный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.05.2015, 17:18   #6
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Если нужно защитить данные, то лучше пишите в реестр.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 22.05.2015, 18:30   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то лучше пишите в реестр.
Это шутка такая?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2015, 22:13   #8
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Цитата:
Сообщение от GNDragonFly Посмотреть сообщение
Жутко безграмотный вопрос + нет знаков пунктуации, аналогично известному выражению
Как я понял человеку надо:
1) сохранить данные из stringgrid в ini-файл;
2) сделать ini-файл скрытым
3) заполнить stringgrid данными из ini-файла.


Вот кстати код:
Код:
procedure TForm1.LoadStrGrFromIni(FIniName: string);
var // не забываем про Uses IniFiles
  Ini: TMemIniFile;
  r, c: integer;
  i, j: integer;
  RC: string;
begin
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');
  try
    Ini := TMemIniFile.Create(FIniName);
    try
      r := Ini.ReadInteger('StrGrid', 'RowCount', 0);
      c := Ini.ReadInteger('StrGrid', 'ColCount', 0);
      StrGrid.RowCount := r;
      StrGrid.ColCount := c;

      for i := 0 to r - 1 do
      begin
        RC := 'Row' + IntToStr(i);
        for j := 0 to c - 1 do
          StrGrid.Cells[j, i] := Ini.ReadString(RC, 'Col' + IntToStr(j), '');
      end;
    except
    end;
    Ini.Free;
  except
  end
end;

function TForm1.SaveStrGrToIni(FIniName: string): boolean;
var // не забываем про Uses IniFiles
  Ini: TMemIniFile;
  i, j: integer;
  RC: string;
begin
  Result := false;
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');

  // можно удалять существующий файл, если в StringGrid меняется кол-во строк и/или столбцов
  { if FileExists(FIniName) then
    DeleteFile(FIniName); }

  try
    Ini := TMemIniFile.Create(FIniName);
    try
      Ini.Clear;
      Ini.UpdateFile;
      Ini.WriteInteger('StrGrid', 'ColCount', StrGrid.ColCount);
      Ini.WriteInteger('StrGrid', 'RowCount', StrGrid.RowCount);

      for i := 0 to StrGrid.RowCount - 1 do
      begin
        RC := 'Row' + IntToStr(i);
        for j := 0 to StrGrid.ColCount - 1 do
          Ini.WriteString(RC, 'Col' + IntToStr(j), StrGrid.Cells[j, i]);
      end;

      Ini.UpdateFile;
      Result := true;
    except
      Result := false;
    end;
    Ini.Free;
  except
    Result := false;
  end;
end;

function TForm1.SetInvisIni(FIniName: string): boolean;
begin
  Result := false;
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');
  if FileExists(FIniName) then
    if FileSetAttr(FIniName, faHidden) > 0 then
      Result := true;
  { faReadOnly : 1  - Файл только для чтения
    faHidden : 2  - Скрытый файл
    faSysFile : 4  - Системный файл
    faVolumeID : 8  - Файл идентификатора объёма
    faDirectory : 16  - Файл директории
    faArchive : 32  - Архивный файл
    faSymLink : 64  - Ярлык
    атрибуты записываются через или (or) }
end;
Где SaveStrGrToIni - сохраняет данные из грида, SetInvisIni - делает файл скрытым (лучше вызывается сразу после SaveStrGrToIni), LoadStrGrFromIni - читает данные из ини-файла в грид. функции описаны в классе TForm1 в секции private.
А StrGrid - TStringGrid, которая находится на главной форме приложения. Но если хочется - можете передавать ее как параметр в функции (через var).
ошибку выдоет в процедуре
alman12 вне форума Ответить с цитированием
Старый 22.05.2015, 22:25   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В том коде как бэ три процедуры. Не изволите подсказать в какой из них, на какой команде и, страшно вслух сказать, какой текст той неблагодарной ошибки. И, осмелюсь напомнить, надои не очень с программированием коррелируются, не кажется?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.05.2015, 22:46   #10
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В том коде как бэ три процедуры. Не изволите подсказать в какой из них, на какой команде и, страшно вслух сказать, какой текст той неблагодарной ошибки. И, осмелюсь напомнить, надои не очень с программированием коррелируются, не кажется?
Код:
procedure TForm1.LoadStrGrFromIni(FIniName: string);
var // не забываем про Uses IniFiles
  Ini: TMemIniFile;
  r, c: integer;
  i, j: integer;
  RC: string;
begin
  if FIniName = '' then
    FIniName := ChangeFileExt(ParamStr(0), '.ini');
  try
    Ini := TMemIniFile.Create(FIniName);
    try
      r := Ini.ReadInteger('StrGrid', 'RowCount', 0);
      c := Ini.ReadInteger('StrGrid', 'ColCount', 0);
      StrGrid.RowCount := r;
сделал так , правилно ли этот код ?
Код:
begin
SaveStringGrid(StringGrid1,(extractfilepath(paramstr(0))+'Fi5le.ini'));
SetFileAttributes(PChar(extractfilepath(paramstr(0))+'Fi5le.ini'), FILE_ATTRIBUTE_HIDDEN);
end;

Последний раз редактировалось Stilet; 23.05.2015 в 07:35.
alman12 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при записи в ini Lang файл Alexandr17-10 Общие вопросы Delphi 5 13.08.2013 20:39
Как добавить название кнопки в ini-файл при условии demiancz Общие вопросы Delphi 2 13.01.2012 06:51
Сохранение списка в ini файл Vladya Помощь студентам 2 28.07.2010 16:30
Как считывать данные из файла для инициализации (не INI-файл) Smagulov85 Общие вопросы Delphi 6 04.12.2009 09:08
Сохранение из ListBox в *.ini файл xLoMMx C++ Builder 11 26.08.2009 14:00