Avatar billede designer Nybegynder
16. december 2000 - 10:28 Der er 5 kommentarer og
1 løsning

Free resource

Jeg er ved at lave et mindre Delphi program, men har lidt problemer med at få frigivet alle resourcer.
Jeg har 3 forms, hvor jeg laver lidt data access.
Og har så til min Afslut menu, kodet;
    ADOQueryPass.Close;
    ADOtblPostnumre.Close;
    ADOtblFirma.Close;
    ADOQryAntalOrdre.Close;
    Form2.ADOTable1.Close;
    Form2.ADOStoredProc1.Close;
    Form2.ADOOverfoerCommand.Destroy;
    Form2.ADOTable2.Close;
    Connection.Close;
   
    Form2.Free;
    Form3.Free;
    Form1.Free;

Men alligevel får jeg:
Access is denied. The source file may be in use.
når jeg forsøger at slette filer, kan heller ikke kompile eller noget! Burde Free ikke nulstile alt???
Avatar billede pstric Nybegynder
16. december 2000 - 14:31 #1
Hej designer,

kan du ikke prøve at være lidt mere specifik? Får du din \'Access is denied\' ude fra Explorer? Og er projektet stadig åbent i Delphi? Jeg har lidt svært ved at se, om det er dine .pas-filer du ikke må slette. Du bliver nok nødt til at komme med lidt flere oplysninger.
Avatar billede designer Nybegynder
16. december 2000 - 14:36 #2
Det er min exe (når jeg forsøger at slette den fr afilsystemet!), efter den er blevet kompilet. Jeg får også fejl fra delphi, når jeg forsøger at kompile.
Det er helt sikkert fordi jeg ikke får frigivet alle resourcer. Men burde Free ikke gøre jobbet?!
(NB! Der er intet instance af programmet i Task manager, efter den er lukket)
Avatar billede pstric Nybegynder
16. december 2000 - 14:45 #3
Du kan godt slette din .exe hvis du lukker Delphi, ikk\'? Så er det Delphi der stadigvæk låser den. Og så er der da i hvert fald et eller andet der er gået galt. Har du prøvet at lukke programmet med CTRL+F2, så kan det være der problemet ligger.

Hvis du heller ikke kan slette .exe\'n når Delphi er lukket, så er det sandsynlig ADO der låser filen. Jeg er ikke sikker på, hvordan du får ADO til at slippe filen, men en genstart skulle helt sikkert kunne klare det. Men det er selvfølgelig ikke nogen holdbar løsning.
Avatar billede designer Nybegynder
16. december 2000 - 14:51 #4
Uden at have kørt Delphi, laver den også det nummer, så noget tyder på at det er ADO der låser!

Men jeg troede bare at Free burde gøre det. Vil det så sige at der ikke eksistere en metode der frigør alle resourcer i Delphi?!
Avatar billede pstric Nybegynder
16. december 2000 - 15:12 #5
Ja og nej,

program Designer;
{$APPTYPE CONSOLE}
uses SysUtils;
var F: TextFile;
begin
  AssignFile(F, \'desig.ner\');
  Rewrite(F);
  Writeln(F, \'Dette er en fil med et sært navn\');
  CloseFile(F);
end;

i dette program bliver alle ressourcer frigivet ved kaldet til CloseFile, men filen eksisterer stadigvæk.
Avatar billede designer Nybegynder
16. december 2000 - 15:15 #6
Hmn, nå men et mindre eksperiment ( er nemlig relativ ny i Delphi), og gennemgang af metoder, fandt jeg frem til at et explicit kald til Application.Termintae var min løsning!

tak for hjælpen pstric, jeg gav dig 20 points or hjælpen! Lidt for ulejligheden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester