![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чём может быть дело???
Ega23 © (2005-01-13 14:32:00)Есть такая процедура:
procedure BtnClearClick(Sender:TObject);
var
i:Integer;
begin
if (Sender is TForm) then
begin
With TForm(Sender) do
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TMemo) then
if UpperCase(TMemo(Components[i]).Name)=UpperCase('memSQLLogMonitor') then
begin
TMemo(Components[i]).Lines.Clear;
//Showmessage(aFileName);
TMemo(Components[i]).Lines.SaveToFile(aFileName);
Break;
end;
end;//With TForm(Sender) do
end;//if (Sender is TForm) then
end;//procedure BtnClearClick(
на TMemo(Components[i]).Lines.SaveToFile(aFileName); получаю
Access violation at address 77F8FFDE in module 'ntdll.dll'.
В чём может быть дело????
Александр Иванов (2005-01-13 14:56:00) [21]
> begin
> TMemo(Components[i]).Lines.Clear;
> //Showmessage(aFileName);
>
>TMemo(Components[i]).Lines.SaveToFile(aFileName);
> Break;
> end;
Странная последовательность
Anatoly Podgoretsky (2005-01-13 14:53:00) [22]Расскоментируй строчку и скажи имя в момент ошибки. Кроме того проверь, что файл именно в этот момент не занят.
Ega23 (2005-01-13 14:51:00) [23]2 Anatoly Podgoretsky © (13.01.05 14:43) [5]
Неизвестное значение глобальной переменной aFileName, зря закоментировал Showmessage(aFileName);
По-идее aFileName должна быть видна... Или я ошибаюсь?
Ega23 (2005-01-13 14:50:00) [24]Вот полный код процедуры:
function ShowTexLogFile(const aFileName:String):Boolean;
procedure BtnClearClick(Sender:TObject);
var
i:Integer;
begin
if (Sender is TForm) then
begin
With TForm(Sender) do
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TMemo) then
if UpperCase(TMemo(Components[i]).Name)=UpperCase('memSQLLogMonitor') then
begin
TMemo(Components[i]).Lines.Clear;
//Showmessage(aFileName);
TMemo(Components[i]).Lines.SaveToFile(aFileName);
Break;
end;
end;//With TForm(Sender) do
end;//if (Sender is TForm) then
end;//procedure BtnClearClick(
var
aForm:TForm;
aPanel:TPanel;
OnClearClick:TMethod;
List:TStringList;
i:Integer;
begin
Result:=False;
//if not FileExists(aFileName) then Exit;
try
Application.CreateForm(TForm, aForm);
try
With aForm do
begin
Caption:=aFileName;
BorderStyle:=bsSingle;
Height:=500;
Width:=750;
Position:=poScreenCenter;
end;
With TMemo.Create(aForm) do
begin
Parent:=aForm;
Name:='memSQLLogMonitor';
Align:=alClient;
ScrollBars:=ssBoth;
//Height:=440;
Clear;
List:=TStringList.Create;
if FileExists(aFileName) then
begin
List.LoadFromFile(aFileName);
for i:=List.Count-1 downto 0 do Lines.Add(List.Strings[i]);
end;
List.Free;
end;
aPanel:=TPanel.Create(aForm);
With aPanel do
begin
Parent:=aForm;
Height:=45;
Align:=alBottom;
end;
With TButton.Create(aPanel) do
begin
Parent:=aPanel;
Cancel:=True;
Height:=25;
Width:=100;
Font.Size:=10;
Top:=10; //aPanel.ClientHeight-10;
Left:=aPanel.Width-110;
Anchors:=[akTop, akRight];
Caption:='Çàêðûòü';
ModalResult:=mrOK;
end;
With TButton.Create(aPanel) do
begin
Parent:=aPanel;
Height:=25;
Width:=100;
Font.Size:=10;
Top:=10; //aPanel.ClientHeight-30;
Left:=aPanel.Width-220;
Anchors:=[akTop, akRight];
Caption:='Î÷èñòèòü';
OnClearClick.Code:=@BtnClearClick;
OnClearClick.Data:=aForm;
OnClick:=TNotifyEvent(OnClearClick);
end;
aForm.ShowModal;
finally
aForm.Free;
end;
except on E:Exception do
raise Exception.Create('ShowTexLogFile '+E.Message);
end;
end;
Семен Сорокин (2005-01-13 14:46:00) [25]на TMemo(Components[i]).Lines.Clear;
может у него (TMemo) на событие OnChange стоит что-то что меняет index в Components (например создание/удаление компонента), попробуй так:
procedure BtnClearClick(Sender:TObject);
var
i:Integer;
_memo: TMemo;
begin
if (Sender is TForm) then
begin
With TForm(Sender) do
begin
for i:=0 to ComponentCount-1 do
if (Components[i] is TMemo) then
if UpperCase(TMemo(Components[i]).Name)=UpperCase('memSQLLogMonitor') then
begin
_memo := TMemo(Components[i]); _memo.Lines.Clear;
//Showmessage(aFileName);
_memo.Lines.SaveToFile(aFileName);
Break;
end;
end;//With TForm(Sender) do
end;//if (Sender is TForm) then
end;//procedure BtnClearClick(
Ega23 (2005-01-13 14:46:00) [26]Ты уверен, что доступ к твоему файлу с именем aFileName разрешен? Какой имя, кстати?
Имя вполне нормальное, файл существует, параллельно могу открыть notepad'ом, всё стереть, сохранить и закрыть.
Exception летит даже если "отковычить" ShowMessage(aFileName), т.е. сразу после TMemo(Components[i]).Lines.Clear; При этом, на экране мемо действительно очищается. Но всё, что дальше - аллес.
Anatoly Podgoretsky (2005-01-13 14:43:00) [27]Неизвестное значение глобальной переменной aFileName, зря закоментировал Showmessage(aFileName);
Neznaika (2005-01-13 14:43:00) [28]>> TMemo(Components[i]).Lines.SaveToFile(aFileName);
aFileName - это что, стесняюсь спросить.
Анонимщик (2005-01-13 14:41:00) [29]Ты уверен, что доступ к твоему файлу с именем aFileName разрешен? Какой имя, кстати?
Ega23 (2005-01-13 14:37:00) [30]2 арапор (13.01.05 14:34) [1]
может
for i:=1 to ComponentCount
"Это врад-ли..." (с) Товарищ Сухов.
арапор (2005-01-13 14:34:00) [31]может
for i:=1 to ComponentCount