Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi, Android и файлы

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

luceferon666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди добрые помогите разобраться. Смысл следующий при первом запуске должен отобразиться выбор из списка после выбора пользователем одного из пунктов combobox прячется и отображается webbrowser при этом должен сохраниться файл настроек и при следующем запуске приложения combobox уже не отображается а в браузер загружается адрес который был выбран при первом запуске(должен браться из файла). Собираю все это дело под windows все работает отлично. Собираю под андроид не работает(при выборе пункта combobox'а ни чего не происходит). Пробовал так же сохранять конфигурацию формы при помощи юнита SaveStateHelper (взят от сюда https://github.com/jimmckeeth/SaveStateSamples ) тоже самое под виндой файл с описанием свойства компонентов сохраняется и при следующем запуске удачно подгружается а под андроидом нет файла. Все проверял на Android 8. Вот исходник первого варианта в котором использую юнит CCR.PrefsIniFile ( https://drive.google.com/file/d/1qWbSiaTOatSNLBvhdB1nQm94GYXp7a6I/view?usp=sharing )

Код:
procedure TMainForm.ComboEdit1Change(Sender: TObject);
begin
   if ComboEdit1.ItemIndex=0 then
   begin
      FIniFile.WriteString('cyticonf','cyti','https://сайт.ru/город1/');
      MainForm.WBMain.url:='https://сайт.ru/город1/';
   end;
   if ComboEdit1.ItemIndex=1 then
   begin
      FIniFile.WriteString('cyticonf','cyti','https://сайт.ru/город2/');
      MainForm.WBMain.url:='https://сайт.ru/город2/';
   end;
   if ComboEdit1.ItemIndex=2 then
   begin
      FIniFile.WriteString('cyticonf','cyti','https://сайт.ru/город3/');
      MainForm.WBMain.url:='https://сайт.ru/город3/';
   end;
   if ComboEdit1.ItemIndex=3 then
   begin
      FIniFile.WriteString('cyticonf','cyti','https://сайт.ru/город4/');
      MainForm.WBMain.url:='https://сайт.ru/город4/';
   end;
   FIniFile.UpdateFile;
   ComboEdit1.Visible:=false;
   WBMain.Visible:=true;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
  if Tfile.exists(finifile.FileName) then
  begin
     WBMain.URL:=FIniFile.ReadString('cyticonf','cyti', '');
     WBMain.Visible:=true;
     ComboEdit1.Visible:=false;
  end
  else
  begin
     WBMain.Visible:=false;
     ComboEdit1.Visible:=true;
     Label1.Text:=finifile.FileName;//для понимания где хранится файл(при выполнении пустой)
  end;

При использовании SaveStateHelper поставил просто чекбокс на форму чтобы проверить и прописал  

Код:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  LoadFormState;
end;
procedure TMainForm.FormSaveState(Sender: TObject);
begin
   SaveFormState;
end;

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

Всего записей: 2 | Зарегистр. 15-10-2018 | Отправлено: 13:56 09-01-2021
luceferon666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нашел решение при помощи JSON

Код:
procedure TFMain.FormCreate(Sender: TObject);
var
  AOptions: TJSONObject;
  AGroup: TJSONObject;
  AParamz,AParamk,AParamb,AParamkr: TJSONValue;
begin
   {$IFDEF ANDROID}
   ConfFileName := TPath.Combine(TPath.GetDocumentsPath, 'Options.json');
   {$ENDIF}
   {$IFDEF MSWINDOWS}
   ConfFileName := ExtractFilePath(ParamStr(0)) + 'Options.json';
   {$ENDIF}
   Label1.Text:=ConfFileName;//проверка пути файла настроек
  if FileExists(ConfFileName) then
  begin
    AOptions := TJSONObject(TJSONObject.ParseJSONValue(TFile.ReadAllText(ConfFileName)));
 
    AGroup := TJSONObject(AOptions.GetValue('city'));
    if AGroup <> nil then
    begin
      AParamz := AGroup.GetValue('zel');
      AParamk := AGroup.GetValue('kay');
      AParamb := AGroup.GetValue('bor');
      AParamkr := AGroup.GetValue('kros');
      if AParamz <> nil then
      begin
        RBZel.IsChecked := AParamz is TJSONTrue;
        if RBZel.IsChecked then
        begin
           PConf.Visible:=false;
           PMain.Visible:=true;
           WBMain.URL:='https://сайт/1/';
        end else
        begin
          RBbor.IsChecked := AParamb is TJSONTrue;
          if RBbor.IsChecked then
          begin
            PConf.Visible:=false;
            PMain.Visible:=true;
            WBMain.URL:='https://сайт/2//';
          end else
          begin
            RBkay.IsChecked := AParamk is TJSONTrue;
            if RBkay.IsChecked then
            begin
              PConf.Visible:=false;
              PMain.Visible:=true;
              WBMain.URL:='https://сайт/3/';
            end else
            begin
             RBkos.IsChecked := AParamkr is TJSONTrue;
             if RBkos.IsChecked then
             begin
                PConf.Visible:=false;
                PMain.Visible:=true;
                WBMain.URL:='https://сайт/4/';
             end;
            end;
          end;
        end;
        exit
      end
    else exit;
    end else
    begin
      PConf.Visible:=true;
      PMain.Visible:=false;
    end;
  end else
  begin
    PConf.Visible:=true;
    PMain.Visible:=false;
  end;
end;

Всего записей: 2 | Зарегистр. 15-10-2018 | Отправлено: 20:50 11-01-2021
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Delphi, Android и файлы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru