Получаю Access Violation на некоторых рабочих станциях при запуске программы, форма выводится, но совершенно пустая без контролов.
Код мизерный, закомментил вызовы других модулей.
Рабочие станции вроде одинаковые. Может кто сталкивался с таким?
КОД:
unit uMain;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,System.Threading{,CustomExcelFunctions},
ActiveX,System.SyncObjs,uRangeAdd,System.IOUtils, FMX.Edit;
type
TfMain = class(TForm)
od_openfiles: TOpenDialog;
m_files: TMemo;
btn_openfiles: TButton;
m_cells: TMemo;
btn_exec: TButton;
btn_addcells: TButton;
gb_files: TGroupBox;
gb_cells: TGroupBox;
pb_files: TProgressBar;
Button1: TButton;
Edit1: TEdit;
procedure btn_openfilesClick(Sender: TObject);
procedure btn_execClick(Sender: TObject);
procedure btn_addcellsClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fMain: TfMain;
implementation
{$R *.fmx}
procedure ClearBlanksFromList(AList:Tstrings);
var
i:integer;
begin
for I := AList.Count-1 downto 0 do
if AList.Strings[i] = '' then
AList.Delete(i);
end;
procedure TfMain.btn_openfilesClick(Sender: TObject);
begin
if od_openfiles.Execute then
begin
m_files.Lines.Text:=od_openfiles.Files.Text;
ClearBlanksFromList(m_files.Lines);
pb_files.Max:=m_files.Lines.Count;
end;
end;
procedure TfMain.Button1Click(Sender: TObject);
begin
if od_openfiles.Execute then
begin
edit1.Text:= od_openfiles.Files.Strings[0];
end;
end;
procedure TfMain.FormShow(Sender: TObject);
begin
{if TFile.Exists('Cells.txt') then
m_cells.Lines.LoadFromFile('Cells.txt'); }
end;
procedure TfMain.btn_execClick(Sender: TObject);
var
A: array[0..10000] of integer;
j:integer;
ex:variant;
max:integer;
s:string;
begin
if Edit1.Text='' then
raise Exception.Create('Не выбран файл для результата');
if m_files.Lines.Count = 0 then
raise Exception.Create('Не выбранs файлы для обработки');
Cursor:=crHourGlass;
for j := 0 to m_cells.Lines.Count-1 do
A[j]:=0;
max:=m_files.Lines.Count-1;
pb_files.Value:=0;
TParallel.For(0,max, procedure (I:integer)
var
ex:variant;
j:integer;
begin
CoInitialize(nil);
try
if m_files.lines.strings[i]<>'' then
begin
exit;
//ex:=OpenExcelBook(False,m_files.lines.strings[i]);
for j := 0 to m_cells.Lines.Count-1 do
if m_cells.Lines.Strings[j]<>'' then
begin
s:=ex.range[m_cells.Lines.Strings[j]];
if (s<>'') and (s<>'0') then
A[j]:=A[j]+1;
end;
ex.DisplayAlerts := False;
ex.Quit;
pb_files.Value:=pb_files.Value+1;
end;
finally
CoUninitialize;
end;
end);
while pb_files.Value<>pb_files.Max do
sleep(1000);
exit;
//ex:=OpenExcelBook(True,edit1.Text);//CreateNewExcelBook(True);
for j := 0 to m_cells.Lines.Count-1 do
if m_cells.Lines.Strings[j]<>'' then
begin
ex.range[m_cells.Lines.Strings[j]]:=A[j];
end;
Cursor:= crAppStart;
end;
procedure TfMain.btn_addcellsClick(Sender: TObject);
begin
if fRangeAdd.ShowModal = mrOk then
begin
m_cells.Lines.Text:= m_cells.Lines.Text + fRangeadd.e_Range.Text;
fRangeadd.e_Range.Text:='';
ClearBlanksFromList(m_cells.Lines);
end;
end;
end.
Вопрос
DarkFlash
Получаю Access Violation на некоторых рабочих станциях при запуске программы, форма выводится, но совершенно пустая без контролов.
Код мизерный, закомментил вызовы других модулей.
Рабочие станции вроде одинаковые. Может кто сталкивался с таким?
КОД:
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.