После 10-15 минут работы с приложением, использующем TTimer и TImage в роли фона форм (хотя, это, наверное, не при чём), загрузка процессора идёт на 98-100%, и сохраняется до перезагрузки компьютера.
Приложение написано мной, использует файловую систему по сети (сервер - на \\server, клиенты - у всех менеджеров, используется один файл базы "dblist.dat" для чтения и записи.
Если запускать приложение не из среды разработки (не из Delphi), то ничего не тормозит...
В чём может быть проблема?
Загрузка процессора при работе с приложением
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Ты б чего показал...
[syntax=Delphi] [/syntax]
Ты мне скажи, что ты хотел бы увидеть...
Я дважды верил в истину одну:
Лучше быть дважды мёртвым, чем истлеть в плену...
Лучше быть дважды мёртвым, чем истлеть в плену...
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
может отладчик тупит? если без ИДЕ работает нормально - забить 


Игорь Акопян, думаю на DCOM и прочую чушь (оно видно с XP несовместимо)...
Вот ещё новая проблема:
if (cmbDataVer.ItemIndex=1) then begin
if (odExcel.Execute) then begin
F := odExcel.Filename;
if (not (FileExists(F))) then goto n;
AssignFile(Text, F);
try
Reset(Text);
except
Showmessage('Âûáðàííûé ôàéë çàíÿò äðóãîé ïðîãðàììîé!');
Exit;
end;
AssignFile(Datafile, FN_DATABASE+'.imp');
Rewrite(Datafile);
while not eof(Text) do begin
// reading data...
ReadLn(Text, Tmp);
Tmp := Trim(Tmp);
// showmessage(tmp);
Excel.Name :=
StringReplace(
StringReplace(Explode(Tmp, ';', 1), '~', ';', [rfReplaceAll]),
'"', '', [rfReplaceAll]);
// if (Name='') then Continue;
Excel.Category := StringReplace(Explode(Tmp, ';', 2), '~', ';', [rfReplaceAll]);
Excel.RukovodName := StringReplace(Explode(Tmp, ';', 3), '~', ';', [rfReplaceAll]);
Excel.Region:= StringReplace(Explode(Tmp, ';', 4), '~', ';', [rfReplaceAll]);
Excel.AdressCity := StringReplace(Explode(Tmp, ';', 5), '~', ';', [rfReplaceAll]);
Excel.AdressStreet := StringReplace(Explode(Tmp, ';', 6), '~', ';', [rfReplaceAll]);
Excel.AdressIndex := StringReplace(Explode(Tmp, ';', 7), '~', ';', [rfReplaceAll]);
Ph :=StringReplace(Explode(Tmp, ';', 8), '~', ';', [rfReplaceAll]);//òåë-íû
Oh := Ph;
for J := 1 to AnsiPos(')', Ph) do Ph[J] := #32;
Ph := Trim(Ph);
Ph := 'Testdata';//SelectPrimaryPhone(CharCount(Ph, ','), Ph, Excel.Name);
Excel.OfficePhoneN := Ph;
Excel.ExtPhones := Oh;
if (StringReplace(Explode(Tmp, ';', 9), '~', ';', [rfReplaceAll])='Äà') then
Excel.Prozvon := psPM else Excel.Prozvon := psNeprozvoneno;
Excel.Vozrast := tsNew;
Excel.Email := StringReplace(Explode(Tmp, ';', 9), '~', ';', [rfReplaceAll]);
Excel.WWW := StringReplace(Explode(Tmp, ';', 10), '~', ';', [rfReplaceAll]);
Write(Datafile, Excel);
Imp := Imp + 1;
// showmessage(inttostr(filesize(text)));
end;
CloseFile(Text);
CloseFile(Datafile);
CloseFile(Database);
Reset(Database);
Reset(Datafile);
Seek(Database, FileSize(Database));
Read(Datafile, Excel);
Write(Database, Excel);
CloseFile(Datafile);
CloseFile(Database);
DeleteFile(PAnsiChar(FN_DATABASE+'.imp'));
Не переходит на область CloseFile(Text);
почему не пойму.
Вот ещё новая проблема:
if (cmbDataVer.ItemIndex=1) then begin
if (odExcel.Execute) then begin
F := odExcel.Filename;
if (not (FileExists(F))) then goto n;
AssignFile(Text, F);
try
Reset(Text);
except
Showmessage('Âûáðàííûé ôàéë çàíÿò äðóãîé ïðîãðàììîé!');
Exit;
end;
AssignFile(Datafile, FN_DATABASE+'.imp');
Rewrite(Datafile);
while not eof(Text) do begin
// reading data...
ReadLn(Text, Tmp);
Tmp := Trim(Tmp);
// showmessage(tmp);
Excel.Name :=
StringReplace(
StringReplace(Explode(Tmp, ';', 1), '~', ';', [rfReplaceAll]),
'"', '', [rfReplaceAll]);
// if (Name='') then Continue;
Excel.Category := StringReplace(Explode(Tmp, ';', 2), '~', ';', [rfReplaceAll]);
Excel.RukovodName := StringReplace(Explode(Tmp, ';', 3), '~', ';', [rfReplaceAll]);
Excel.Region:= StringReplace(Explode(Tmp, ';', 4), '~', ';', [rfReplaceAll]);
Excel.AdressCity := StringReplace(Explode(Tmp, ';', 5), '~', ';', [rfReplaceAll]);
Excel.AdressStreet := StringReplace(Explode(Tmp, ';', 6), '~', ';', [rfReplaceAll]);
Excel.AdressIndex := StringReplace(Explode(Tmp, ';', 7), '~', ';', [rfReplaceAll]);
Ph :=StringReplace(Explode(Tmp, ';', 8), '~', ';', [rfReplaceAll]);//òåë-íû
Oh := Ph;
for J := 1 to AnsiPos(')', Ph) do Ph[J] := #32;
Ph := Trim(Ph);
Ph := 'Testdata';//SelectPrimaryPhone(CharCount(Ph, ','), Ph, Excel.Name);
Excel.OfficePhoneN := Ph;
Excel.ExtPhones := Oh;
if (StringReplace(Explode(Tmp, ';', 9), '~', ';', [rfReplaceAll])='Äà') then
Excel.Prozvon := psPM else Excel.Prozvon := psNeprozvoneno;
Excel.Vozrast := tsNew;
Excel.Email := StringReplace(Explode(Tmp, ';', 9), '~', ';', [rfReplaceAll]);
Excel.WWW := StringReplace(Explode(Tmp, ';', 10), '~', ';', [rfReplaceAll]);
Write(Datafile, Excel);
Imp := Imp + 1;
// showmessage(inttostr(filesize(text)));
end;
CloseFile(Text);
CloseFile(Datafile);
CloseFile(Database);
Reset(Database);
Reset(Datafile);
Seek(Database, FileSize(Database));
Read(Datafile, Excel);
Write(Database, Excel);
CloseFile(Datafile);
CloseFile(Database);
DeleteFile(PAnsiChar(FN_DATABASE+'.imp'));
Не переходит на область CloseFile(Text);
почему не пойму.
Я дважды верил в истину одну:
Лучше быть дважды мёртвым, чем истлеть в плену...
Лучше быть дважды мёртвым, чем истлеть в плену...
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
чрезвычайно сложно и ломотно разбираться в коде, который так приведён, отредактируй пожалйста свой сообщение с использованием тэга CODE при вставке кода
