Hej tak for svaret !
Jeg har prøvet med det du foreslog, men det virker ikke helt efter planen.
Det der er problemet er at jeg ikke får lukket adgangen til databasen ned,
også kan jeg ikke flytte den med FTP komponenten.
Men det er noget med filen og try blokken, for når jeg angiver FTP
egenskaber uden at tag det fra en fil, virker det fint
, men så er
programmet ikke så dynamisk !
Hilsen AHJ
"R. A. Larsen" <r_larsen@image.dk> skrev i en meddelelse
news:VA.00000120.010378df@r_larsen...
> "Henrik Ankersen" <henrik.ankersen@get2net.dk> wrote:
> >
> > Hej
> >
> > Jeg har lidt problemer med at åbne og lukke forbindelsen til et
TDatabase
> > komponent, der er koblet på en Access DB.
> >
> > procedure TFwebadm.Button8Click(Sender: TObject);
> > var
> > indstillinger: Tindstillinger;
> > begin
> > HISDB.connected := false; //Her skulle den lukke forbindelse.
> > AssignFile(indfil, filnavn);
> > try
> > reset(indfil);
> [*****kode klippet væk*****]
> > finally
> > CloseFile(indfil);
> > end;
> > HISDB.connected := true; //Her skulle den åbne forbindelse.
> > end;
> >
> > Jeg har også prøvet med HISDB.open og HISDB.close, men det virker heler
ikke
> >
>
> Dit problem er følgende:
> Hvad sker der, hvis der opstår en exception inde i try/finally-blokken?
Jeg er
> ikke 100% sikker, men SVJV er du *ikke* garanteret, at kode _efter_ en
> finally/end udføres, hvis der forekommer en exception.
>
> > Hvad gør jeg ????
>
> Du sætter en try/finally inden i en try/finally!
>
> Her er dit eksempel lettere omskrevet og forkortet:
>
> procedure TFwebadm.Button8Click(Sender: TObject);
> var
> indstillinger: Tindstillinger;
> begin
> HISDB.connected := false; //Her skulle den lukke forbindelse.
> try
> AssignFile(indfil, filnavn);
> Reset(indfil);
> try
> Read(indfil, indstillinger);
> // Her kommer resten...
>
> finally
> CloseFile(indfil);
> end;
>
> finally
> HISDB.connected := true; //Her skulle den åbne forbindelse.
> end;
> end;
>
>
> Bemærk at det kun er hvis filen bliver åbnet ("Reset()" lykkes), at den
skal
> lukkes igen ("CloseFile()"). Hvis "Reset()" fejler, er der ikke nogen fil
at
> lukke.
>
> Det du skal tænke på, når du bruger try/finally, er, at det er kommandoen
lige
> _før_ "try", der hører til blokken mellem "finally" og "end".
>
> Når du derimod bruger try/except, er det kommandoerne _mellem_ "try" og
> "except", der hører til blokken mellem "except" og "end".
>
> Eksempler:
>
> OldBool := Bool
> try
> Bool := False;
> // Her kommer resten...
> finally
> // Bool får nu den gamle værdi igen...
> Bool := OldBool;
> end;
>
> try
> tal := StrToFloat(s);
> except
> // Behandling af fejl:...
> ShowMessage('"StrToFloat()" fejlede');
> end;
>
> Håber det hjalp.
>
> MVH, René
> --
> Using Virtual Access
>
http://www.vamail.com
>