Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не запускается приложение [D6, Win2k]


Брат ©   (2004-10-07 12:24:00) 

Может быть у кого-то было такое... Нажимаю выполнить проект и... ничего не происходит, хотя до этого все было ок. Ничего не менял в коде. Вот коды проекта и форм(вылаживаю на всякий случай все). Помогите, не пойму в чем дело.

Проект:
program F412_User;

uses
 Forms,
 untMain in 'untMain.pas' {frmMain},
 untOptions in 'untOptions.pas' {frmOptions},
 untQueryPassword in 'untQueryPassword.pas' {frmQueryPassword};

{$R *.res}

begin
 Application.Initialize;
 Application.Title := 'User_F412';
 Application.CreateForm(TfrmMain, frmMain);
 Application.CreateForm(TfrmOptions, frmOptions);
 Application.CreateForm(TfrmQueryPassword, frmQueryPassword);
 Application.Run;
end.

Главная форма:
unit untMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, DBGridEh, ExtCtrls, RXCtrls, StdCtrls, Buttons, DB,
 IBCustomDataSet, IBTable, IBDatabase;

type
 TfrmMain = class(TForm)
   Panel1: TPanel;
   DBGridTables: TDBGridEh;
   btnOpenTable: TBitBtn;
   btnCreateTable: TBitBtn;
   btnEditTable: TBitBtn;
   btnDeleteTable: TBitBtn;
   btnDovidniki: TBitBtn;
   RxLabel1: TRxLabel;
   RxLabel2: TRxLabel;
   RxLabel3: TRxLabel;
   btnForms412: TBitBtn;
   Bevel1: TBevel;
   Bevel2: TBevel;
   Bevel3: TBevel;
   btnExit: TBitBtn;
   Bevel4: TBevel;
   btnOptions: TBitBtn;
   IBDatabase: TIBDatabase;
   IBTableTables: TIBTable;
   IBTransaction: TIBTransaction;
   DataSource1: TDataSource;
   procedure btnExitClick(Sender: TObject);
   procedure FormShow(Sender: TObject);
   procedure btnOptionsClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 frmMain: TfrmMain;

implementation

uses untQueryPassword, untOptions;

{$R *.dfm}

procedure TfrmMain.btnExitClick(Sender: TObject);
begin
 Close;
end;

procedure TfrmMain.FormShow(Sender: TObject);
begin
 frmQueryPassword.ShowModal;
end;

procedure TfrmMain.btnOptionsClick(Sender: TObject);
begin
 frmOptions.ShowModal;
end;

end.

frmQueryPassword:
unit untQueryPassword;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, RXCtrls, Buttons, DB, IBCustomDataSet, IBTable, IniFiles;

type
 TfrmQueryPassword = class(TForm)
   GroupBox1: TGroupBox;
   RxLabel1: TRxLabel;
   RxLabel2: TRxLabel;
   cbUserName: TComboBox;
   edtUserPassword: TEdit;
   CheckBox1: TCheckBox;
   btnOK: TBitBtn;
   btnCancel: TBitBtn;
   IBTableUsers: TIBTable;
   procedure btnCancelClick(Sender: TObject);
   procedure btnOKClick(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure cbUserNameChange(Sender: TObject);
 private
   { Private declarations }
   procedure WriteToIniDefaultUser;
 public
   { Public declarations }
 end;

var
 frmQueryPassword: TfrmQueryPassword;
 LinkError : Boolean;
 DefaultUser : String[30];
 NomDefaultUser : Integer;

implementation

uses untMain, untOptions;

{$R *.dfm}

procedure TfrmQueryPassword.btnCancelClick(Sender: TObject);
begin
 //
 frmMain.Close;
end;

procedure TfrmQueryPassword.WriteToIniDefaultUser;
var ConfigDB : TIniFile;
begin
 //
 if CheckBox1.Checked then
   DefaultUser:=cbUserName.Items[cbUsername.ItemIndex]
 else
   DefaultUser:='';
 //
 ConfigDB:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Config_u.ini');
 ConfigDB.WriteString('GENERAL','DefaultUser',DefaultUser);
 ConfigDB.Free;
end;

procedure TfrmQueryPassword.btnOKClick(Sender: TObject);
begin
 //
 if edtUserPassword.Text=Trim(IBTableUsers.FieldByName('USER_PASSWORD').AsString) then
   begin
     
     //
     Close;
   end
 else
   begin
     MessageDlg('Неверный пароль!',mtError,[mbOK],0);
     edtUserPassword.Text:='';
     edtUserPassword.SetFocus;
   end;
end;

procedure TfrmQueryPassword.FormActivate(Sender: TObject);
begin
 //
 edtUserPassword.SetFocus;
end;

procedure TfrmQueryPassword.FormCreate(Sender: TObject);
var i : Integer;
   ConfigDB : TIniFile;
begin
 //
 ConfigDB:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Config_u.ini');
 DefaultUser:=ConfigDB.ReadString('GENERAL','DefaultUser','');
 ConfigDB.Free;
 //
 if DefaultUser<>'' then CheckBox1.Checked:=True;
 //
 frmMain.IBDatabase.Connected:=False;
 frmMain.IBDatabase.DatabaseName:=frmOptions.edtDBPath.Text;
 frmMain.IBDatabase.Params.Add(frmOptions.edtDBName.Text);
 frmMain.IBDatabase.Params.Add(frmOptions.edtDBPassword.Text);
 try
   //
   frmMain.IBDatabase.Connected:=True;
   LinkError:=False;
 except
   if MessageDlg('Ошибка подключения к базе.'+#13#10+
     'Открыть окно настроек?',
     mtConfirmation,[mbYes,mbNo],0)=mrYes then
     begin
       //
       LinkError:=True;
       frmOptions.ShowModal;
     end
   else
     begin
       //
       frmMain.Close;
     end;
 end;
 //
 IBTableUsers.Active:=True;
 //
 IBTableUsers.FetchAll;
 IBTableUsers.First;
 for i:=1 to IBTableUsers.RecordCount do
   begin
     cbUserName.Items.Add(Trim(IBTableUsers.FieldByName('USER_NAME').AsString));
     if Trim(IBTableUsers.FieldByName('USER_NAME').AsString)=DefaultUser then
       cbUserName.ItemIndex:=IBTableUsers.RecNo-1;
     IBTableUsers.Next;
   end;

 //
 IBTableUsers.FetchAll;
 IBTableUsers.First;
 NomDefaultUser:=0;
 for i:=1 to IBTableUsers.RecordCount do
   begin
     if IBTableUsers.FieldByName('USER_NAME').AsString=DefaultUser then
       begin
         cbUserName.ItemIndex:=IBTableUsers.RecNo-1;
         NomDefaultUser:=IBTableUsers.RecNo;
       end;
     IBTableUsers.Next;
   end;
 //
 IBTableUsers.First;
 while IBTableUsers.RecNo<>NomDefaultUser do IBTableUsers.Next;
end;

procedure TfrmQueryPassword.FormClose(Sender: TObject;
 var Action: TCloseAction);
begin
 WriteToIniDefaultUser;
end;

end.


KSergey   (2004-10-07 13:21:00) [1]

> [4] Брат   (07.10.04 12:38)

Зацикливание и не работа - разные вещи, вообще-то.. Может это тот случай?


Брат   (2004-10-07 12:58:00) [2]

ясно
спасибо :)


Gero   (2004-10-07 12:46:00) [3]

Это не одно и то же.
Вот
while not (IBTableUsers.RecNo=NomDefaultUser )do IBTableUsers.Next
и
while IBTableUsers.RecNo<>NomDefaultUser do IBTableUsers.Next
это одно и тоже.


Брат   (2004-10-07 12:44:00) [4]


> Gero ©   (07.10.04 12:40) [5]

смотри сюда:
Брат   (07.10.04 12:38) [4]

> Брат   (07.10.04 12:36) [3]

Здесь ошибка читать так:
я перед этим заменил строку

while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;
на строку

while IBTableUsers.RecNo<>NomDefaultUser do IBTableUsers.Next;
Казалось бы одно и то же но не работает... Не пойму все равно...
Поставил назад - все запускается:

;)


Gero   (2004-10-07 12:40:00) [5]


> Я понял в чем дело:
> я перед этим заменил строку
>
> while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;
>
> на строку
>
> while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;
>
> Казалось бы одно и то же но не работает... Не пойму все
> равно...

- Видишь суслика?
- Нет.
- И я не вижу. А он есть.
(c) Дмб


Брат   (2004-10-07 12:38:00) [6]


> Брат   (07.10.04 12:36) [3]

Здесь ошибка читать так:
я перед этим заменил строку

while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;
на строку

while IBTableUsers.RecNo<>NomDefaultUser do IBTableUsers.Next;
Казалось бы одно и то же но не работает... Не пойму все равно...
Поставил назад - все запускается:


Брат   (2004-10-07 12:36:00) [7]

Я понял в чем дело:
я перед этим заменил строку

while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;

на строку

while not IBTableUsers.RecNo=NomDefaultUser do IBTableUsers.Next;

Казалось бы одно и то же но не работает... Не пойму все равно...
Поставил назад - все запускается:


Amoeba   (2004-10-07 12:33:00) [8]

Прочти вот это и сразу увидишь в ОШИБКУ В ФАЙЛЕ ПРОЕКТА.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=765
Так делать нельзя!
Application.Title := 'User_F412';


Ega23   (2004-10-07 12:26:00) [9]

А что F7 показывает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо