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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2011, 22:24   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию Не компилируется функция

Ошибки:
[Error] Unit1.pas(49): Undeclared identifier: 'TIniFiles'
[Error] Unit1.pas(49): Incompatible types: 'TComponent' and 'String'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
Функция:
Код:
function TForm1.KeyValide(inifile: string): boolean;
 begin
   Ini := TIniFiles.Create(inifile);
   Result := Ini.ReadString('Activation','1','') = GetKey;
   Ini.Free;
 end;
Код:
TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    function KeyValide(inifile:string): boolean;
Подскажите пути для решения?
kta87 вне форума Ответить с цитированием
Старый 16.10.2011, 22:32   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

1. добавь модуль IniFiles в раздел Uses.
2.
Код:
function TForm1.KeyValide(inifile: string): boolean;
 begin
   Ini := TIniFiles.Create(inifile);
   Result := Ini.ReadString('Activation','1','') = GetKey;
   Ini.Free;
 end;
1. Где обьявлена переменная ini
2. То, что выделено красным не возможно.
Человек_Борща вне форума Ответить с цитированием
Старый 16.10.2011, 22:36   #3
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

IniFiles есть в Uses

Код:
implementation

{$R *.dfm}

uses
  IniFiles, Unit2;

var
  Ini: TIniFile;
  f: string;
Почему не возможно?
kta87 вне форума Ответить с цитированием
Старый 16.10.2011, 23:01   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
function TForm1.KeyValide(inifile: string): boolean;
var
  Ini : TIniFile;
begin
  Ini := TIniFile.Create(inifile);
  try
    Result := Ini.ReadString('Activation','1','') = GetKey;
  finally
    Ini.Free;
  end;
end;
Прик вне форума Ответить с цитированием
Старый 16.10.2011, 23:22   #5
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Ну вот так с компилировалось
Код:
function TForm1.KeyValide(inifile: string): boolean;
var
  Ini : TIniFile;
 begin
  Ini := TIniFile.Create(inifile);
  try
    Result := Ini.ReadString('Activation','1','') = GetKey;
  finally
    Ini.Free;
  end;
 end;
однако может я что то напортачил, но не работает функция(((
Код:
procedure TForm1.FormCreate(Sender: TObject);
 begin
   f:= ExtractFilePath(ParamStr(0))+'file.ini';
   // заносим в переменную адресс INI файла

   if KeyValide(f) then
     begin
        Form1.Visible:= False;
        Form2.Enabled:= True;
     end;
 end;
Должно по идее форма 1 пропадать а форма 2 становиться активной!, но это не работает!!!
kta87 вне форума Ответить с цитированием
Старый 16.10.2011, 23:42   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Значит идея дохлая.
А форма1, скорее всего, главная. И создается первой.
А форма 2, скорее всего, еще не создана.
Да и форма 1 в своем OnCreate толком еще не создана, а ее пытаются заставить спрятаться.
Прик вне форума Ответить с цитированием
Старый 17.10.2011, 23:07   #7
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Значит идея дохлая.
А форма1, скорее всего, главная. И создается первой.
А форма 2, скорее всего, еще не создана.
Да и форма 1 в своем OnCreate толком еще не создана, а ее пытаются заставить спрятаться.
Если я действия манипуляции с формами делаю по клику кнопки на форме 1, то все работает нормально, но при запуске вторичном , с начало должна идти проверка введенного кода, а следовательно первой должна запускаться форма 2 и в ней должна работать функция эта , так я понимаю?
kta87 вне форума Ответить с цитированием
Старый 18.10.2011, 07:55   #8
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не компилируется в 10 Eyxeniy Visual C++ 6 12.03.2011 10:21
не компилируется Roman87 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 09.12.2010 17:30
не компилируется angedonia Общие вопросы C/C++ 4 07.06.2010 10:01
Не компилируется Alchi09 Общие вопросы C/C++ 10 03.12.2009 15:20