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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2023, 11:56   #1
A_R_M1902
 
Регистрация: 29.04.2023
Сообщений: 4
По умолчанию Как правильно указать путь до файла .ini

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

Код:
Quests:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Quests1.ini');
A_R_M1902 вне форума Ответить с цитированием
Старый 29.04.2023, 13:04   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А где остальное. Судя по этой строчке мало что можно понять. Ошибка точно не в ней.
macomics вне форума Ответить с цитированием
Старый 29.04.2023, 14:01   #3
A_R_M1902
 
Регистрация: 29.04.2023
Сообщений: 4
По умолчанию Вот весь код, но именно та строчка отвечает за открытие файла

И когда запускаю приложение, выдает «ничего нет», а сам вопрос не выводит
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IniFiles;

type
  TFormTestDelphi = class(TForm)
    MemoQuestTest: TMemo;
    ButtonStartTest: TButton;
    RadioGroupNumberTicket: TRadioGroup;
    RadioButtonfirstTicket: TRadioButton;
    RadioButtonLastTicket: TRadioButton;
    RadioButtonallTicket: TRadioButton;
    RadioButtonTicketQuest1: TRadioButton;
    RadioButtonTicketQuest2: TRadioButton;
    ButtonNext: TButton;
    procedure ButtonStartTestClick(Sender: TObject);
    procedure ButtonNextClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormTestDelphi: TFormTestDelphi;
  Quests:TIniFile;
  IntnextQuest:integer;
  OtvetStr,OtvetUserStr:string;

implementation

{$R *.dfm}

procedure TFormTestDelphi.ButtonNextClick(Sender: TObject);
begin
case RadioButtonTicketQuest1.Checked of
true:begin OtvetUserStr:='A'; end;
false:begin OtvetUserStr:='B' end;
end;
     if OtvetStr = OtvetUserStr then
      begin
        ShowMessage ('Правильный ответ!')
      end;
Inc(IntnextQuest);
     MemoQuestTest.Lines.Clear;
     Quests:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Quests1.ini');
     MemoQuestTest.Lines.Add(Quests.ReadString('Quest'+IntToStr(IntnextQuest),'Quest','ничего нет'));
     OtvetStr:=(Quests.ReadString('Quest'+IntToStr(IntnextQuest),'Otvet','ничего нет'));
end;

procedure TFormTestDelphi.ButtonStartTestClick(Sender: TObject);
begin
IntnextQuest:=1;
if RadioButtonFirstTIcket.Checked = true then
   begin
     MemoQuestTest.Lines.Clear;
     Quests:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Quests1.ini');
     MemoQuestTest.Lines.Add(Quests.ReadString('Quest'+IntToStr(IntnextQuest),'Quest','ничего нет'));
     OtvetStr:=(Quests.ReadString('Quest'+IntToStr(IntnextQuest),'Otvet','ничего нет'));
   end;
end;

end.

Последний раз редактировалось A_R_M1902; 29.04.2023 в 14:11.
A_R_M1902 вне форума Ответить с цитированием
Старый 29.04.2023, 14:58   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Отлично. Код программы есть, а текст INI файла...

1) Вы создаёте в глобальной переменной экземпляр класса, но не освобождаете его! Это создаст утечки памяти.
Решение: (рекомендуется) Либо создавайте её один раз при загрузке программы (обработчик формы OnCreate) и освобождайте по завершении (обработчик формы OnDestroy). Либо перенесите переменную Quests в область локальных переменных у каждой функции и добавьте код освобождения в конце каждой функции.

2) После создания объекта стоит добавить код проверки ошибок и вывода соответствующего сообщения. Это поможет при отладке.
Код:
if Quests <> nil then ...
3) Замечание:
Цитата:
Сообщение от A_R_M1902 Посмотреть сообщение
Код:
case RadioButtonTicketQuest1.Checked of
true:begin OtvetUserStr:='A'; end;
false:begin OtvetUserStr:='B' end;
end;
Для проверки на Boolean значение лучше использовать просто if ... then ... else ...
Код:
if RadioButtonTicketQuest1.Checked then OtvetUserStr:='A' else OtvetUserStr:='B';
macomics вне форума Ответить с цитированием
Старый 29.04.2023, 15:43   #5
A_R_M1902
 
Регистрация: 29.04.2023
Сообщений: 4
По умолчанию Честно, спасибо что помогаешь!!!

Есть с тобой возможность связаться через телеграмм?

Я просто не особо силен в этом Delphi и ни чего толком не понял, а сам пишу диплом, и 2 мая уже сдавать. Ну мне прям очень надо, сама вообще дипломка "Разработка программы проверки обучающихся по информатике на языке Delphi". Если свяжешься со мной, буду очень, при очень благодарен. Вот мой тг - @akhtyrsk1y и вк - vk.com/ilya.akhtyrskiy
A_R_M1902 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CMake как указать абсолютный путь создания исполняемого файла? maks1331 Общие вопросы по программированию, компьютерный форум 0 12.12.2022 14:49
Как указать путь для отправки файла на мыло Chicker Общие вопросы Delphi 10 26.09.2012 08:14
Как указать относительный путь, который с файла любого уровня вложенности будет всегда показывать относительно корня сайта romeno HTML и CSS 1 29.11.2011 16:32
Как правильно указывать путь до файла celovec Общие вопросы Delphi 6 11.11.2011 07:31
Указать путь в webbrouser oduvan4ik Общие вопросы Delphi 5 03.03.2009 08:03