|
| Program afslutter ikke helt... Fra : Michael Vilhelmsen |
Dato : 02-05-06 12:18 |
|
Hej
Jeg har lavet et program i Delphi 5 Ent.
Dette program benytter InterbaseExpress Comp. op imod en Firebird DB.
Når programmet afvikles på en lokal maskine får jeg i nogle tilfælde det problem, at når man vælger at afslutte programmet, forsvinder det fra kørende programmer, men der findes stadigvæk en process
med dette navn.
Og eftersom vores program kun tillades at køre én gang på en maskine, kan brugerne ikke mere starte programmet førend de har genstartet maskinen eller slået prosessen ihjel.
Problemet opstår kun på meget få maskiner.
Jeg har nu brugt nogle dage, på at fejlfinde programmet, men har simpelthen ikke kunne finde nogen fejl (dermed ikke være sagt, at der ikke er nogen fejl).
Jeg har 2 maskiner her.
Den ene er min egen. En ældre sag med en AMD 1,8 Ghz CUP med 1 Gb RAM.
Den anden er en ny fujitsu-Siemens PC med en AMD 64 Bits CPU og 512 Mb RAM.
Begge maskiner har pt. samme Windows (Alle opdateringer), samme version af mit program og samme version af Firebird.
På den der 64 bits maskiner kan jeg starte programmet, gå ind i ét bestemt punkt, gå ud igen med det samme og så er fejlen der.
På min maskine kan jeg ikke gøre dette. Overhovedet.
Mit spørgsmål er så:
Ved I om Delphi 5 og de nye 64 bits CPU'er skulle have et problem ?
Eller har I andre idéer ?
Michael
--
Best Regards / Venlig hilsen
Michael Vilhelmsen
==========
Best Regards / Venlig hilsen
Michael Vilhelmsen
| |
synonym@sol.dk (04-05-2006)
| Kommentar Fra : synonym@sol.dk |
Dato : 04-05-06 09:34 |
|
Michael Vilhelmsen wrote:
> Eller har I andre idéer ?
----------- 8< ----------------
Jeg har desværre ikke nogen reelt svar til dit spørgsmål, men da jeg
selv har haft lidt problemer med Hyper-Threading ifb. med lukning af
com-porte, starter jeg ofte en timer ved FormClose der ved udløb
sender "halt". Det plejer at kvæle programmet (med mindre der er
et api-kald der endnu ikke er returneret)
var
KillTimer: TTimer;
KillTimer := TTimer.Create(Self);
with KillTimer do
begin
Name := 'KillTimer';
Enabled := False;
Interval := 4000;
OnTimer := KillTimerTimer;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action:
TCloseAction)
begin
KillTimer.Enabled := True;
end;
procedure TMainForm.KillTimerTimer(Sender: TObject);
begin
Halt;
end;
| |
|
|