![]() |
|
#1
|
|||
|
|||
![]() Заметил такую штуку, когда я из делфи работаю с ини файлами то ингода у меня вылетает синий экран смерти. Пробовал ставить разные версии Delphi7 Delphi2007 и Delphi2009 везде одна и та же ситуация. Может конечно я и ошибаюсь что это именно с ини файлами связано, но вот когда мой проект начал использовать ини файлы сразу пошли такие косяки. Так же пробовал переустанавливать винду. Посторонних компонентов не использую, может кто подскажет че делать?
|
#2
|
|||
|
|||
![]() Железо тестировать. В первую очередь память.
Еще попробовать отключить антивирусы. Некоторые могут нервно реагировать на определенную активность программ. Но тут скорее проблема антивируса. А BSOD именно из под Дельфей? А если без дельфей прогу запустить? |
#3
|
|||
|
|||
![]() Синий экран возникает именно из под делфи, без делфи прога запускается нормально. Память протестировал виндосовской утилитой, ошибок нет.
Последний раз редактировалось qwwwq, 10.03.2009 в 23:42. |
#4
|
|||
|
|||
![]() 2qwwwq,
ну тогда давай код в студию. |
#5
|
|||
|
|||
![]() Ну вот код, скопировал проктически все с главной формы, но я параллельно веду и другой проект, там тоже самое (иногда при компилировании выдает синий экран). Может ли быть это из-за того что у меня Windows Vista x64? Одно не понятно почему иногда только выдает, т.е. я для проверки компилирую несколько раз один и тот же код и вот приблизительно 1 раз из 20 у меня синий экран. Еще думал что может быть проблема с жестким диском, проект копировал на другой раздел и даже на другой жесткий все тоже самое. Сейчас для себя решил что поставлю вмваре и на нем буду програмировать, но все таки если есть возможность кто чем может помогите!!!
Код:
unit HomBuhUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ToolWin, ActnMan, ActnCtrls, Ribbon, RibbonLunaStyleActnCtrls, ComCtrls, O_programmeUnit, StdCtrls, ActnList, PlatformDefaultStyleActnCtrls, Buttons, Grids, DBGrids, DataModule_Unit, Add_rasshodi_unit, Spisok_user_Unit, add_edit_user_unit, Spisok_valjut_unit, Add_edit_valjuta_Unit, Add_edit_schet_unit, Setting_unit, Add_edit_Dohodi_Unit, Mask, dblookup, DBCtrls, IniFiles, DB, ADODB; type var HomBuhForm: THomBuhForm; outfile: TextFile; //FS: TFileStream; InfoFile,InfoFile1: TSearchRec; AttrFile, AttrFile1: Integer; ErrorReturn, ErrorReturn1, Result: Integer; IniFile: TIniFile; s, Result_s1: string; implementation {$R *.dfm} procedure THomBuhForm.AddUserExecute(Sender: TObject); begin Close; end; procedure THomBuhForm.bbAddObsheeClick(Sender: TObject); begin AttrFile := $0000003F; {Any file} ErrorReturn := FindFirst(extractfilepath(paramstr(0))+'Log/deistvija.log', AttrFile, InfoFile); if ErrorReturn <> 0 then Result := -1 {в случае, если файл не найден} else Result := InfoFile.Size; {Размер файла в байтах} FindClose(InfoFile); DateTimeToString(s, 'dd/mm/yyyy hh:nn:ss.zzz', Now()); Result_s1 := s; AssignFile(outfile, extractfilepath(paramstr(0))+'Log/deistvija.log'); if Result > 5242880 then Rewrite(outfile) else Append(outfile); //если размер файла больше заданного то то файл перезаписывается (5242880 = 5 мегобайт) Append(outfile); writeln(outfile, Result_s1, ' - ', 'Нажата кнопка добавить в категории "Общее" - Успешно'); CloseFile(outfile); DataModule1.Schet_ADOTable.Insert; Add_edit_schet_Form.ShowModal; end; procedure THomBuhForm.bbUpdateDohodiClick(Sender: TObject); begin DataModule1.Dohodii_ADOTable1.Refresh; //Обновление значений в таблице "Доходы" end; procedure THomBuhForm.bbUpdateObsheeClick(Sender: TObject); var h : string; begin DataModule1.Schet_ADOTable.Refresh; end; procedure THomBuhForm.bbUpdeteRasClick(Sender: TObject); begin DataModule1.Rashodi_ADOTable1.Refresh; end; procedure THomBuhForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If TDBGrid(Sender).DataSource.DataSet.RecNo/2=trunc(TDBGrid(Sender).DataSource.DataSet.RecNo/2) Then TDBGrid(Sender).Canvas.Brush.Color := $f7f7f7 Else TDBGrid(Sender).Canvas.Brush.Color := $e6e6e6; TDBGrid(Sender).Canvas.Font.Color := clblack; TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state) end; procedure THomBuhForm.Del_dohodiClick(Sender: TObject); Var result_dohodi_table,b,g,id_schet,r,r1 : integer; begin AttrFile := $0000003F; {Any file} ErrorReturn := FindFirst(extractfilepath(paramstr(0))+'Log/deistvija.log', AttrFile, InfoFile); if ErrorReturn <> 0 then Result := -1 {в случае, если файл не найден} else Result := InfoFile.Size; {Размер файла в байтах} FindClose(InfoFile); DateTimeToString(s, 'dd/mm/yyyy hh:nn:ss.zzz', Now()); Result_s1 := s; AssignFile(outfile, extractfilepath(paramstr(0))+'Log/deistvija.log'); if Result > 5242880 then Rewrite(outfile) else Append(outfile); //если размер файла больше заданного то то файл перезаписывается (5242880 = 5 мегобайт) Append(outfile); writeln(outfile, Result_s1, ' - ', 'Нажата кнопка Удалить в категории "Доходы" - Успешно'); CloseFile(outfile); If Application.MessageBox(PChar('Вы действительно хотите удалить-'+ ' '+DataModule1.Dohodii_ADOTable1Name.AsString), 'Внимание!!!', MB_OKCANCEL)=Id_OK then Begin result_dohodi_table := DataModule1.Dohodii_ADOTable1.FieldByName('Summ').AsInteger; id_schet := DataModule1.Dohodii_ADOTable1.FieldByName('Id_schet').AsInteger; DataModule1.Rashodi_podschet_ADOQuery.Active:= false; DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear; DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('select Dohodi, Balans '); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('FROM [Schet]'); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE Id =' + inttostr(id_schet)); DataModule1.Rashodi_podschet_ADOQuery.Active:= true; b := DataModule1.Rashodi_podschet_ADOQuery.Fields[0].AsInteger; g := DataModule1.Rashodi_podschet_ADOQuery.Fields[1].AsInteger; r := g - result_dohodi_table; r1 := b - result_dohodi_table; DataModule1.Rashodi_podschet_ADOQuery.Active:= false; DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear; DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Update Schet'); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('SET Balans =' + inttostr(r)); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add(', Dohodi =' + inttostr(r1)); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE Id ='+ inttostr(id_schet)); DataModule1.Rashodi_podschet_ADOQuery.ExecSQL; DataModule1.Dohodii_ADOTable1.Delete; DataModule1.Dohodii_ADOTable1.Refresh; DataModule1.Schet_ADOTable.Refresh; End; end; procedure THomBuhForm.Del_rashodiClick(Sender: TObject); Var result_rashodi_table,b,g,id_schet,r,r1 : integer; begin AttrFile := $0000003F; {Any file} ErrorReturn := FindFirst(extractfilepath(paramstr(0))+'Log/deistvija.log', AttrFile, InfoFile); if ErrorReturn <> 0 then Result := -1 {в случае, если файл не найден} else Result := InfoFile.Size; {Размер файла в байтах} FindClose(InfoFile); DateTimeToString(s, 'dd/mm/yyyy hh:nn:ss.zzz', Now()); Result_s1 := s; AssignFile(outfile, extractfilepath(paramstr(0))+'Log/deistvija.log'); if Result > 5242880 then Rewrite(outfile) else Append(outfile); //если размер файла больше заданного то то файл перезаписывается (5242880 = 5 мегобайт) Append(outfile); writeln(outfile, Result_s1, ' - ', 'Нажата кнопка Удалить в категории "Расходы" - Успешно'); CloseFile(outfile); If Application.MessageBox(PChar('Вы действительно хотите удалить-'+ ' '+DataModule1.Rashodi_ADOTable1Name.AsString), 'Внимание!!!', MB_OKCANCEL)=Id_OK then Begin result_rashodi_table := DataModule1.Rashodi_ADOTable1.FieldByName('Summ').AsInteger; id_schet := DataModule1.Rashodi_ADOTable1.FieldByName('Id_schet').AsInteger; DataModule1.Rashodi_podschet_ADOQuery.Active:= false; DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear; DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('select Rashodi, Balans '); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('FROM [Schet]'); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE Id =' + inttostr(id_schet)); DataModule1.Rashodi_podschet_ADOQuery.Active:= true; b := DataModule1.Rashodi_podschet_ADOQuery.Fields[0].AsInteger; g := DataModule1.Rashodi_podschet_ADOQuery.Fields[1].AsInteger; r := g - result_rashodi_table; r1 := b - result_rashodi_table; DataModule1.Rashodi_podschet_ADOQuery.Active:= false; DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear; DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Update Schet'); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('SET Balans =' + inttostr(r)); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add(', Rashodi =' + inttostr(r1)); DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE Id ='+ inttostr(id_schet)); DataModule1.Rashodi_podschet_ADOQuery.ExecSQL; DataModule1.Rashodi_ADOTable1.Delete; DataModule1.Rashodi_ADOTable1.Refresh; DataModule1.Schet_ADOTable.Refresh; End; end; procedure THomBuhForm.Dohodi_DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If TDBGrid(Sender).DataSource.DataSet.RecNo/2=trunc(TDBGrid(Sender).DataSource.DataSet.RecNo/2) Then TDBGrid(Sender).Canvas.Brush.Color := $f7f7f7 Else TDBGrid(Sender).Canvas.Brush.Color := $e6e6e6; TDBGrid(Sender).Canvas.Font.Color := clblack; TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state) end; procedure THomBuhForm.FormDestroy(Sender: TObject); var IniFile: Tinifile; begin IniFile:=TiniFile.Create(extractfilepath(paramstr(0))+'setup.ini'); IniFile.WriteInteger('HomBuhForm_Form','Width',HomBuhForm.width); IniFile.WriteInteger('HomBuhForm_Form','Height',HomBuhForm.height); IniFile.WriteInteger('HomBuhForm_Form','X',HomBuhForm.left); IniFile.WriteInteger('HomBuhForm_Form','Y',HomBuhForm.top); IniFile.Free; end; procedure THomBuhForm.Rashodi_DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If TDBGrid(Sender).DataSource.DataSet.RecNo/2=trunc(TDBGrid(Sender).DataSource.DataSet.RecNo/2) Then TDBGrid(Sender).Canvas.Brush.Color := $f7f7f7 Else TDBGrid(Sender).Canvas.Brush.Color := $e6e6e6; TDBGrid(Sender).Canvas.Font.Color := clblack; TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state) end; procedure THomBuhForm.SpisokExecute(Sender: TObject); begin Spisok_user_Form.ShowModal; end; end. |
#6
|
||||
|
||||
![]() А вы не пробовали перенести запись в IniFile из FormDestroy
в FormClose ? |
#7
|
|||
|
|||
![]() по началу у меня вообще небыло по сабытию дестроя ничего и вылетал синий экран.
|